tomcat数据库连接池,是Jakarta从4.0版本开始推出的一个组件。
对于5.5.x版本与之前的版本配置有所不同。稍后在续。
以下主要的是tomcat5.5.x配置,配置总共分三部:
首先将驱动的*.jar包拷贝到tomcat目录下的common/lib下。(这里我们使用的是bea 的 Weblogic的jdbc驱动);
其次是配置xml文件,可任意选择配置全局或局部的.
1)全局的
在tomcat目录下进入到/conf文件夹,打开server.xml文件找到
<Host name="localhost" appBase="webapps" unpackWARs="true"
autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
</host>
这段,在这之中加入如下的代码:
<Context path="/dbpool" docBase="dbpool" debug="5" reloadable="true" crossContext="true">
<Resource driverClassName="weblogic.jdbc.sqlserver.SQLServerDriver"
url="jdbc:bea:sqlserver://localhost:1433;DatabaseName=A6_YLGL" username="sa"
password="111111" name="jdbc/a6" type="javax.sql.DataSource" auth="Container"
maxActive="20" maxIdle="10" maxWait="5000" />
</Context>
path: 自己应用的路径(一般为相对路径),在webapps目录下;
docBase: 应用的名称和上面相同;
driverClassName: 应用所要的驱动名;
url: 连接数据库的地址;
username: 登陆数据库要使用的用户名;
password: 登陆数据库要用的密码;
name: 引用上下文(context)的JNDI名,自己随便设;
type: 引用资源的类型;
maxActive: 每次连接数据库的最大数;
maxIdle: 每次连接数据库的等待数;
maxWait: 每次阻塞的最大延迟时间(毫秒);
最后就是在自己的应用目录下找到web-inf/web.xml文件,在<web-app>
</web-app>之中加入如下代码:
<resource-ref>
<description>DBConnection</description>
<res-ref-name>jdbc/a6</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
其中res-ref-name标签中的内容需要改成你自己的应用的JNDI名。(这里的内容是要和上面的Resources中的name值相同)
2)局部的某个应用的
在tomcat目录下进入到conf/Catalina/localhost目录下,新建一个dbpool.xml文件,注意文件名一定要和自己的应用的
名称相同。然后添加如下的内容:
<?xml version="1.0" encoding="UTF-8" ?>
<Context path="/dbpool" docBase="/dbpool" debug="5" reloadable="true" crossContext="true">
<Resource driverClassName="weblogic.jdbc.sqlserver.SQLServerDriver"
url="jdbc:bea:sqlserver://localhost:1433;DatabaseName=A6_YLGL" username="sa"
password="111111" name="jdbc/a6" type="javax.sql.DataSource" auth="Container"
maxActive="20" maxIdle="10" maxWait="5000" />
</Context>
最后就是在自己的应用目录下找到web-inf/web.xml文件,在<web-app>
</web-app>之中加入如下代码:
<resource-ref>
<description>DBConnection</description>
<res-ref-name>jdbc/a6</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
其中res-ref-name标签中的内容需要改成你自己的应用的JNDI名。(这里的内容是要和上面的Resources中的name值相同)
tomcat5.5.x与之前的版本一个本质的区别在于,它不支持参数节。
最后是测试jsp代码:
Connection conn=null;
Context initCtx=new InitialContext();
Context ctx=(Context)initCtx.lookup("java:comp/env");
javax.sql.DataSource ds=(javax.sql.DataSource)ctx.lookup("jdbc/a6");
conn=ds.getConnection();