参考一下:
//jbuilder7 + welogic6.1+ Oracle8i一个无状态的Session bean
连接weblogic 数据库连接池
取 Oracle一个表的一个字段值
返回给客户端 (servlet)就这些,now整理成笔记。1. 确认安装好Oralce 和 Webligc 6.1 .Jbuilder7
   都是默认安装
2. 开始配置Jbuilder7 和Weblogic 的连接
   我参考了一篇Jbuilder6的配置 ,大同小异
   进入JB7
   a.打开Tools-->Configue Servers--> 选择weblogic6.x+ 
                Enable Server 打勾
      选择正确的Weblgic 安装路径
    注意 显示器分辨率为1024*768 才能看到下面的OK 按钮
    在General页 的Home Dircetory 和 Work Directory一样 如:
    D:/bea/wlserver6.1
    在Custome页中填入weblogic 启动密码
    其他默认
  b.打开Tools--> Enterprise Setup -->CORBA 
               new 一个 起名为Weblogic的项目
               在Path for ORB tools下加入Weblogic 的目录
               在Library for project 下加入 weblogic 6.x delopy 库
               在compiler command 填上 idcj.exe 
               在Command ... for oupput Dircetory 填上一个你自己的输出路径
  c 最后确认 Projects--> Default Projects Properties-->Server
              选的Application Server 是Weblogic 6.x file://应该已经是了,再看看
  d 最后到我的电脑点右键去修改系统变量
              Temp 和Tmp
              因为默认得目录名有空格,JB7过敏这个,改为一个没空格的目录 
              如C:\temp 当然你得先建立这个目录
              
 3.下来在Weblogic中建立Oracle的连接池
  . 在Weblogic 控制台
       Services -->JDBC -->Connection Pools--> Configure a new JDBC Connection Pool
       在General属性页  
            Name :连接池名 file://我取名为testPool ,注意名字区分大小写
            URL: JDBC 连接字符串 file://Oracle的 为: jdbc:oracle:thin:@xiw:1521:sdb
                                        xiw为服务器名 也可为IP地址
                                        sdb为数据库名
            Driver Classname: 填入 oracle.jdbc.driver.OracleDriver
            Properties(key=value): 填入 user=system  file://即Oracle的用户名,也可以在这里填入密码
            Password 先不填
            点击Apply // Weblogic 如果有图标闪动,表示需要重启动Webligoc设置才能生效 后面不在说明
            然后点击Password 输入数据库密码  
       在Connection 页 
             Initial Capacity : 1 file://初始连接数
             Maximum Capacity :10 file://最大连接数
             Capacity Increment :1 // 初始不够时,每次增加连接数
             Refresh Period: 5 file://防止网络意外中断时,每5分钟刷新一次连接,断了就自动恢复
             其他默认
       在testing 页
              Test Table Name:tab // Oracle 已经有了这个表 ,用其他Oracle系统表也行
              下面两项选中 打勾 表示启用意外端开时,自动刷新恢复连接
       图标闪动,表示需要重启动Webligoc 
       重启后:
          在: Serviers -->JDBC -->Connection Pools-->testPool页 
                target页 将myserver移到chosen 中 点Apply file://表示那个服务器启用这个池
                如果有错误,一般就是前面的URL错 或没有testing指定的那个表,我在这绊了很久 
          可能需要重启
          然后到Services-->JDBC-->Data Source 
               Configure a new JDBC Data Source
               Name:自己起吧
                   JNDI Name: 起名为MyJNDI file://这个后面编程要用,区分大小写
                   Pool Name:testPool file://前面建的那个池的名字
                   然后点击Apply
             在target页,和前面一样,将myserver移到chosen Apply
             此时若有错误,一般为连接池名大小写问题   
        重启动Weblogic 完成

