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 ) ;
}
%>