Caused by: java.sql.SQLException: Connection is not associated with a managed connection.org.jboss.resource.ada
Asked Answered
V

3

10

I have an application with Jboss, Seam, Hibernate and h2. I wrote a simple action for importing data to the database from an external file.

@Name("importAction")
@AutoCreate
@Scope(ScopeType.CONVERSATION)
@Transactional
public class ImportCosAction extends AbstractAction {

saveOrUpdate(member);

protected void saveOrUpdate(AbstractEntity entity) {
    final Session session = getSession();
        session.saveOrUpdate(entity);
    flushSession();
}

It works as expected for number, however, at some point I get the following exception:

16:50:13,558 ERROR [JDBCExceptionReporter] Connection is not associated with a managed connection.org.jboss.resource.adapter.jdbc.jdk5.WrappedConnectionJDK5@3c4b0529
16:50:13,558 ERROR [AbstractFlushingEventListener] Could not synchronize database state with session
org.hibernate.exception.GenericJDBCException: Could not execute JDBC batch update
        at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:126)
        at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:114)
        at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
        at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:275)
        at org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.java:114)
        at org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.java:109)
        at org.hibernate.jdbc.AbstractBatcher.prepareBatchStatement(AbstractBatcher.java:244)
        at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2252)
        at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2688)
        at org.hibernate.action.EntityInsertAction.execute(EntityInsertAction.java:79)
        at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:279)
        at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:263)
        at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:167)
        at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
        at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:50)
        at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1027)
        at org.jboss.seam.persistence.HibernateSessionProxy.flush(HibernateSessionProxy.java:187)
        at com.capecapital.dealmarket.usecase.AbstractAction.flushSession(AbstractAction.java:434)
        at com.capecapital.dealmarket.usecase.registration.AbstractRegistrationAction.createNewAccount(AbstractRegistrationAction.java:251)
        at com.capecapital.dealmarket.usecase.registration.RegistrationAction.primRegister(RegistrationAction.java:71)
        at com.capecapital.dealmarket.usecase.registration.AbstractRegistrationAction.register(AbstractRegistrationAction.java:146)
        at com.capecapital.dealmarket.usecase.importCoS.ImportCosAction.register(ImportCosAction.java:401)
        at com.capecapital.dealmarket.usecase.importCoS.ImportCosAction.execute(ImportCosAction.java:154)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.jboss.seam.util.Reflections.invoke(Reflections.java:22)
        at org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocationContext.java:32)
        at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:56)
        at org.jboss.seam.transaction.RollbackInterceptor.aroundInvoke(RollbackInterceptor.java:28)
        at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
        at org.jboss.seam.transaction.TransactionInterceptor$1.work(TransactionInterceptor.java:97)
        at org.jboss.seam.util.Work.workInTransaction(Work.java:47)
        at org.jboss.seam.transaction.TransactionInterceptor.aroundInvoke(TransactionInterceptor.java:91)
        at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
        at org.jboss.seam.core.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:44)
        at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
        at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:107)
        at org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(JavaBeanInterceptor.java:185)
        at org.jboss.seam.intercept.JavaBeanInterceptor.invoke(JavaBeanInterceptor.java:103)
        at com.capecapital.dealmarket.usecase.importCoS.ImportCosAction_$$_javassist_seam_18.execute(ImportCosAction_$$_javassist_seam_18.java)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.jboss.el.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:335)
        at org.jboss.el.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:280)
        at org.jboss.el.parser.AstMethodSuffix.getValue(AstMethodSuffix.java:59)
        at org.jboss.el.parser.AstMethodSuffix.invoke(AstMethodSuffix.java:65)
        at org.jboss.el.parser.AstValue.invoke(AstValue.java:96)
        at org.jboss.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
        at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:68)
        at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
        at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
        at javax.faces.component.UICommand.broadcast(UICommand.java:387)
        at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:329)
        at org.ajax4jsf.component.AjaxViewRoot.broadcastEventsForPhase(AjaxViewRoot.java:304)
        at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:261)
        at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:474)
        at org.openfaces.ajax.richfaces.A4JAjaxViewRoot.access$301(A4JAjaxViewRoot.java:28)
        at org.openfaces.ajax.richfaces.A4JAjaxViewRoot$1.parentProcessApplication(A4JAjaxViewRoot.java:51)
        at org.openfaces.ajax.CommonAjaxViewRoot.processApplication(CommonAjaxViewRoot.java:197)
        at org.openfaces.ajax.richfaces.A4JAjaxViewRoot.processApplication(A4JAjaxViewRoot.java:112)
        at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
        at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
        at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.openfaces.util.ResourceFilter.doFilter(ResourceFilter.java:99)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
        at org.jboss.seam.web.RewriteFilter.doFilter(RewriteFilter.java:63)
        at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
        at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
        at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
        at com.capecapital.dealmarket.filter.UserAgentFilter.doFilter(UserAgentFilter.java:46)
        at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
        at org.jboss.seam.web.IdentityFilter.doFilter(IdentityFilter.java:40)
        at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
        at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:90)
        at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
        at com.capecapital.dealmarket.filter.DealmarketExceptionFilter.doFilter(DealmarketExceptionFilter.java:72)
        at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
        at org.jboss.seam.web.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:42)
        at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
        at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:206)
        at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
        at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
        at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
        at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:56)
        at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
        at com.capecapital.dealmarket.filter.RequestLoggingFilter.doFilter(RequestLoggingFilter.java:90)
        at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
        at org.jboss.seam.web.HotDeployFilter.doFilter(HotDeployFilter.java:53)
        at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
        at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:60)
        at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
        at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433)
        at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92)
        at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)
        at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:598)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
        at java.lang.Thread.run(Thread.java:662)
