数据库连接池个人总结

Tomcat 中使用 DBCP 数据库连接池,该连接池的 jar 文件为 commons-pool.jar commons-dbcp.jar ,位于 $CATALINA_HOME/common/lib 下。

 

配置如下:

1.         server.xml 中的 context defaultContext 中定义 <Resource> <ResourcParams> 元素,这两个元素一一对应,并且可以定义多对。

2.         web.xml 中定义 <resource-ref> ,与上面已定义的 Resource 相对应。

3.         在代码中使用 JNDI 调用查找 JDBC 资源。

 

下面就来解释这 3 步所作的工作。

1)         <Resource> 标签用于定义 DBCP 数据源的 JNDI 资源,定义的形式如下:

<Resource name=”jdbc/TestDB” auth=”Container” type=”javax.sql.DataSource”/>

它包括三个属性:

l  name: 指定 Resource JNDI 名字;声明的 JNDI 名是相对于 java:comp/env 上下文的,因此 JNDI 名为 java:comp/env/jdbc/TestDB.

l  auth :指定管理 Resource Manager 。它有两个可选值: Container Application Container 表示容器内的资源, Application 表示应用的资源。

l  type :指定 Resource 所属的 Java 类名。选项包括 javax.sql.DataSource( 仅限于本地事务 ) javax.sql.XADataSource( 全局事务 ) java.sql.ConnectionPoolDataSource( 本地事务,性能可能会提高 )

2)         <ResourceParams> 标签用于配置数据源工厂的参数,定义的形式如下:

<ResourceParams name=”jdbc/TestDB”>

         <parameter>

                   <name>driverClassName</name>

                   <value>org.gjt.mm.mysql.Driver</value>

         </parameter>

         <parameter>

                   <name>url</name>

                   <value>jdbc:mysql://localhost:3306/demo </value>

         </parameter>

         <parameter>

                   <name>username</name>

                   <value>root</value>

         </parameter>

         <parameter>

                   <name>password</name>

                   <value>root </value>

         </parameter>

         <parameter>

                   <name>maxActive</name>    // 最大连接数据库的连接数,设为 0 表示没有限制。

                   <value>20 </value>

         </parameter>

         <parameter>

                   <name>maxIdle</name>         // 最大等待连接中的数量,设为 0 表示没有限制。

                   <value>30000</value>

         </parameter>

         <parameter>

                   <name>maxWait</name>       // 最大等待的秒数 (ms) ,超过时间会丢出错误信息。

                   <value>1000</value>

         </parameter>

这里参数也可以通过直接写在 <resource> 元素属性中来设置。

3)         web.xml 中,配置 <resource-ref> 元素以在 web 应用中引用 JNDI 资源。

< resource-ref >

< description > DB Connection </ description >

< res-ref-name > jdbc/hibtest </ res-ref-name >

< res-type > javax.sql.DataSource </ res-type >

< res-auth > Container </ res-auth >

</ resource-ref >

description :对所用的资源的说明。

res-ref-name :指定所引用资源的 JNDI 名字,与 <Resource> 元素中的 name 属性对应。

res-type :指定所引用资源的类名,与 <Resource> 元素的 type 属性对应。

res-auth: 指定所引用资源的 manager ,与 <resource> 元素中的 auth 属性对应。

 

4)         Web 应用中使用数据源。

Javax.naming.Context 提供查找 JNDI Resource 的接口,可以通过 3 个步骤来使用数据源对象:

l  获得数据源的引用:

Context ctx=new InitialContext();

DataSource ds=(DataSource)ctx.lookup(“java:comp/env/jdbc/TestDB”);

l  获得数据库连接对象:

Connection conn=ds.getConnection();

l  返回数据库连接到连接池:

conn.close();

         在连接池中使用 close() 方法跟非连接池中使用 close() 方法的区别是: 前者仅仅把数据库连接对象返回到数据库连接池中,使连接对象又恢复到空闲状态,而非关闭数据库连接,后者将直接关闭与数据库的连接。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值