Note that there are some explanatory texts on larger screens.

plurals
  1. POClosed connection while opening a new one in Hibernate 3.6.10.Final + c3p0 + struts2
    primarykey
    data
    text
    <p>I'm experiencing a problem using hibernate 3.6.10.Final. My project uses struts2+hibernate, and I create persistent requests using</p> <pre><code> &lt;dependency&gt; &lt;groupId&gt;com.googlecode.s2hibernate&lt;/groupId&gt; &lt;artifactId&gt;struts2-fullhibernatecore-plugin&lt;/artifactId&gt; &lt;version&gt;2.2.2-GA&lt;/version&gt; &lt;/dependency&gt; </code></pre> <p>I must use standard hibernate session within interceptor for login purposes or when I generate long term thread that stop to work after the end of the request.</p> <p>I have no problem with struts2-fullhibernatecore-plugin generated session while I receive strange exception when I try to generate simple transaction within interceptor or separated thread that can't use standard struts2-fullhibernatecore-plugin logic.</p> <p>One piece of code that gives me problem is this contained in the interceptor</p> <pre><code>public String intercept(ActionInvocation invocation) throws Exception { ... bla bla ... userManager.setSession(HibernateUtil.getSessionFactory().openSession()); logger.info("Session status "+ userManager.getSession().isOpen() +" " +userManager.getSession().isDirty()); userManager.setTransaction(userManager.getSession().beginTransaction()); ... </code></pre> <p>I close this session when I stop to use it</p> <p>My code explodes when I try to generate the transaction </p> <pre><code> 2013-11-21 07:11:09,470 ajp-bio-8009-exec-2 ERROR (org.apache.struts2.dispatcher.Dispatcher:38) - Exception occurred during processing request: Cannot open connection org.hibernate.exception.GenericJDBCException: Cannot open connection at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:140) at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:128) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:52) at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:449) at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167) at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:142) at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:85) at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1463) at videoshare.interceptor.usermanager.PossibleLoginIterceptor.intercept(PossibleLoginIterceptor.java:49) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54) at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:563) at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77) at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:200) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) at java.lang.Thread.run(Thread.java:662) Caused by: java.sql.SQLException: com.mchange.v2.c3p0.PoolBackedDataSource@1638fbc [ connectionPoolDataSource -&gt; com.mchange.v2.c3p0.WrapperConnectionPoolDataSource@a01f8a5c [ acquireIncrement -&gt; 3, acquireRetryAttempts -&gt; 30, acquireRetryDelay -&gt; 1000, autoCommitOnClose -&gt; false, automaticTestTable -&gt; null, breakAfterAcquireFailure -&gt; false, checkoutTimeout -&gt; 0, connectionCustomizerClassName -&gt; null, connectionTesterClassName -&gt; com.mchange.v2.c3p0.impl.DefaultConnectionTester, debugUnreturnedConnectionStackTraces -&gt; false, factoryClassLocation -&gt; null, forceIgnoreUnresolvedTransactions -&gt; false, identityToken -&gt; z8kfsx8yxnfxily93r0u|f04d94, idleConnectionTestPeriod -&gt; 100, initialPoolSize -&gt; 10, maxAdministrativeTaskTime -&gt; 0, maxConnectionAge -&gt; 0, maxIdleTime -&gt; 100, maxIdleTimeExcessConnections -&gt; 0, maxPoolSize -&gt; 100, maxStatements -&gt; 10, maxStatementsPerConnection -&gt; 0, minPoolSize -&gt; 10, nestedDataSource -&gt; com.mchange.v2.c3p0.DriverManagerDataSource@f2778985 [ description -&gt; null, driverClass -&gt; null, factoryClassLocation -&gt; null, identityToken -&gt; z8kfsx8yxnfxily93r0u|4f7bc2, jdbcUrl -&gt; jdbc:mysql://localhost/youcabaret, properties -&gt; {user=******, password=******} ], preferredTestQuery -&gt; null, propertyCycle -&gt; 0, testConnectionOnCheckin -&gt; false, testConnectionOnCheckout -&gt; true, unreturnedConnectionTimeout -&gt; 0, usesTraditionalReflectiveProxies -&gt; false; userOverrides: {} ], dataSourceName -&gt; null, factoryClassLocation -&gt; null, identityToken -&gt; z8kfsx8yxnfxily93r0u|1aaf64d, numHelperThreads -&gt; 3 ] has been closed() -- you can no longer use it. at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.assertCpds(AbstractPoolBackedDataSource.java:447) at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getPoolManager(AbstractPoolBackedDataSource.java:459) at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getConnection(AbstractPoolBackedDataSource.java:128) at org.hibernate.connection.C3P0ConnectionProvider.getConnection(C3P0ConnectionProvider.java:78) at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446) ... 26 more 2013-11-21 07:11:24,870 ajp-bio-8009-exec-2 ERROR (org.apache.struts2.dispatcher.Dispatcher:38) - Exception occurred during processing request: Cannot open connection org.hibernate.exception.GenericJDBCException: Cannot open connection at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:140) at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:128) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:52) at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:449) at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167) at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:142) at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:85) at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1463) at videoshare.interceptor.usermanager.PossibleLoginIterceptor.intercept(PossibleLoginIterceptor.java:49) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54) at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:563) at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77) at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:200) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) at java.lang.Thread.run(Thread.java:662) Caused by: java.sql.SQLException: com.mchange.v2.c3p0.PoolBackedDataSource@1638fbc [ connectionPoolDataSource -&gt; com.mchange.v2.c3p0.WrapperConnectionPoolDataSource@a01f8a5c [ acquireIncrement -&gt; 3, acquireRetryAttempts -&gt; 30, acquireRetryDelay -&gt; 1000, autoCommitOnClose -&gt; false, automaticTestTable -&gt; null, breakAfterAcquireFailure -&gt; false, checkoutTimeout -&gt; 0, connectionCustomizerClassName -&gt; null, connectionTesterClassName -&gt; com.mchange.v2.c3p0.impl.DefaultConnectionTester, debugUnreturnedConnectionStackTraces -&gt; false, factoryClassLocation -&gt; null, forceIgnoreUnresolvedTransactions -&gt; false, identityToken -&gt; z8kfsx8yxnfxily93r0u|f04d94, idleConnectionTestPeriod -&gt; 100, initialPoolSize -&gt; 10, maxAdministrativeTaskTime -&gt; 0, maxConnectionAge -&gt; 0, maxIdleTime -&gt; 100, maxIdleTimeExcessConnections -&gt; 0, maxPoolSize -&gt; 100, maxStatements -&gt; 10, maxStatementsPerConnection -&gt; 0, minPoolSize -&gt; 10, nestedDataSource -&gt; com.mchange.v2.c3p0.DriverManagerDataSource@f2778985 [ description -&gt; null, driverClass -&gt; null, factoryClassLocation -&gt; null, identityToken -&gt; z8kfsx8yxnfxily93r0u|4f7bc2, jdbcUrl -&gt; jdbc:mysql://localhost/youcabaret, properties -&gt; user=******, password=******} ], preferredTestQuery -&gt; null, propertyCycle -&gt; 0, testConnectionOnCheckin -&gt; false, testConnectionOnCheckout -&gt; true, unreturnedConnectionTimeout -&gt; 0, usesTraditionalReflectiveProxies -&gt; false; userOverrides: {} ], dataSourceName -&gt; null, factoryClassLocation -&gt; null, identityToken -&gt; z8kfsx8yxnfxily93r0u|1aaf64d, numHelperThreads -&gt; 3 ] has been closed() -- you can no longer use it. at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.assertCpds(AbstractPoolBackedDataSource.java:447) at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getPoolManager(AbstractPoolBackedDataSource.java:459) at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getConnection(AbstractPoolBackedDataSource.java:128) at org.hibernate.connection.C3P0ConnectionProvider.getConnection(C3P0ConnectionProvider.java:78) at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446) ... 26 more </code></pre> <p>and the log says </p> <blockquote> <p>2013-11-21 07:25:13,228 ajp-bio-8009-exec-1 INFO usermanager.PossibleLoginIterceptor intercept - Session status true false so the session seemto be open milliseconds before</p> </blockquote> <p>My hibernate config is</p> <pre><code> &lt;property name="hibernate.connection.url"&gt;jdbc:mysql://localhost/*******&lt;/property&gt; &lt;property name="hibernate.connection.driver_class"&gt;com.mysql.jdbc.Driver&lt;/property&gt; &lt;property name="hibernate.dialect"&gt;org.hibernate.dialect.MySQLDialect&lt;/property&gt; &lt;property name="hibernate.connection.username"&gt;*******&lt;/property&gt; &lt;property name="hibernate.connection.password"&gt;*******&lt;/property&gt; &lt;property name="show_sql"&gt;false&lt;/property&gt; &lt;property name="connection.pool_size"&gt;10&lt;/property&gt; &lt;!-- configuration pool via c3p0--&gt; &lt;property name="c3p0.max_size"&gt;100&lt;/property&gt; &lt;property name="c3p0.max_statements"&gt;10&lt;/property&gt; &lt;property name="c3p0.min_size"&gt;10&lt;/property&gt; &lt;property name="c3p0.idle_test_period"&gt;100&lt;/property&gt;&lt;!-- seconds --&gt; &lt;property name="c3p0.timeout"&gt;100&lt;/property&gt;&lt;!-- seconds --&gt; &lt;property name="c3p0.testConnectionOnCheckout"&gt;true&lt;/property&gt; &lt;property name="hibernate.hbm2ddl.auto"&gt;update&lt;/property&gt; &lt;property name="current_session_context_class"&gt;thread&lt;/property&gt; </code></pre> <p>And I open connection from this Utility class</p> <pre><code>package hibernate.manager; import org.apache.log4j.Logger; import org.hibernate.SessionFactory; import org.hibernate.cfg.AnnotationConfiguration; import videoshare.manager.videomanager.VideoManager; public class HibernateUtil { protected static Logger logger = Logger.getLogger(VideoManager.class .getName()); private static final SessionFactory sessionFactory; static { try { // Create the SessionFactory from hibernate.cfg.xml sessionFactory = new AnnotationConfiguration().configure() .buildSessionFactory(); } catch (Throwable ex) { // Make sure you log the exception, as it might be swallowed logger.error("Initial SessionFactory creation failed." + ex); throw new ExceptionInInitializerError(ex); } } public static SessionFactory getSessionFactory() { return sessionFactory; } } </code></pre> <p>I obtain the same kind of exception with long term threads and sometimes everything goes well.</p> <p>To complete informations I'm using Apache Tomcat/7.0.47 with </p> <blockquote> <p>Java(TM) SE Runtime Environment (build 1.6.0_45-b06)<br/> Java HotSpot(TM) Server VM (build 20.45-b01, mixed mode)</p> </blockquote> <p>but I notice this problem also on other systems, so I think this is a config problem.</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload