user6742120
user6742120

Reputation: 175

Connection has already been closed.; nested exception is java.sql.SQLException: Connection has already been closed

Tomcat 8

<bean id="dataSource" class="org.apache.tomcat.jdbc.pool.DataSource"
    destroy-method="close">      
    <property name="driverClassName" value="com.mysql.cj.jdbc.Driver" />
    <property name="url" value="${database.url}" />
    <property name="username" value="${database.username}" />
    <property name="password" value="${database.password}" />        
    <property name="initialSize" value="10" />
    <property name="maxActive" value="200" />
    <property name="minIdle" value="10" />
    <property name="maxIdle" value="50" />
    <property name="maxWait" value="50000" />
    <property name="fairQueue" value="true" />
    <property name="logAbandoned" value="true" />
    <property name="removeAbandoned" value="true" />    
    <property name="testOnBorrow" value="true" />
    <property name="timeBetweenEvictionRunsMillis" value="60000" />
    <property name="validationQuery" value="${database.validationQuery}" />
</bean>

App is running on tomcat 8 and starts giving the error after 15 20 mins

SQL state [null]; error code [0]; Connection has already been closed.; nested exception is java.sql.SQLException: Connection has already been closed. at org.springframework.jdbc.core.JdbcTemplate.translateException(JdbcTemplate.java:1542) at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:667) at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:713) at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:738) at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:794) at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.query(NamedParameterJdbcTemplate.java:209) at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.queryForList(NamedParameterJdbcTemplate.java:303) at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.queryForList(NamedParameterJdbcTemplate.java:310)

Upvotes: 0

Views: 2232

Answers (2)

user6742120
user6742120

Reputation: 175

removed this <property name="removeAbandoned" value="true" /> after change app is working fine

Upvotes: 2

Chathura Liyanage
Chathura Liyanage

Reputation: 1

Increase the value of removeAbandonedTimeOut in tomcat-resources.xml so that it is set to the longest running query the application may have.

Upvotes: 0

Related Questions