• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: 小 中 大 | 推荐给好友 上一篇 | 下一篇

利用JDBC RowSet讓EJB返回數据集(手記)

发布: 2007-7-01 18:47 | 作者: admin | 来源: | 查看: 22次 | 进入软件测试论坛讨论

领测软件测试网 利用JDBC RowSet讓EJB返回數据集(手記)

**************************************************************************
前言:

   前几日在Weblogic6.1上試驗使用數据集OK(EJB和客戶端都在Weblogic上),后來將
客戶端部署到另外一臺服務器上(運行Resin),想由Resin上的JSP客戶端調用來獲得
Weblogic上的EJB返回的數据集,發現行不通.
   經過日夜搜索,終于發現一偏關于JDBC RowSet的文章(JDBC 2.0 Optional Package API),
正是我想要的.
   馬上行動!

**************************************************************************

注意:安以下步驟部署你必須熟悉Weblogic6.1的EJB部署,數据源部署.

1.到http://developer.java.sun.com/developer/earlyAccess/下載rowset.jar

//JDBC RowSet The three JDBC RowSet implementations in this release demonstrate some of the many possibilities for implementing the javax.sql.RowSet interface, which is part of the JDBC 2.0 Optional Package API. (June 30, 2000)


2.將rowset.jar放到你的CLASSPATH中.(我使用的是Weblogic6.1)

3.寫你的EJB,如下列:
************************************************************************
CoffeesEJB.java
************************************************************************
import java.sql.*;
import javax.sql.*;
import sun.jdbc.rowset.*;  //倒入rowset.jar類
import javax.naming.*;
import javax.ejb.*;

public class CoffeesEJB implements SessionBean {

    private SessionContext sc = null;
    private Context ctx = null;
    private DataSource ds = null;
    
    public CoffeesEJB () {}
    
    public void ejbCreate() throws CreateException {

        try {
            ctx = new InitialContext();
            ds = (DataSource)ctx.lookup("bbb.OracleThintxds"); //數据源
        }
        catch (Exception e) {
            System.out.println(e.getMessage());
            throw new CreateException();
        }
    }

    public RowSet getCoffees() throws SQLException {
        
        Connection con = null;
    ResultSet rs;
        CachedRowSet crs;

        try {
            con = ds.getConnection("system", "command1");   //EJB Server的用戶和密碼,我用的是Weblogic6.1
            Statement stmt = con.createStatement();
            rs =  stmt.executeQuery("select * from coffees");
            
            crs = new CachedRowSet();
            crs.populate(rs);
            // the writer needs this because JDBC drivers
            // don@#t provide this meta-data.
            crs.setTableName("coffees");
            
            rs.close();
            stmt.close();
        } finally {
            if (con != null)
                con.close();
        }
        return crs;
    }


       
    //
    // Methods inherited from SessionBean
    //
    
    public void setSessionContext(SessionContext sc) {
        this.sc = sc;
    }
    
    public void ejbRemove() {}
    public void ejbPassivate() {}
    public void ejbActivate() {}

    
}
************************************************************************

4.發布CoffeesEJB到你的EJB Server上.
  ok!EJB在EJB Server上的部署完成!下面是客戶端的部署.

5.同樣將rowset.jar放到你的客戶端服務器的CLASSPATH中.(我使用的是Resin2.0)

6.寫你的客戶端jsp代碼,如下列:
************************************************************************
CoffeesClient.jsp
************************************************************************
<%@ page import="java.sql.*"%>
<%@ page import="java.util.*"%>
<%@ page import="javax.naming.*"%>
<%@ page import="sun.jdbc.rowset.*"%>
<%@ page import="javax.servlet.*"%>
<%@ page import="javax.servlet.http.*"%>
<%@ page import="weblogic.jndi.T3InitialContextFactory" %>
<%       // 來自weblogic.jar  %>
<%@ page import="java.io.*"%>
<%@ page import="javax.rmi.*"%>

<%@ page import="Coffees"%>
<%@ page import="CoffeesHome"%>
<%@ page contentType="text/html;charset=big5" %>


<%
Properties p = new Properties() ;
p.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.T3InitialContextFactory");
p.put(Context.PROVIDER_URL,"t3://192.1.1.23:7001");    //Weblogic服務器的地址和端口

String info="";
try{
Context initial = new InitialContext(p);

Object objref = initial.lookup("statelessSession.Coffees");

CoffeesHome home =(CoffeesHome)PortableRemoteObject.narrow(objref,CoffeesHome.class);
Coffees currencymyString = home.create();

CachedRowSet rset = (CachedRowSet)currencymyString.getCoffees();


String coffeeName="";
while (rset.next()) {

       coffeeName = rset.getString("COF_NAME");
       out.println(coffeeName + "<BR><HR size=1>" );
}

out.println("<br>********************<br>");

currencymyString.remove();

}catch(javax.naming.NamingException ne){
       info = "錯誤:EJB服務器找不到!無法使用遠程方法.<br>" + ne.toString();
}catch(java.rmi.RemoteException re){
       info = re.toString();
}catch(javax.ejb.CreateException ce){
       info = ce.toString();
}catch(javax.ejb.RemoveException re){
       info = re.toString();
}
     

out.println("<hr>"+info+"<hr>");
out.println("<hr>Test By [email protected]<hr>");
%>

************************************************************************

7.運行客戶CoffeesClient.jsp

  如果報錯肯定是你的CLASSPATH問題,仔細看看一定成功!
  
  
  
全文完

=======================================================
火火火 于2002/3/8虎門 [email protected]
=======================================================  
  

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:[email protected] 电话:010-51297073

软件测试 | 领测国际 | ISTQB | ISTQB官网 | TMMi | TMMi认证 | 国际软件测试工程师认证 | 领测软件测试网