设为首页
加入收藏夹

Weblogic 连接池 + Oracle + Servlet 的
浏览选项:

  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: emp 当然你得先建立这个目录
  
   3.下来在Weblogic中建立Oracle的连接池
   . 在Weblogic 控制台    Services -->JDBC -->Connection Pools--> Configure a new JDBC Connection Pool
   在General属性页
   Name :连接池名 file://我取名为testPool ,注意名字区分大小写
   URL: JDBC 连接字符串 file://Oracle的 为: jdbc:oracl
   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 完成
  4 开始编程
   ?在JB7中新建一个空项目
   ?在New 的Enterprise 页Ejb2.0 bean designer

   ?在可视化设计窗口,右键,New Session bean ,起名字为testsqlBean type为
   ?启动Oralce
   ?添加一个表table3 字段名 A1 再加一条数据 'OKOK' file://最后在Servlet中返回
   ?在该项目中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的
   }
   catch(Exception e)
   { }
   }
   ?然后。在可视化设计窗口 testsqlBean上右键 add method 取名为getMyConn 返回类
   参数为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("");
   try {
   Context context=new InitialContext();
   Object objref = context.lookup("testsqlBean");// EJB中那个SessionBean的
   testsqlHome home = (testsqlHome)javax.rmi.PortableR
emoteObject.narrow(objref,testsqlHome.class);
   testsql servletsql=home.create();

   TestString myTStr=servletsql.getMyConn(sql);
   String myStr=myTStr.returnStr();    out.println("

Copyright © 2004 wanxu.com All Rights Reserved