MaxActive数据库连接参数不起作用

时间:2015-06-04 10:25:20

标签: tomcat datasource

我遇到数据源配置问题。

我有一个带有Java 7的Tomcat 7和一个Quartz Web应用程序。 此应用程序配置了数据源:

<Resource 
   auth="Container"
   driverClassName="com.mysql.jdbc.Driver"
   factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
   logAbandoned="true"
   maxActive="3"
   maxIdle="1"
   maxWait="10000"
   name="jdbc/name"
   password="XXXXXX"
   removeAbandoned="true"
   removeAbandonedTimeout="120"
   type="javax.sql.DataSource"
   url="jdbc:mysql://xxxxxx:3306/xxxxx?autoReconnect=true&zeroDateTimeBehavior=convertToNull&rewriteBatchedStatements=true"
   username="usr"
   validationQuery="SELECT 1" />

如果maxActive = 3,我预计会看到不超过3个连接打开。而不是这个,我看到每次Quartz作业启动时都会打开一个新连接,直到8连接(不知道这是否是默认限制)。

所以似乎没有考虑这个参数,但是其他是的,因为与数据库的连接是正确的,所以用户名,密码等等都可以。

你能帮帮我吗?

感谢

2 个答案:

答案 0 :(得分:0)

我回复自己

这是工厂的问题org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory

使用org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory(替换原始的tomcat 7 jar)它的工作原理

不知道为什么,但它确实有效。使用org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory即使initialSize设置为8,也只有一个被实例化。简单地用org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory替换,8实例化

答案 1 :(得分:0)

问题是,你使用错误的属性设置最大连接,你应该使用maxTotal而不是maxActive。

有关详细信息,请参阅BasicDataSource Configuration Parameters