DB连接断开后Spring服务停止运行

时间:2011-08-08 20:15:44

标签: spring cxf jdbctemplate

我有一个部署在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>

非常感谢您的帮助。

3 个答案:

答案 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