解决方案 »

  1.   

    4 开始编程
      ·在JB7中新建一个空项目
      ·在New 的Enterprise 页Ejb2.0 bean designer
      ·在可视化设计窗口,右键,New Session bean ,起名字为testsqlBean  type为stateless 
      ·启动Oralce 
      ·添加一个表table3 字段名 A1 再加一条数据 'OKOK' file://最后在Servlet中返回OKOK就算成功
      ·在该项目中New一个Class ,作为返回结果用,该类进行了序列化
       该类取名为TestString  代码如下,较为粗糙,没有优化,其实可以直接返回值的,凑合看吧。
    package testpool;
    import javax.ejb.*;
    import java.sql.*;
    import javax.sql.*;
    public class TestString implements java.io.Serializable{
            private String returnS;
            public TestString(String ss){
                    returnS=ss;
            }        public String returnStr(){
              return returnS;
            }
            public String getA1(DataSource  ds, String sql)
            {String temp="nono"; file://默认为no  Servlet要是返回这个就是失败了
            try{
             Connection  conn=ds.getConnection();
             Statement stmt=conn.createStatement();
             stmt.executeQuery(sql);
             ResultSet rs=stmt.getResultSet();
             int i=rs.getRow(); file://没显示改值,调试时看了看
             if(rs.next())
               {temp=rs.getString(1); 
               }
             rs.close();
             conn.close();
           }
            catch(Exception e)
            {
              e.printStackTrace();
            }
            return temp;
            }
    }
      ·以下修改testsqlbean.java
      需要添加一些类
      import java.sql.*;
      import javax.sql.*;
      其他Home接口或Remote接口用到诸如ResultSet ,DataSource 得自己加入就行,不再复述
      添加几个属性
      String returnString;
      DataSource  ds;
      
      ·同时需要修改testsqlbean的ejbCreate代码为:
      public void ejbCreate() throws CreateException {
        try{
        Context  ctx=new  InitialContext();
        ds=(DataSource)ctx.lookup("MyJNDI"); // MyJNDI为前面配置的Weblogic的JDBC的JNDI名
        }
        catch(Exception e)
       { }
       }
      ·然后。在可视化设计窗口 testsqlBean上右键 add method 取名为getMyConn 返回类型为前面自建的TestString
       参数为String sql
       最后修改该函数代码如下:
       public TestString getMyConn(String sql) {
       TestString t1=new TestString(sql);
       String returnString=t1.getA1(ds,sql);
       return new TestString(returnString);
       }     
      .完成后 Make Project 一次编译通过后
      ·在项目文件列表上,点击web run
      此时不要人工启动Weblogic 让JB7去启动它
      如果没有错误,则EJB被自动部署到weblogic上,
      
      · 编一个Servlet作为客户端  
      用JB7的New 一个Servlet 起名为testpoolServlet
      全部代码如下
      package testpool;import javax.servlet.*;
    import javax.servlet.http.*;
    import java.io.*;
    import java.sql.*;
    import java.util.*;
    import javax.naming.*;
    import javax.ejb.*;
    import java.rmi.RemoteException;
    import java.rmi.Remote;
    import testpool.testsql;
    import testpool.testsqlHome;public class testpoolServlet extends HttpServlet {
      static final private String CONTENT_TYPE = "text/html; charset=GBK";
      TestVector myStr;  file://Initialize global variables
      public void init() throws ServletException {
      }
      file://Process the HTTP Get request
      public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType(CONTENT_TYPE);
        String sql="select * from table3"; file://客户端给EJB的sql语句
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<head><title>testpoolServlet</title></head>");
        out.println("<body>");
        out.println("<table><tr>");
        try {
          Context context=new  InitialContext();
          Object objref = context.lookup("testsqlBean");// EJB中那个SessionBean的名字
         testsqlHome home = (testsqlHome)javax.rmi.PortableRemoteObject.narrow(objref,testsqlHome.class);
          testsql servletsql=home.create(); 
          TestString myTStr=servletsql.getMyConn(sql);
          String myStr=myTStr.returnStr();
          out.println("<td>This is=="+myStr+"</td>");
        out.println("</tr></table>");
        out.println("<p>The servlet has received a GET. This is the reply.</p>");
        out.println("</body></html>");
        } catch (Exception e) {
            out.println("A problem has occurred with the servlet.");
        }
      }  file://Clean up resources
      public void destroy() {
      }
    }
          
     .完成后 Web Run Use "testpoolServlet"  
     
     或者·手工启动Weblogic 输入http://localhost:7001/testpoolservlet
     
     最后结果应该显示为             
                    This is==okok
                    The servlet has received a GET. This is the reply
                    
     一般错误发生为:刚才Oracle插入数据时,没有Commit,所以查询不到。
                    为这个问题,曾迷惑我半天,失败啊,哈哈
       
       JB7还是不错的,可以运行时单步调试EJB 
       还可以为Bean中建一个testsqlBeanTestClient1,不用Servlet也很简单,作为测试用,不再赘述