- 浏览: 93438 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
jinnianshilongnian:
TheMatrix 写道CL0724 写道xiaobadi 写 ...
spring3配置文件中的<context:property-placeholder>标签 -
TheMatrix:
CL0724 写道xiaobadi 写道:<contex ...
spring3配置文件中的<context:property-placeholder>标签 -
hovei:
[b][/b][i][/i][u][/u]引用
[img][ ...
安全测试 关于会话标识未更新的解决方法 -
CL0724:
xiaobadi 写道:<context:propert ...
spring3配置文件中的<context:property-placeholder>标签 -
xiaobadi:
:<context:property-placehold ...
spring3配置文件中的<context:property-placeholder>标签
数据库连接池配置 概述
目前数据库连接池产品是非常多的,DBCP、C3P0、Proxool等都是非常优秀的产品。连接池的性能和稳定性会对我们的程序造成极大的影响,因此,有必要对这些连接池产品进行一些选择。另外,连接池的配置是否恰当,将会决定该连接池的性能和稳定性表现,所以,本文将给出连接池配置的一些要点。在这些连接池产品中作出选择是比较困难的,每个优秀的产品都有它自身的特点,而且也很难找出一个在各种运行环境中都最表现最优的产品,因此,本文将选出一些目前来说比较优秀的产品,简要介绍一下它们的配置要点,以及如何使用在我们的项目中。至于在生产环境中,哪种产品会表现最好,则...。
Hibernate开发组推荐使用c3p0,spring开发组推荐使用dbcp(dbcp连接池有weblogic连接池同样的问题,就是强行关闭连接或数据库重启后,无法reconnect,但可通过配置来解决),Hibernate in action推荐使用c3p0和proxool。其它还有不少商业产品,但性能与稳定性的整体表现反而不如这些开源数据库连接池。从网上的搜索情况来看,也是DBCP、C3P0、Proxool的使用较为广泛。但是关于它们的性能与稳定性,众说不一,难以得到结论。
DBCP是Apache出品的,开发也较为活跃,也是使用极为广泛的一个数据库连接池产品。从网上搜索的资料以及自己以往使用DBCP的经验来看,DBCP的稳定性有些问题。但是它的开发较为活跃,所以我们可以相信它会解决这些问题,而且有些问题是可以通过额外的配置来解决的。
C3P0,稳定性似乎不错,在这方面似乎有很好的口碑。至于性能,应该不是最好的,算是中规中矩的类型。
Proxool的口碑似乎很好,不大见到负面的评价,从官方资料上来看,有许多有用的特性和特点,也是许多人推荐的。但是开发不够活跃,使用者也较少。
我选定这三个产品作为我们系统的数据库连接池,并使用Proxool作为目前开发环境中的连接池产品(Proxool便于监控)。
使用和配置
使用
三个产品都能很方便地整合到Springframework中,也都可以配置为JNDI资源,因此,它们可以随意更换,不会影响程序代码。在生产环境中,如果需要开放我们的数据库给其它系统使用或共享,我推荐使用应用服务器的JNDI。在开发环境中,我们不使用JNDI。以下的配置是不使用JNDI时的Spring配置,至于JNDI的配置,请参考相关文档,该文不做叙述,但配置项基本相同。
DBCP
DBCP是Apache的一个开源项目(http://jakarta.apache.org/commons/dbcp/index.html),它依赖Apache的另外2个开源项目:commons.collections和commons.pool。下载这些包并将这些包的路径添加到classpath中就可以使用dbcp做为项目中的数据库连接池使用了。在我们的项目中,可通过Maven来管理。
在配置时,不常用但在生产环境中很有用的参数有:removeAbandoned 、removeAbandonedTimeout、maxWait。如果设置了rmoveAbandoned=true,那么在getNumActive()快要到getMaxActive()的时候,系统会进行无效的Connection的回收,回收的 Connection为removeAbandonedTimeout(默认300秒)中设置的秒数后没有使用的Connection。
如果设置了logAbandoned=true,DBCP将会在回收Connection之后,打印回收Connection的错误信息,包括在哪个地方用了Connection却忘记关闭了这样的信息,在调试的时候很有用。
基本配置如下:
Java代码
1.<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
2.<property name="driverClassName" value="${db.driverClassName}"/>
3.<property name="url" value="${db.url}"/>
4.<property name="username" value="${db.username}"/>
5.<property name="password" value="${db.password}"/>
6.<!--initialSize: 初始化连接-->
7.<property name="initialSize" value="5"/>
8.<!--maxIdle: 最大空闲连接-->
9.<property name="maxIdle" value="10"/>
10.<!--minIdle: 最小空闲连接-->
11.<property name="minIdle" value="5"/>
12.<!--maxActive: 最大连接数量-->
13.<property name="maxActive" value="15"/>
14.<!--removeAbandoned: 是否自动回收超时连接-->
15.<property name="removeAbandoned" value="true"/>
16.<!--removeAbandonedTimeout: 超时时间(以秒数为单位)-->
17.<property name="removeAbandonedTimeout" value="180"/>
18.<!--maxWait: 超时等待时间以毫秒为单位 6000毫秒/1000等于60秒-->
19.<property name="maxWait" value="3000"/>
20.<property name="validationQuery">
21.<value>SELECT 1</value>
22.</property>
23.<property name="testOnBorrow">
24.<value>true</value>
25.</property>
26.</bean>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${db.driverClassName}"/>
<property name="url" value="${db.url}"/>
<property name="username" value="${db.username}"/>
<property name="password" value="${db.password}"/>
<!--initialSize: 初始化连接-->
<property name="initialSize" value="5"/>
<!--maxIdle: 最大空闲连接-->
<property name="maxIdle" value="10"/>
<!--minIdle: 最小空闲连接-->
<property name="minIdle" value="5"/>
<!--maxActive: 最大连接数量-->
<property name="maxActive" value="15"/>
<!--removeAbandoned: 是否自动回收超时连接-->
<property name="removeAbandoned" value="true"/>
<!--removeAbandonedTimeout: 超时时间(以秒数为单位)-->
<property name="removeAbandonedTimeout" value="180"/>
<!--maxWait: 超时等待时间以毫秒为单位 6000毫秒/1000等于60秒-->
<property name="maxWait" value="3000"/>
<property name="validationQuery">
<value>SELECT 1</value>
</property>
<property name="testOnBorrow">
<value>true</value>
</property>
</bean>
C3P0
C3P0受到不少人的推荐,官方地址是:http://sourceforge.net/projects/c3p0。基本配置如下:
Java代码
1.<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
2. <property name="driverClass" value="${db.driverClassName}"/>
3. <property name="jdbcUrl" value="${db.url}"/>
4.<!--
5. <property name="user" value="${db.user}"/>
6. <property name="password" value="${db.pass}"/>
7.-->
8. <property name="properties">
9. <props>
10. <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3-->
11. <prop key="c3p0.acquire_increment">5</prop>
12. <!--每60秒检查所有连接池中的空闲连接。Default: 0 -->
13. <prop key="c3p0.idle_test_period">60</prop>
14. <prop key="c3p0.max_size">15</prop>
15. <prop key="c3p0.max_statements">0</prop>
16. <prop key="c3p0.min_size">10</prop>
17. <prop key="user">${db.user}</prop>
18. <prop key="password">${db.pass}</prop>
19. </props>
20. </property>
21.</bean>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="${db.driverClassName}"/>
<property name="jdbcUrl" value="${db.url}"/>
<!--
<property name="user" value="${db.user}"/>
<property name="password" value="${db.pass}"/>
-->
<property name="properties">
<props>
<!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3-->
<prop key="c3p0.acquire_increment">5</prop>
<!--每60秒检查所有连接池中的空闲连接。Default: 0 -->
<prop key="c3p0.idle_test_period">60</prop>
<prop key="c3p0.max_size">15</prop>
<prop key="c3p0.max_statements">0</prop>
<prop key="c3p0.min_size">10</prop>
<prop key="user">${db.user}</prop>
<prop key="password">${db.pass}</prop>
</props>
</property>
</bean>
Proxool
这是一个Java SQL Driver驱动程序,可以透明地为你现存的JDBC驱动程序增加连接池的功能。另外它提供一个Web监控程序,可以实时的查看你系统所有连接池的使用情况。官方地址:http://proxool.sourceforge.net。Proxool的配置方式有多种,类似于以上配置的方式如下:
Java代码
1.<bean id="dataSource" class="org.logicalcobwebs.proxool.ProxoolDataSource" destroy-method="close">
2. <property name="driver" value="${db.driverClassName}"/>
3. <property name="driverUrl" value="${db.url}"/>
4. <!--用户名和密码写在一起才调用成功,不然会报 调用无效的参数 错误,下面设置用户名和密码的property好像是无效的,其它数据库也是这样
5. 比如mysql的也要把用户名和密码写在url里:<property name="driverUrl" value="jdbc:mysql://localhost:3306/blogdb?user=lizongbo&password=lizongbo" />
6. -->
7. <property name="user" value="${db.user}"/>
8. <property name="password" value="${db.pass}"/>
9. <property name="alias" value="${db.alias}"/>
10. <property name="houseKeepingSleepTime" value="90000"/>
11. <property name="prototypeCount" value="5"/>
12. <property name="maximumConnectionCount" value="100"/>
13. <property name="minimumConnectionCount" value="10"/>
14. <property name="trace" value="true"/>
15. <property name="verbose" value="true"/>
16.</bean>
<bean id="dataSource" class="org.logicalcobwebs.proxool.ProxoolDataSource" destroy-method="close">
<property name="driver" value="${db.driverClassName}"/>
<property name="driverUrl" value="${db.url}"/>
<!--用户名和密码写在一起才调用成功,不然会报 调用无效的参数 错误,下面设置用户名和密码的property好像是无效的,其它数据库也是这样
比如mysql的也要把用户名和密码写在url里:<property name="driverUrl" value="jdbc:mysql://localhost:3306/blogdb?user=lizongbo&password=lizongbo" />
-->
<property name="user" value="${db.user}"/>
<property name="password" value="${db.pass}"/>
<property name="alias" value="${db.alias}"/>
<property name="houseKeepingSleepTime" value="90000"/>
<property name="prototypeCount" value="5"/>
<property name="maximumConnectionCount" value="100"/>
<property name="minimumConnectionCount" value="10"/>
<property name="trace" value="true"/>
<property name="verbose" value="true"/>
</bean>
另外,也可以在单独的一个文件中配置Proxool。比如,在WEB-INF/下建立proxool.xml文件:
Java代码
1.<?xml version="1.0" encoding="UTF-8"?>
2.<proxool-config>
3. <proxool>
4. <alias>mimir</alias>
5. <driver-url>jdbc:mysql://localhost:3306/dbname?user=username&password= password"</driver-url>
6. <driver-class>com.mysql.jdbc.Driver</driver-class>
7. <driver-properties>
8. <property name="user" value="username"/>
9. <property name="password" value="password"/>
10. </driver-properties>
11. <maximum-connection-count>10</maximum-connection-count>
12. <house-keeping-test-sql>select 1 from dual</house-keeping-test-sql>
13. </proxool>
14.</proxool-config>
<?xml version="1.0" encoding="UTF-8"?>
<proxool-config>
<proxool>
<alias>mimir</alias>
<driver-url>jdbc:mysql://localhost:3306/dbname?user=username&password= password"</driver-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<driver-properties>
<property name="user" value="username"/>
<property name="password" value="password"/>
</driver-properties>
<maximum-connection-count>10</maximum-connection-count>
<house-keeping-test-sql>select 1 from dual</house-keeping-test-sql>
</proxool>
</proxool-config>
然后,需要在应用系统启动时读入这个文件。Proxool提供了一个Servlet来做这个事情,编辑WEB-INF/web.xml,加入以下几行:
Java代码
1.<servlet>
2. <servlet-name>proxoolServletConfigurator</servlet-name>
3. <servlet-class>org.logicalcobwebs.proxool.configuration.ServletConfigurator</servlet-class>
4. <init-param>
5. <param-name>xmlFile</param-name>
6. <param-value>WEB-INF/proxool.xml</param-value>
7. </init-param>
8. <load-on-startup>1</load-on-startup>
9.</servlet>
<servlet>
<servlet-name>proxoolServletConfigurator</servlet-name>
<servlet-class>org.logicalcobwebs.proxool.configuration.ServletConfigurator</servlet-class>
<init-param>
<param-name>xmlFile</param-name>
<param-value>WEB-INF/proxool.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
然后,在Spring的配置中可以这样写:
Java代码
1.<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
2. <property name="driverClassName" value="org.logicalcobwebs.proxool.ProxoolDriver"/>
3. <property name="url" value="proxool.xxx"/>
4.</bean>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="org.logicalcobwebs.proxool.ProxoolDriver"/>
<property name="url" value="proxool.xxx"/>
</bean>
如果需要监控,可以在WEB-INF/web.xml中加上:
Java代码
1.<servlet>
2. <servlet-name>proxooladmin</servlet-name>
3. <servlet-class>org.logicalcobwebs.proxool.admin.servlet.AdminServlet</servlet-class>
4.</servlet>
5.<servlet-mapping>
6. <servlet-name>proxooladmin</servlet-name>
7. <url-pattern>/proxooladmin</url-pattern>
8.</servlet-mapping>
目前数据库连接池产品是非常多的,DBCP、C3P0、Proxool等都是非常优秀的产品。连接池的性能和稳定性会对我们的程序造成极大的影响,因此,有必要对这些连接池产品进行一些选择。另外,连接池的配置是否恰当,将会决定该连接池的性能和稳定性表现,所以,本文将给出连接池配置的一些要点。在这些连接池产品中作出选择是比较困难的,每个优秀的产品都有它自身的特点,而且也很难找出一个在各种运行环境中都最表现最优的产品,因此,本文将选出一些目前来说比较优秀的产品,简要介绍一下它们的配置要点,以及如何使用在我们的项目中。至于在生产环境中,哪种产品会表现最好,则...。
Hibernate开发组推荐使用c3p0,spring开发组推荐使用dbcp(dbcp连接池有weblogic连接池同样的问题,就是强行关闭连接或数据库重启后,无法reconnect,但可通过配置来解决),Hibernate in action推荐使用c3p0和proxool。其它还有不少商业产品,但性能与稳定性的整体表现反而不如这些开源数据库连接池。从网上的搜索情况来看,也是DBCP、C3P0、Proxool的使用较为广泛。但是关于它们的性能与稳定性,众说不一,难以得到结论。
DBCP是Apache出品的,开发也较为活跃,也是使用极为广泛的一个数据库连接池产品。从网上搜索的资料以及自己以往使用DBCP的经验来看,DBCP的稳定性有些问题。但是它的开发较为活跃,所以我们可以相信它会解决这些问题,而且有些问题是可以通过额外的配置来解决的。
C3P0,稳定性似乎不错,在这方面似乎有很好的口碑。至于性能,应该不是最好的,算是中规中矩的类型。
Proxool的口碑似乎很好,不大见到负面的评价,从官方资料上来看,有许多有用的特性和特点,也是许多人推荐的。但是开发不够活跃,使用者也较少。
我选定这三个产品作为我们系统的数据库连接池,并使用Proxool作为目前开发环境中的连接池产品(Proxool便于监控)。
使用和配置
使用
三个产品都能很方便地整合到Springframework中,也都可以配置为JNDI资源,因此,它们可以随意更换,不会影响程序代码。在生产环境中,如果需要开放我们的数据库给其它系统使用或共享,我推荐使用应用服务器的JNDI。在开发环境中,我们不使用JNDI。以下的配置是不使用JNDI时的Spring配置,至于JNDI的配置,请参考相关文档,该文不做叙述,但配置项基本相同。
DBCP
DBCP是Apache的一个开源项目(http://jakarta.apache.org/commons/dbcp/index.html),它依赖Apache的另外2个开源项目:commons.collections和commons.pool。下载这些包并将这些包的路径添加到classpath中就可以使用dbcp做为项目中的数据库连接池使用了。在我们的项目中,可通过Maven来管理。
在配置时,不常用但在生产环境中很有用的参数有:removeAbandoned 、removeAbandonedTimeout、maxWait。如果设置了rmoveAbandoned=true,那么在getNumActive()快要到getMaxActive()的时候,系统会进行无效的Connection的回收,回收的 Connection为removeAbandonedTimeout(默认300秒)中设置的秒数后没有使用的Connection。
如果设置了logAbandoned=true,DBCP将会在回收Connection之后,打印回收Connection的错误信息,包括在哪个地方用了Connection却忘记关闭了这样的信息,在调试的时候很有用。
基本配置如下:
Java代码
1.<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
2.<property name="driverClassName" value="${db.driverClassName}"/>
3.<property name="url" value="${db.url}"/>
4.<property name="username" value="${db.username}"/>
5.<property name="password" value="${db.password}"/>
6.<!--initialSize: 初始化连接-->
7.<property name="initialSize" value="5"/>
8.<!--maxIdle: 最大空闲连接-->
9.<property name="maxIdle" value="10"/>
10.<!--minIdle: 最小空闲连接-->
11.<property name="minIdle" value="5"/>
12.<!--maxActive: 最大连接数量-->
13.<property name="maxActive" value="15"/>
14.<!--removeAbandoned: 是否自动回收超时连接-->
15.<property name="removeAbandoned" value="true"/>
16.<!--removeAbandonedTimeout: 超时时间(以秒数为单位)-->
17.<property name="removeAbandonedTimeout" value="180"/>
18.<!--maxWait: 超时等待时间以毫秒为单位 6000毫秒/1000等于60秒-->
19.<property name="maxWait" value="3000"/>
20.<property name="validationQuery">
21.<value>SELECT 1</value>
22.</property>
23.<property name="testOnBorrow">
24.<value>true</value>
25.</property>
26.</bean>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${db.driverClassName}"/>
<property name="url" value="${db.url}"/>
<property name="username" value="${db.username}"/>
<property name="password" value="${db.password}"/>
<!--initialSize: 初始化连接-->
<property name="initialSize" value="5"/>
<!--maxIdle: 最大空闲连接-->
<property name="maxIdle" value="10"/>
<!--minIdle: 最小空闲连接-->
<property name="minIdle" value="5"/>
<!--maxActive: 最大连接数量-->
<property name="maxActive" value="15"/>
<!--removeAbandoned: 是否自动回收超时连接-->
<property name="removeAbandoned" value="true"/>
<!--removeAbandonedTimeout: 超时时间(以秒数为单位)-->
<property name="removeAbandonedTimeout" value="180"/>
<!--maxWait: 超时等待时间以毫秒为单位 6000毫秒/1000等于60秒-->
<property name="maxWait" value="3000"/>
<property name="validationQuery">
<value>SELECT 1</value>
</property>
<property name="testOnBorrow">
<value>true</value>
</property>
</bean>
C3P0
C3P0受到不少人的推荐,官方地址是:http://sourceforge.net/projects/c3p0。基本配置如下:
Java代码
1.<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
2. <property name="driverClass" value="${db.driverClassName}"/>
3. <property name="jdbcUrl" value="${db.url}"/>
4.<!--
5. <property name="user" value="${db.user}"/>
6. <property name="password" value="${db.pass}"/>
7.-->
8. <property name="properties">
9. <props>
10. <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3-->
11. <prop key="c3p0.acquire_increment">5</prop>
12. <!--每60秒检查所有连接池中的空闲连接。Default: 0 -->
13. <prop key="c3p0.idle_test_period">60</prop>
14. <prop key="c3p0.max_size">15</prop>
15. <prop key="c3p0.max_statements">0</prop>
16. <prop key="c3p0.min_size">10</prop>
17. <prop key="user">${db.user}</prop>
18. <prop key="password">${db.pass}</prop>
19. </props>
20. </property>
21.</bean>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="${db.driverClassName}"/>
<property name="jdbcUrl" value="${db.url}"/>
<!--
<property name="user" value="${db.user}"/>
<property name="password" value="${db.pass}"/>
-->
<property name="properties">
<props>
<!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3-->
<prop key="c3p0.acquire_increment">5</prop>
<!--每60秒检查所有连接池中的空闲连接。Default: 0 -->
<prop key="c3p0.idle_test_period">60</prop>
<prop key="c3p0.max_size">15</prop>
<prop key="c3p0.max_statements">0</prop>
<prop key="c3p0.min_size">10</prop>
<prop key="user">${db.user}</prop>
<prop key="password">${db.pass}</prop>
</props>
</property>
</bean>
Proxool
这是一个Java SQL Driver驱动程序,可以透明地为你现存的JDBC驱动程序增加连接池的功能。另外它提供一个Web监控程序,可以实时的查看你系统所有连接池的使用情况。官方地址:http://proxool.sourceforge.net。Proxool的配置方式有多种,类似于以上配置的方式如下:
Java代码
1.<bean id="dataSource" class="org.logicalcobwebs.proxool.ProxoolDataSource" destroy-method="close">
2. <property name="driver" value="${db.driverClassName}"/>
3. <property name="driverUrl" value="${db.url}"/>
4. <!--用户名和密码写在一起才调用成功,不然会报 调用无效的参数 错误,下面设置用户名和密码的property好像是无效的,其它数据库也是这样
5. 比如mysql的也要把用户名和密码写在url里:<property name="driverUrl" value="jdbc:mysql://localhost:3306/blogdb?user=lizongbo&password=lizongbo" />
6. -->
7. <property name="user" value="${db.user}"/>
8. <property name="password" value="${db.pass}"/>
9. <property name="alias" value="${db.alias}"/>
10. <property name="houseKeepingSleepTime" value="90000"/>
11. <property name="prototypeCount" value="5"/>
12. <property name="maximumConnectionCount" value="100"/>
13. <property name="minimumConnectionCount" value="10"/>
14. <property name="trace" value="true"/>
15. <property name="verbose" value="true"/>
16.</bean>
<bean id="dataSource" class="org.logicalcobwebs.proxool.ProxoolDataSource" destroy-method="close">
<property name="driver" value="${db.driverClassName}"/>
<property name="driverUrl" value="${db.url}"/>
<!--用户名和密码写在一起才调用成功,不然会报 调用无效的参数 错误,下面设置用户名和密码的property好像是无效的,其它数据库也是这样
比如mysql的也要把用户名和密码写在url里:<property name="driverUrl" value="jdbc:mysql://localhost:3306/blogdb?user=lizongbo&password=lizongbo" />
-->
<property name="user" value="${db.user}"/>
<property name="password" value="${db.pass}"/>
<property name="alias" value="${db.alias}"/>
<property name="houseKeepingSleepTime" value="90000"/>
<property name="prototypeCount" value="5"/>
<property name="maximumConnectionCount" value="100"/>
<property name="minimumConnectionCount" value="10"/>
<property name="trace" value="true"/>
<property name="verbose" value="true"/>
</bean>
另外,也可以在单独的一个文件中配置Proxool。比如,在WEB-INF/下建立proxool.xml文件:
Java代码
1.<?xml version="1.0" encoding="UTF-8"?>
2.<proxool-config>
3. <proxool>
4. <alias>mimir</alias>
5. <driver-url>jdbc:mysql://localhost:3306/dbname?user=username&password= password"</driver-url>
6. <driver-class>com.mysql.jdbc.Driver</driver-class>
7. <driver-properties>
8. <property name="user" value="username"/>
9. <property name="password" value="password"/>
10. </driver-properties>
11. <maximum-connection-count>10</maximum-connection-count>
12. <house-keeping-test-sql>select 1 from dual</house-keeping-test-sql>
13. </proxool>
14.</proxool-config>
<?xml version="1.0" encoding="UTF-8"?>
<proxool-config>
<proxool>
<alias>mimir</alias>
<driver-url>jdbc:mysql://localhost:3306/dbname?user=username&password= password"</driver-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<driver-properties>
<property name="user" value="username"/>
<property name="password" value="password"/>
</driver-properties>
<maximum-connection-count>10</maximum-connection-count>
<house-keeping-test-sql>select 1 from dual</house-keeping-test-sql>
</proxool>
</proxool-config>
然后,需要在应用系统启动时读入这个文件。Proxool提供了一个Servlet来做这个事情,编辑WEB-INF/web.xml,加入以下几行:
Java代码
1.<servlet>
2. <servlet-name>proxoolServletConfigurator</servlet-name>
3. <servlet-class>org.logicalcobwebs.proxool.configuration.ServletConfigurator</servlet-class>
4. <init-param>
5. <param-name>xmlFile</param-name>
6. <param-value>WEB-INF/proxool.xml</param-value>
7. </init-param>
8. <load-on-startup>1</load-on-startup>
9.</servlet>
<servlet>
<servlet-name>proxoolServletConfigurator</servlet-name>
<servlet-class>org.logicalcobwebs.proxool.configuration.ServletConfigurator</servlet-class>
<init-param>
<param-name>xmlFile</param-name>
<param-value>WEB-INF/proxool.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
然后,在Spring的配置中可以这样写:
Java代码
1.<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
2. <property name="driverClassName" value="org.logicalcobwebs.proxool.ProxoolDriver"/>
3. <property name="url" value="proxool.xxx"/>
4.</bean>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="org.logicalcobwebs.proxool.ProxoolDriver"/>
<property name="url" value="proxool.xxx"/>
</bean>
如果需要监控,可以在WEB-INF/web.xml中加上:
Java代码
1.<servlet>
2. <servlet-name>proxooladmin</servlet-name>
3. <servlet-class>org.logicalcobwebs.proxool.admin.servlet.AdminServlet</servlet-class>
4.</servlet>
5.<servlet-mapping>
6. <servlet-name>proxooladmin</servlet-name>
7. <url-pattern>/proxooladmin</url-pattern>
8.</servlet-mapping>
发表评论
-
java读写锁ReentrantReadWriteLock的初体验
2015-10-14 23:51 8081业务要求: 消息中间件kafka即时发送消息对象,stor ... -
注解式springMVC的demo
2015-09-14 20:13 1373项目中使用springmvc,使用注解标签,spring版本3 ... -
spring使用ldap
2015-09-14 13:42 1725为了读取公司域账号,使用上ldap接口,Java编码如下 ; ... -
ArrayList和LinkedList的区别
2014-10-20 15:20 712一般大家都知道ArrayList和LinkedList的大致区 ... -
java 中将以逗号分隔的字符串按照N个一组划分的方法
2013-10-29 23:38 6525import java.util.ArrayList; ... -
java反射demo
2013-05-25 00:53 887/** * */ package *; ... -
java中ArrayList和LinkedList的区别 转自http://pengcqu.iteye.com/blog/502676
2013-05-25 00:50 889JAVA语言中的反射机制: ... -
struts OGNL(转载)
2013-03-14 23:12 820Struts2使用之值栈与OGNL-使用 访问属性 ... -
java禁止不需要的HTTP 方 法
2012-10-30 19:03 2945项目安全扫描,报告: 启用了不安全的HTTP 方法 安全风险 ... -
安全测试 关于会话标识未更新的解决方法
2012-10-30 16:05 25346最近本人搭了一个框架 ... -
java关键字,native,strictfp,transient,volatile (转自http://blog.csdn.net/sodino)
2012-10-29 20:56 900Java关键字(keywords) ... -
Java中各类Cache机制实现解决方案(转自http://www.csdn.net/article/2010-04-09/263704)
2012-10-29 17:37 1230在Java中,不同的类都有自己单独的Cache机制,实现的方法 ... -
Java编程中“为了性能”需做的26件事(转自http://www.csdn.net/article/2012-06-01/2806249)
2012-10-29 17:18 813下面是参考网络资源总 ... -
一些我需要用的资料
2012-10-16 22:51 0flex在线参考资料http://help.adobe.com ... -
Log4j简介(转载自http://www.iteye.com/topic/165955)
2012-10-12 14:36 1031Log4j的简介: Log4j是Apache的一个开放源代码 ... -
Log4j入门(转载自http://xuxn.iteye.com/blog/416380)
2012-10-12 14:34 1012首先要将 log4j-1.2.8.jar & comm ... -
JAVA考试知识覆盖要点
2012-09-29 16:14 0JAVA考试知识覆盖要点: (1)常用的集合类,如Set、Ma ... -
Java1.5泛型指南中文版(Java1.5 Generic Tutorial)(转帖)
2012-09-25 10:08 743由于文章字数太多,附上地址吧http://blog.csdn. ... -
关于java泛型的学习
2012-10-09 18:47 1256java中我们经常用泛型的占位符,T E K V的含义 T = ... -
一个生成验证码的类
2012-09-24 11:08 1094package com.huawei.tsm.business ...
相关推荐
标题 "http://topkinghat.iteye.com/blog/840706" 提到的博客链接实际上指向了“姜铁”的个人博客文章,而描述中的 "NULL" 暂无具体信息。不过,标签“源码”和“工具”暗示了这篇博客可能涉及到软件开发的源代码...
NULL 博文链接:https://wy649898543.iteye.com/blog/1423655
博文链接:https://jackzhangyunjie.iteye.com/blog/202349
http://www.iteye.com/topic/699515 主题:Swing是一把刀 http://www.iteye.com/topic/702804 主题:Swing第二刀:枝间新绿一重重 http://www.iteye.com/topic/707540 主题:Swing第二小刀刀:星星之火可以燎原 ...
NULL 博文链接:https://yizhilong28.iteye.com/blog/1161027
NULL 博文链接:https://ownraul.iteye.com/blog/1277047
NULL 博文链接:https://itace.iteye.com/blog/2306140
NULL 博文链接:https://zw7534313.iteye.com/blog/426799
博文链接:https://wdfan.iteye.com/blog/197543
博文链接:https://balaschen.iteye.com/blog/82579
NULL 博文链接:https://zzz299.iteye.com/blog/691049
博文链接:https://avery-leo.iteye.com/blog/213980
NULL 博文链接:https://timewalker.iteye.com/blog/1065615
NULL 博文链接:https://wincheer.iteye.com/blog/774298
NULL 博文链接:https://ajita.iteye.com/blog/1725304
NULL 博文链接:https://qiusenvs.iteye.com/blog/412763
手机理财1.0.7 博文链接:https://iwinyeah.iteye.com/blog/213328
博文链接:https://cxlh.iteye.com/blog/245041
NULL 博文链接:https://modun.iteye.com/blog/1595857