Causés par: java.sql.SQLException: la Connexion n'est pas associée à une gestion de la connexion.org.jboss.de la ressource.ada
J'ai une application avec Jboss Seam, Hibernate et h2. J'ai écrit un geste simple pour l'importation des données dans la base de données à partir d'un fichier externe.
@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();
}
Qu'il fonctionne comme prévu pour le nombre, cependant, à un certain moment, j'obtiens l'exception suivante:
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
OriginalL'auteur user2266685 | 2013-04-10
Vous devez vous connecter pour publier un commentaire.
Cette erreur signifie que votre code à l'aide d'une connexion qui n'est plus valide (c'est à dire. fermé/détruit connexion en raison d'une erreur de branchement ou de connexion non valide cache de l'application lorsque la mise en cache de connexion est fermée par un autre morceau de code en amont). Dans votre cas, l'id de connexion de la piscine est
@3c4b0529
. Donc, vous pouvez vous référer à la TRACE le niveau de journalisation pour voir si vous pouvez trouver la raison pour laquelle la connexion a été fermée (en raison d'une erreur comme DB tué connexion ou des problèmes de réseau ou de l'application du code de la manipulation de la connexion incorrecte).Vous devrait optimiser votre code pour ne pas prendre aussi longtemps pour la transaction. L'autre option est d'augmenter le délai d'expiration de transaction dans
deploy/transaction-jboss-beans.xml
pour laTransactionManager
haricot:-....
300
....
La valeur par défaut est de 5 minutes (300 secondes). L'augmentation de ce délai d'expiration de transaction peut aider mais ce n'est pas réellement résoudre la cause du problème, qui est le long de l'exécution des opérations que vous avez dans votre application. Un effet secondaire d'augmenter le délai d'expiration de transaction, c'est que vous êtes en gardant les ressources sont plus si il a des impacts négatifs sur la performance des autres services dans JBoss.
J'espère que vous ne prévoyez pas d'utiliser
h2
dans la production.h2
n'est pas conçu pour une utilisation en production pour la persistance.Vous devriez également vérifier vos paramètres de source de données pour s'assurer que vous
idle-timeout-minutes
n'est pas désactivé (0). La valeur par défaut est de 15 minutes, vous pouvez l'augmenter si vos connexions sont en cours d'inactivité entre les transactions pour les plus de cette période.Enfin, assurez-vous de ne pas mettre en cache toutes les données de connexion à la source des objets ou des états où vous pouvez tenir un état de connexion ou d'une déclaration pour trop longtemps.
Avez-vous fait voir les opérations d'expirer importe où? J'ai discuté de 3 solutions possibles. Selon la façon dont vous codées et configuré votre application de la solution varie.
Non, je ne l'ai pas vu le timing, mais quand je réduire numbebr de dossiers à importer tout semble bien fonctionner.
Qui me dit que votre transaction est le moment ou vous peut être mise en cache de votre connexion ou d'une instruction préparée objets dans votre code au lieu de l'obtenir à partir d'un pool de connexion à JBoss.
Voir stackoverflow.com/a/43379662/274677 pour une autre explication possible qui n'a aucun rapport avec les délais de connexion. Apparemment, tous les types d'erreurs (pas seulement les délais d'attente) pouvez placer vos objets de connexion dans un tel état que cette exception peut être rencontré lorsque par la suite essayer de faire quelque chose de connexion (tout à fait probable dans le cadre de la gestion des exceptions code lui-même comme ce fut le cas dans la réponse).
OriginalL'auteur CoolBeans
Récemment, j'ai été face à un même problème, après le débogage c'-je comprendre que j'ai été la fermeture de la connexion avant de m'exécuter une Instruction, assurez-vous que votre connexion est toujours OUVERTE et VALIDE.
OriginalL'auteur user2167877