今天试了下tomcat连接池的配置,在网上找的有些资料,总是有问题,不过试了多次终于成功了。以下是我的一点经验,好像也不用在web.xml里面添加什么<resource-ref>
首先记得把数据库驱动放到server/lib/下面,我用的是tomcat5.5和mysql5.0
1,第一种方法:配置全局的连接池,可以由多个工程引用
在server.xml文件中的<GlobalNamingResources>结点下面添加,连接池设置
<Resource name="jdbc/mysql" type="javax.sql.DataSource"
password="" driverClassName="org.gjt.mm.mysql.Driver" maxIdle="2"
maxWait="5000" username="root" url="jdbc:mysql://localhost:3306/test"
maxActive="4" />
然后在conf/catalina/localhost/下面添加你工程的配置文件,我的工程名叫jndi,配置文件名叫jndi.xml
<Context
docBase="jndi" path="/jndi"
privileged="true">
<ResourceLink name="jdbc/mysql" global="jdbc/mysql" type="javax.sql.DataSource"/>
</Context>
或者直接把上面这段放到server.xml的<host>结点中就不用添加上面的jndi.xml了,
其中<ResourceLink name="jdbc/mysql" global="jdbc/mysql" type="javax.sql.DataSource"/>
这一行别忘了,是引用服务器上全局的连接池资源. 这两种效果是一样的, 现在就可以在web工程中引用连接池来创建数据库接了。
2,第二种方法:配置私有的连接池:只有该工程可以使用
直接在conf/catalina/localhost/中添加jndi.xml,添加如下内容:
<Context docBase="jndi" path="/jndi" privileged="true">
<Resource name="jdbc/mysql" type="javax.sql.DataSource"
password="" driverClassName="org.gjt.mm.mysql.Driver" maxIde="2"
maxWait="5000" username="root" url="jdbc:mysql://localhost:3306/test"
maxActive="4" />
</Context>
这样就可以了。
3,第三种方法:也是私有的连接池
直接在服务器上添加工程配置和连接池配置,在<host>结点中,添加:
<Context docBase="jndi" path="/jndi" privileged="true">
<Resource name="jdbc/mysql" type="javax.sql.DataSource"
password="" driverClassName="org.gjt.mm.mysql.Driver" maxIdle="2"
maxWait="5000" username="root" url="jdbc:mysql://localhost:3306/test"
maxActive="4" />
</Context>
就可以了。
最后是测试代码,必须在web工程中运行。
InitialContext ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/mysql");
conn = ds.getConnection();