dataSource資料庫連線池的使用
dataSource資料庫連線池的使用(know-how)
說明:以下的環境都是在Tomcat4.01中。
我對JDNI理解不多,這裡大多數是一葫蘆畫瓢得到的。
一、配置server.xml
找到配置釋出應用程式的地方:<Context path=”” docBase=”d:/_webs”/>
將這個改為:
<Context path="" docBase="D:/ _web" debug="0">
<!—宣告一個數據源,程式通過JNDI找到該資料來源。
name指出資料來源的名稱為jdbc/OraDB,
auth表明連線池管理的許可權,
type指出該資料來源的型別-->
<Resource name="jdbc/OraDB" auth="SERVLET" type="javax.sql.DataSource"/>
<!—配置該資料來源的屬性
name指出資料來源的名稱
-->
<ResourceParams name="jdbc/OraDB">
<!—連線資料庫的使用者名稱-->
<parameter>
<name>username</name>
<value>chenws</value>
</parameter>
<!—連線資料庫的密碼-->
<parameter>
<name>password</name>
<value>admin</value>
</parameter>
<!—連線資料庫的jdbc驅動程式-->
<parameter>
<name>driverClassName</name>
<value>oracle.jdbc.driver.OracleDriver</value>
</parameter>
<!—連線資料庫的url-->
<parameter>
<name>url</name>
<value>jdbc:oracle:thin:@192.168.39.215:1521:jetchin</value>
</parameter>
</ResourceParams>
</Context>
實際上,配置資料來源的屬性不止以上那些,還有其他的比如連線時間的限制,連線數量的限制等等。這裡我們並沒有給出,只是使用了tomcat提供的預設屬性罷了。
注意:要讓該資料來源有效,必須將oracle的classes12.zip改名為classes12.jar,然後拷貝到
tomcat安裝目錄下的/common/lib中。
二、配置web.xml
到web應用程式目錄下的web-inf中,開啟web.xml,加入如下的配置:
定義資料來源參照:
<resource-ref>
<!—資料來源描述,可有可無-->
<description>Oracle Datasource example</description>
<!--資料來源名稱-->
<res-ref-name>jdbc/OraDB</res-ref-name>
<!—資料來源型別-->
<res-type>javax.sql.DataSource</res-type>
<!—連線池管理許可權-->
<res-auth>SERVLET</res-auth>
</resource-ref>
三、測試用例
<%@ page contentType="text/html;charset=shift_jis"%>
<%@ page import="java.sql.*"%>
<%@ page import="javax.naming.*"%>
<%
try{
Context initCtx = new InitialContext();
Context ctx = (Context) initCtx.lookup("java:comp/env");
Object obj = (Object) ctx.lookup("jdbc/OraDB");
javax.sql.DataSource ds = (javax.sql.DataSource)obj;
Connection conn = ds.getConnection();
Statement stmt = conn.createStatement();
String strSql = "select * from offices";
ResultSet rs = stmt.executeQuery(strSql);
out.println("city/region<BR>");
while(rs.next()){
out.println(rs.getString("city"));
out.println("/");
out.println(rs.getString("region"));
out.println("<BR>");
}
}catch(Exception ex){
out.println( ex ) ;
}
%>