各个web工程可以通过工程内的xml文件配置访问数据库的数据源,这样的配置是各个工程私有的。基于JNDI为tomcat配置数据源,则可以做成全局的,各工程只需要通过便签引用数据源即可。
1.需要将数据库的连接驱动mysql-connector-java-5.1.21.jar及数据库连接池的jar包druid-0.2.9.jar放到Tomcat 6.0\lib下。
2.修改tomcat的配置文件,基于JNDI配置数据源,Tomcat 6.0\conf\context.xml改成如下即可,原文件中多余的部分删掉:
<?xml version='1.0' encoding='utf-8'?> <Context> <WatchedResource>WEB-INF/web.xml</WatchedResource> <Resource name="jdbc/mysqldb" type="javax.sql.DataSource" description="DruidDataSource" factory="com.alibaba.druid.pool.DruidDataSourceFactory" scope="Shareable" auth="Container" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:13306/nnm5" username="root" password="OSSDB123" maxActive="50" maxWait="10000" removeabandoned="true" removeabandonedtimeout="60" logabandoned="false" filters="stat"/> <ResourceLink global="mysqldb" name="mysqldb" type="javax.sql.DataSource"/> </Context>
这里配置的是Druid数据库连接池,配置正确的用户名,密码,url即可。
3.在工程的web.xml中<web-app>标签之间加上下面的代码:
<resource-ref> <description>DB Connection test</description> <res-ref-name>jdbc/mysqldb</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref>
4.在需要数据库连接池的配置文件中,通过jee:jndi-lookup标签引入连接池即可。需要引入jee命名空间。
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd "> <jee:jndi-lookup id = "dataSource" jndi-name ="java:comp/env/jdbc/mysqldb" resource-ref = "true"/>
这里需要注意jndi-name不要写错。其他的地方引用id为dataSource的bean即可。