Connection Pool (2)

Connection Pool (2)

(史帝芬, idealist@gcn.net.tw, 2003/12/19)

第一種建立Connection Pool的作法基本上是由Programmer自己寫,現在要介紹另一種作法,透過JNDI可以更簡單做出來,而且程式的寫法可以完全和使用何種資料庫無關。下面的程式範例將以Tomcat 4.1.27和Oracle 9i為例。
  • Copy library到Tomcat
    classes12.jarnls_charset12.jar copy到%Tomcat%/common/lib

  • 設定server.xml
    在%Tomcat%/conf裡找到server.xml,然後在裡面加上下面這段設定。
    <DefaultContext crossContext="true" reloadable="true">
    <Resource auth="Container" name="jdbc/epmp" scope="Shareable" type="javax.sql.DataSource"/>
    <ResourceParams name="jdbc/epmp">
    <parameter>
     <name>url</name>
     <value>jdbc:oracle:thin:@hostname:1521:SID</value>
    </parameter>
    <parameter>
     <name>driverClassName</name>
     <value>oracle.jdbc.driver.OracleDriver</value>
    </parameter>
    <parameter>
     <name>username</name>
     <value>user</value>
    </parameter>
    <parameter>
     <name>password</name>
     <value>pwd</value>
    </parameter>
    </ResourceParams>
    </DefaultContext>

  • 設定web.xml
    如圖1設定JNDI的參照,設定好之後將可以在web.xml中發現WSAD為我們加入的內容。
    <resource-ref>
    	<res-ref-name>jdbc/epmp</res-ref-name>
    	<res-type>javax.sql.DataSource</res-type>
    	<res-auth>CONTAINER</res-auth>
    	<res-sharing-scope>Shareable</res-sharing-scope>
    </resource-ref>
    

    圖1

  • 範例程式
    Context ctx;
    Connection conn = null;
    ResultSet rs = null;

    try {
     ctx = new InitialContext();
     DataSource ds = (DataSource)  ctx.lookup("java:comp/env/jdbc/epmp");
     conn = ds.getConnection();

     //Do something...

    } catch (NamingException e) {
     e.printStackTrace();
    } catch (SQLException e) {
     e.printStackTrace();
    }
    finally {
     try {
      conn.close();
     } catch (SQLException e1) {
      e1.printStackTrace();
     }
     conn = null;
    }

  • SQL Server 2000 (2005.04.16 補充)
    如果資料庫換成SQL Server 2000,則將server.xml中的設定url和driverClassName換成如下即可…
    <parameter>
       <name>driverClassName</name>
       <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
    </parameter>
    
    <parameter>
      <name>url</name>
      <value>jdbc:microsoft:sqlserver://hostname:1433;DatabaseName=dbXXX</value>
    </parameter>
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值