我遇到数据源配置问题。
我有一个带有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连接(不知道这是否是默认限制)。
所以似乎没有考虑这个参数,但是其他是的,因为与数据库的连接是正确的,所以用户名,密码等等都可以。
你能帮帮我吗?感谢
答案 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