tomcat数据库连接池配置
tomcat数据库连接池,是Jakarta从4.0版本开始推出的一个组件。对于5.5.x版本与之前的版本配置有所不同。稍后在续。
以下主要的是tomcat5.5.x配置,配置总共分三部:
^-^ 条件:将驱动的*.jar包拷贝到tomcat目录下的common\lib下。(这里我们使用的是bea 的 Weblogic的jdbc驱动包);
首先、配置web服务器端的JNDI资源,有两种情况:
1) 全局web应用配置
在tomcat目录下进入到\conf文件夹,打开server.xml文件找到 <GlobalNamingResources> <!-- other content --> </GlobalNamingResources> ,在该标签之中添加如下内容: <Resource name= "jdbc/test_jndi " type= "javax.sql.DataSource "
password= "123456 " driverClassName= "weblogic.jdbc.sqlserver.SQLServerDriver "
maxIdle= "10 " maxWait= "5000 " username= "sa " url= "jdbc:bea:sqlserver://127.0.0.1:1433;DatabaseName=test_db " maxActive= "20 "/>
然后在该server.xml同级目录下打开context.xml文件,找到标签 <context> </context> ,在中添加
<ResourceLink global= "jdbc/test_jndi " name= "jdbc/test_jndi " type= "javax.sql.DataSource "/>
全局环境配置好之后。就可以在各个web应用下引用该JNDI资源。
2) 局部web应用配置( 有两种方式)
方式一:
和上叙一样,打开server.xml文件,找到如下标签:
<Host name= "localhost " appBase= "webapps " unpackWARs= "true " autoDeploy= "true " xmlValidation= "false " xmlNamespaceAware= "false "> </Host>
在其中添加:
<Context path= "/test_webapp " docBase= "/test_webapp " debug= "5 " reloadable= "true " crossContext= "true ">
<Resource driverClassName= "weblogic.jdbc.sqlserver.SQLServerDriver "
url= "jdbc:bea:sqlserver://localhost:1433;DatabaseName=test " username= "sa "
password= "123456 " name= "jdbc/test_jndi " type= "javax.sql.DataSource " auth= "Container "
maxActive= "20 " maxIdle= "10 " maxWait= "5000 " />
</Context>
方式二:
在目录tomcat5/conf/Catalina/localhost/下建立一个与自己web应用相同文件名的xml配置文件(文件名必须与web应用相同),
这里我使用的是test_webapp。在文件中添加如下的内容:
<?xml version= "1.0 " encoding= "UTF-8 " ?>
<Context path= "/test_webapp " docBase= "/test_webapp " debug= "5 " reloadable= "true " crossContext= "true ">
<Resource driverClassName= "weblogic.jdbc.sqlserver.SQLServerDriver "
url= "jdbc:bea:sqlserver://localhost:1433;DatabaseName=test " username= "sa "
password= "123456 " name= "jdbc/test_jndi " 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: 每次阻塞的最大延迟时间(毫秒);
tomcat5.5.x与之前的版本一个本质的区别在于,它不支持在server.xml文件中使用参数节。
********************* end **************************
其次、在各自的web应用中引用该JNDI资源
具体操作就是:在各自的web应用根目录下,找到文件/web-inf/web.xml并打开,在标签 <web-app> </web-app> 中添加如下内容
<resource-ref>
<description> DBConnection </description>
<res-ref-name> jdbc/test_jndi </res-ref-name>
<res-type> javax.sql.DataSource </res-type>
<res-auth> Container </res-auth>
</resource-ref>
其中res-ref-name标签中的内容需要改成你自己的应用的JNDI名。(这里的内容是要和之前配置的name属性相对应).
最后、通过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/test_jndi ");
conn=ds.getConnection();
至此我们就可以完全的使用tomcat连接池。
[解决办法]
不错