Caused by: java.sql.SQLException: Connection is not associated with a managed connection.org.jboss.resource.adapter.jdbc.jdk5.WrappedConnectionJDK5@3c4b0529
        at org.jboss.resource.adapter.jdbc.WrappedConnection.lock(WrappedConnection.java:81)
        at org.jboss.resource.adapter.jdbc.WrappedStatement.lock(WrappedStatement.java:64)
        at org.jboss.resource.adapter.jdbc.WrappedStatement.executeBatch(WrappedStatement.java:767)
        at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70)
        at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268)
        ... 117 more
Virgate answered 10/4, 2013 at 15:3 Comment(0)
R
9

This error means that your code is using a connection that is no longer valid (ie. closed/destroyed connection due to a connection error or invalid connection cache by the application where the cached connection is closed by some other piece of code upstream). In your case the connection id from the pool is @3c4b0529. So you can refer to this in the TRACE level logging to see if you can find out why the connection was closed (due to some error like DB killed connection or network issues or application code handling the connection incorrectly).

  1. You should optimize your code to not take as long for the transaction to complete. The other option is to increase the transaction time out in deploy/transaction-jboss-beans.xml for the TransactionManager bean:-

    .... 300 ....

    The default value is 5 minutes (300 seconds). Increasing this transaction time out might help but this does not actually solve the root cause, which is the long running transactions that you have in your application. A side effect of increasing the transaction time out is that you are keeping resources longer so it negatively impacts performance of other services in JBoss.

I hope you are not planning to use h2 in production. h2 is not meant for production use for persistence.

  1. You should also check your data source settings to ensure that you idle-timeout-minutes is not disabled (set to 0). The default is 15 minutes, you can increase it if your connections are being idle between transactions for longer than that period.

  2. Lastly, make sure you are not caching any data source connection objects or statements where you may be holding on to a stale connection or a statement for too long.

Roanne answered 10/4, 2013 at 18:12 Comment(5)
Thank you for responding. Unfortunately increasing the timeout didn't solve the problem..Virgate
Did you actually see transactions timing out any where? I discussed 3 possible solutions. Depending on how you coded and configured your application the solution will vary.Roanne
No, I didn't see it timing out, but when I reduce numbebr of records to import everything seems to work fine.Virgate
That tells me your transaction is timing out or you may be caching your connection or prepared statement objects in your code instead of getting it from connection pool in JBoss.Roanne
See https://mcmap.net/q/1165953/-connection-is-not-associated-with-a-managed-connection-org-jboss-resource-adapter-jdbc-jdk6-wrappedconnectionjdk6 for another possible explanation that's unrelated to connection timeouts. Apparently all kinds of errors (not just timeouts) may place your connection objects in such a state that this exception may be encountered when subsequently trying to do something with that connection (quite likely as part of the exception-handling code itself as was the case in the linked answer).Sabelle
F
1

Recently I was facing same problem, after debugging it I figure out that I was closing the connection before I execute a Statement, make sure your connection is still OPEN and VALID.

Flivver answered 17/2, 2018 at 3:36 Comment(0)
A
0

I've had the same issue. The problem in my case was that I tried calling commit or rollback on a connection that only performed read operations.

Apothegm answered 8/7, 2021 at 13:48 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.