Jump to content
We've recently updated our Privacy Statement, available here ×
  • How to: fix exception java.sql.SQLException: Already closed.


    akonkin
    • Features: Data Sources, JasperReports Server Version: v5.6.1 Product: JasperReports® Server

    Problem Statement:

    When we add some columns in the AdHoc Report , application throws the error "already closed" with no more information given.


    Solution Explanation:

    This error appears randomly and disappears without doing anything in the same session.

    For example, I try to insert an object three times with an error, and the fourth time it works fine.

    Quoting the stack trace from jasperserver.log file that was related to this behavior:

    2014-10-02 20:06:48,831 ERROR BaseJdbcDataSource,http-apr-8080-exec-3:62 - Error closing connection.
    java.sql.SQLException: Already closed.
    at org.apache.commons.dbcp.PoolableConnection.close(PoolableConnection.java:77)
    at org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.close(PoolingDataSource.java:180)
    at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.BaseJdbcDataSource.closeConnection(BaseJdbcDataSource.java:57)
    at com.jaspersoft.commons.semantic.impl.DataSourceResolverImpl.closeDataSourceServices(DataSourceResolverImpl.java:88)
    at com.jaspersoft.ji.adhoc.strategy.CommonDomainDataStrategy.getWorkingDataSet(CommonDomainDataStrategy.java:1164)
    

    This problem was related to the incorrect configuration of JasperReports Server (and all other JNDI’s) in this environment.

    Quoting the incorrect configuration:

    <Resource name="jdbc/jasperserver"
              auth="Container"
              type="javax.sql.DataSource"
              maxActive="100"
              maxIdle="30"
              maxWait="10000"
              username="postgres"
              password="postgres"
              driverClassName="org.postgresql.Driver"
              accessToUnderlyingConnectionAllowed="true"
              testOnBorrow="true"
              url="jdbc:postgresql://localhost:5432/jasperserver"
              factory="com.jaspersoft.jasperserver.tomcat.jndi.JSBasicDataSourceFactory" />
    

    and the default configuration:

    <Resource name="jdbc/jasperserver"
              auth="Container"
              type="javax.sql.DataSource"
              maxActive="100"
              maxIdle="30"
              maxWait="10000"
              username="jasperdb"
              password="password"
              driverClassName="org.postgresql.Driver"
              validationQuery="SELECT 1"
              testOnBorrow="true"
              url="jdbc:postgresql://127.0.0.1:5432/jasperserver?useUnicode=true&amp;characterEncoding=UTF-8&amp;autoReconnect=true&amp;autoReconnectForPools=true"
              factory="com.jaspersoft.jasperserver.tomcat.jndi.JSBasicDataSourceFactory" />
    

    Please use the recommended settings to avoid such behavior.


    User Feedback

    Recommended Comments



    Guest
    This is now closed for further comments

×
×
  • Create New...