我有一个部署在JBOSS服务器上的spring cxf web服务应用程序。该服务工作正常,偶尔(服务器启动后5-6天内),我得到并错误“无法打开JDBC连接进行事务;嵌套异常是org.apache.commons.dbcp.SQLNestedException:无法获取连接,池错误超时等待空闲对象“并且该特定服务停止
我在这个应用程序中有大约17个服务,只有有这个数据库连接问题的服务才会停止,直到我重新启动服务器。
其他服务正在增加。
以下是我的JDBC模板配置。
<bean id="dataSource" destroy-method="close"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<property name="initialSize" value="10" />
<property name="maxIdle" value="10" />
<property name="maxActive" value="100" />
<property name="maxWait" value="1000" />
<property name="validationQuery" value="select 1 from sysibm.sysdummy1" />
<property name="testOnBorrow" value="true" />
<property name="testWhileIdle" value="true" />
<property name="timeBetweenEvictionRunsMillis" value="1200000" />
<property name="minEvictableIdleTimeMillis" value="1800000" />
<property name="numTestsPerEvictionRun" value="5" />
<property name="defaultAutoCommit" value="false" />
</bean>
非常感谢您的帮助。
答案 0 :(得分:0)
我建议您切换到JBOSS管理的JNDI数据源。
答案 1 :(得分:0)
这听起来像是连接泄漏,或者你有一些长期运行的进程长期保持数据库连接,最终耗尽你的连接池。尽管不太可能,你也有可能,你有非常高的数据库延迟,池中出现死连接,识别死连接,建立新连接,验证它需要的时间超过你给出的1秒游泳池。
答案 2 :(得分:0)
您可以尝试将数据源更改为: org.springframework.jdbc.datasource.DriverManagerDataSource
最好使用JBoss配置数据源并执行Java EE-jndi查找。 http://techdive.in/spring/spring-jndi-datasource-configuration-jboss