经过大半天的实践和摸索,终于在tomcat下成功地配置mysql的数据库连接池。总结如下:
1.在$catalina_home/conf/server.xml中添加配置信息,声明连接池的具体信息,添加内容如下:
<!–声明连接池–>
<resource name="jdbc/mysql"auth="container" type="javax.sql.datasource"/>
<!– 对连接池的参数进行设置 –>
<resourceparamsname="jdbc/mysql">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.basicdatasourcefactory</value>
</parameter>
<parameter>
<name>maxwait</name>
<value>5000</value>
</parameter>
<parameter>
<name>maxactive</name>
<value>20</value>
</parameter>
<parameter>
<name>username</name>
<value>shopadm</value>
</parameter>
<parameter>
<name>password</name>
<value>123</value>
</parameter>
<parameter>
<name>url</name> <value>jdbc:mysql://localhost/shopdb?useunicode=true&charact-erencoding=gb2312</value>
</parameter>
<parameter>
<name>driverclassname</name>
<value>com.mysql.jdbc.driver</value>
</parameter>
<parameter>
<name>maxidle</name>
<value>10</value>
</parameter>
</resourceparams>
2. 在$catalina_home/conf/web.xml的</web-app>前添加如下信息:
<resource-ref>
<description>db connection</description>
<res-ref-name>jdbc/mysql</res-ref-name>
<res-type>javax.sql.datasource</res-type>
<res-auth>container</res-auth>
</resource-ref>
其中<res-ref-name>中的参数名必须和server.xml中声明的连接名一样。
3. 在$catalina_home/conf/catalina/localhost目录下找到需要进行数据库连接的当前程序的配置信息,比如这里是shopping.xml,在这个文件中添加如下信息:
<context …>
…
<resourcelink name=”jdbc/mysql” global=”jdbc/mysql”type=”javax.sql.datasource”/>
…
</context>
大功告成!
在此基础上,参考tomcat官方网站的用户手册,摸索出另外一种配置连接池的方法,这个方法不需要对server.xml进行修改,只要对需要使用到连接池的程序的配置文档进行修改就可以了。方法如下:
1.$catalina_home/conf/catalina/localhost目录下找到需要数据库连接池的程序的配置文档,此处是shopping.xml。在<context></context>之间添加如下信息,声明一个数据库连接池:
<resource name="jdbc/mysql"auth="container" type="javax.sql.datasource"/>
<resourceparams name="jdbc/mysql">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.basicdatasourcefactory</value>
</parameter>
<parameter>
<name>maxwait</name>
<value>5000</value>
</parameter>
<parameter>
<name>maxactive</name>
<value>20</value>
</parameter>
<parameter>
<name>password</name>
<value>123</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:mysql://localhost/shopdb?useunicode=true&characterencoding=gb2312</value>
</parameter>
<parameter>
<name>driverclassname</name>
<value>com.mysql.jdbc.driver</value>
</parameter>
<parameter>
<name>maxidle</name>
<value>10</value>
</parameter>
<parameter>
<name>username</name>
<value>shopadm</value>
</parameter>
</resourceparams>
这里的参数和上一种方法中添加到server.xml里的信息几乎是完全一样的。
2.在对应程序的web-inf下建立一个web.xml文档,添加如下信息:
<?xml version="1.0"encoding="iso-8859-1"?>
<web-appxmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"
xsi:schemalocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<resource-ref>
<description>dbconnection</description>
<res-ref-name>jdbc/mysql</res-ref-name>
<res-type>javax.sql.datasource</res-type>
<res-auth>container</res-auth>
</resource-ref>
</web-app>
关键是斜体字的部分,指向前面声明的连接池。
这两种方法经测试都能配置成功,显然他们的“作用域”是不一样的。另外,配置以后内部的引用以及运行机制,留待以后再深入研究。接下来先开始学习数据库连接池和jsp的协同工作。
