Tomcat中数据源的配置和使用
五、Tomcat中数据源的配置:
数据源的配置涉及修改server.xml和web.xml,在server.xml中加入定义数据源的元素<Resource>,在web.xml加入<resource-ref>元素,声明该Web应用所引用的数据。
A.在server.xml中加入<Resource>元素:<Resource>元素用来定义JNDI Resource。
属性 描述
name 指定Resource的JNDI名字
auth 指定管理Resource的Manager,它有两个可选值:Container、Application
type 指定Resource所属的Java类名
B.在<Resource>元素中加入<ResourceParams>元素:<ResourceParams>元素用来指定各种参数值<Resource name = "jdbc/BookDb"
auth = "Container"
type = "javax.sql.DataSource" />
属性 描述
factory 指定生成的DataResource的factory类名
maxActive 指定数据库连接池中处于活动状态的最大连接数目,0表示不受限制
maxIdle 指定数据库连接池中处于空闲状态的最大连接数目,0表示不受限制
maxWait 指定连接池中连接处于空闲状态的最长时间,超过会抛出异常,-1表示无限
username 指定连接数据库的用户名
password 指定连接数据库的口令
driverClassName 指定连接数据库的JDBC驱动程序
url 指定连接数据库的URL
<ResourceParams name = "jdbc/BookDb">![]()
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
![]()
<parameter>
<name>maxActive</name>
<value>100</value>
</parameter>
![]()
<parameter>
<name>maxIdle</name>
<value>30</value>
</parameter>
![]()
<parameter>
<name>maxWait</name>
<value>10000</value>
</parameter>
![]()
<parameter>
<name>username</name>
<value>user</value>
</parameter>
![]()
<parameter>
<name>password</name>
<value>1234</value>
</parameter>
![]()
<parameter>
<name>driverClassName</name>
<value>com.mysql.jdbc.Driver</value>
</parameter>
![]()
<parameter>
<name>url</name>
<value>jdbc:mysql//localhost:3306/BookDb?autoReconnect=true</value>
</parameter>
</ResourceParams>
C.在web.xml中加入<resource-ref>元素:<resource-ref>元素表示在Web应用中引用JNDI资源
属性 描述
description 对所引用的资源的说明
res-ref-name 指定所引用资源的JNDI名字,与<Resource>元素中的name属性对应
res-type 指定所引用资源的类名字,与<Resource>元素中的type属性对应
res-auth 指定所引用资源的Manager,与<Resource>元素中的auth属性对应
六、在Web应用中使用数据源:
javax.naming.Context提供了查找JNDI Resource的接口,可以通过三个步骤来使用数据源对象:
A.获得对数据源的引用:
B.获得数据库连接对象:Context ctx = new InitalContext();
DataSource ds =
(DataSource)ctx.lookup("java:comp/env/jdbc/BookDb");
C.返回数据库连接到连接池:Connection con = ds.getConnection();
con.close();
在连接池中使用close()方法和在非连接池中使用close()方法的区别是:前者仅仅是把数据库连接对象返回到数据库连接池中,是连接对象又恢复到空闲状态,而非关闭数据库连接,而后者将直接关闭和数据库的连接。
七、发布使用数据源的Web应用:
如果直接同JDBC访问数据库,可以把JDBC驱动程序拷贝到Web应用的WEB-INF/lib目录或者Tomcat安装目录下的common/lib目录下。
如果通过数据源访问数据库,由于数据源由Servlet容器创建并维护,所以必须把JDBC驱动程序拷贝到Tomcat安装目录下的common/lib目录下,确保Servlet容器能够访问驱动程序。
