java.sql.SQLException:连接已关闭
我们得到了java.sql.SQLException:连接已关闭,java,postgresql,tomcat,jndi,Java,Postgresql,Tomcat,Jndi,我们得到了java.sql.SQLException:连接已经关闭。执行事务时出现间歇性异常。我们正在使用Tomcat7.X,下面是配置 <Context docBase="ROOT" reloadable="true" antiJARLocking="true"> <Resource name="jdbc/DS" au
java.sql.SQLException
:连接已经关闭。执行事务时出现间歇性异常。我们正在使用Tomcat7.X,下面是配置
<Context docBase="ROOT" reloadable="true" antiJARLocking="true">
<Resource
name="jdbc/DS"
auth="Container"
type="javax.sql.DataSource"
driverClassName="org.postgresql.Driver"
url="jdbc:postgresql://XXXXXXX"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
username="XXXXXX"
password="XXXXXX"
maxActive="20"
maxIdle="3"
minIdle="3"
maxWait="10000"
removeAbandoned="true"/>
</Context>
这里可能缺少导致问题的某些配置或属性
请建议解决此问题的方法或帮助查找根本原因。以下配置适合我
<Context context="ROOT" debug="0" reloadable="false" useHttpOnly="true" cacheMaxSize="40960" cacheTTL="60000" cachingAllowed="true" antiJARLocking="true">
<Resource name="XYZ" auth="Container"
description="Exchange DB Connection"
dataSourceClassName="org.postgresql.ds.PGSimpleDataSource"
dataSource.serverName="XXXXX"
dataSource.databaseName="XXXX"
dataSource.portNumber="XXXX"
dataSource.user="xyz"
dataSource.password="xyz"
maximumPoolSize="20"
minimumIdle="5"
connectionTimeout="300000"
factory="com.zaxxer.hikari.HikariJNDIFactory"
registerMbeans="true"
type="javax.sql.DataSource" />
这里的键值是connectionTimeout。
您当前使用的工厂有一个默认超时,在此之后它将强制关闭会话
上面的连接超时值对我有效,对于您的应用程序场景,您必须进行一些实验才能获得正确的值。添加以下值:
removeAbandonedTimeout="600"
这是在批量数据中发生的还是在少量数据中也发生的?这是在我们处理一些批量数据时发生的。如果RemoveBandoned=“true”,则有效,以秒为单位,默认值为60,以了解这是怎么回事: