为了访问DB,我使用com.mchange.v2.c3p0.ComboPooledDataSource创建了数据源,其中包含以下属性 `
<property name="initialPoolSize" value="5" />
<property name="minPoolSize" value="5" />
<property name="maxPoolSize" value="10" />
<property name="idleConnectionTestPeriod" value="200" />
<property name="acquireIncrement" value="1" />
<property name="maxStatements" value="25" />
<property name="numHelperThreads" value="3" />`
我的dao类扩展了JDBCDaoSupport,上面的数据源被设置到JDBCDaoSupport中,后者提供了用于执行查询的JDBCTemplate。我没有使用任何交易经理。 我现在有两个问题:
<property name="acquireRetryAttempts" value="1" />
但不确定这是否是正确的做法。 答案 0 :(得分:0)
我不确定JDBCTemplate是否与ComboPooledDataSource一起工作......我试图用c3p0配置它但是它给了我警告,连接没有返回到池并且为每个请求创建了新的连接。它刚刚充斥我的Mysql服务器(以及我的应用程序获取尝试,太多连接错误)
除了RoseIndia上的一个教程之外,我在网上找不到关于JDBCTemplate配置的任何内容。以下产生了这些错误。
我建议你的数据库事务使用SessionFactory(或者你可能更喜欢核心jdbc PreparedStatement和Resultset)。
就Retry Attempts而言,我认为c3p0在默认配置下不会无限制。您可以使用acquireRetryAttempts和acquireRetryDelay来设置重试尝试时间。
来自交换网站本身:
“当c3p0 DataSource尝试并且无法获取Connection时,它将重试到acquireRetryAttempts次,每次尝试之间都会延迟acquireRetryDelay。如果所有尝试都失败,则从DataSource等待Connections的任何客户端都将看到异常,表示无法获取连接。“
最好从mchange中查看参考文档,并根据需要配置c3p0 mchange c3p0 reference