Tags: aborted, beta, cant, commit, error, isjavax, java, jboss, message, netbean, rollbackexception, state, tools, transaction

Can't commit because the transaction is in aborted state

On Java Studio » Java Development Tools

17,931 words with 7 Comments; publish: Tue, 15 Jul 2008 17:41:00 GMT; (15058.59, « »)

should I use JBoss 5.0 beta 4? (but netbean 5.5.1 don't support it!!)

the whole error message is

javax.transaction.RollbackException: [com.arjuna.ats.internal.jta.transaction.arjunacore.commitwhenaborted] [com.arjuna.ats.internal.jta.transaction.arjunacore.commitwhenaborted] Can't commit because the transaction is in aborted state

I am using EJB3 Container-Managerd Entity Managers.

NetBean 5.5.1 JBOSS 4.2.2GA

the following is some segment of my stateless session bean

.javatools.developerfaqs.com.PersistenceContext

private EntityManager em;

.javatools.developerfaqs.com.TransactionAttribute(TransactionAttributeType.REQUIRED)

public void createItem (String itcode, String ituom, double itcost, double itsrp, double itwhbal, String expired){

Item item = new Item(itcode, ituom, itcost, itsrp, itwhbal, expired) ;

em.persist(item);

}

I intentionally add a duplicate key in itcode (the primary key field), but the error message is

javax.transaction.RollbackException: [com.arjuna.ats.internal.jta.transaction.arjunacore.commitwhenaborted] [com.arjuna.ats.internal.jta.transaction.arjunacore.commitwhenaborted] Can't commit because the transaction is in aborted state

why the transaction is in aborted state?

how to fix it?

also, is it related to JBOSS server problem?

All Comments

Leave a comment...

  • 7 Comments
    • Was there an exception thrown earlier in the processing of the request? That would cause the transaction to be marked aborted.

      Considering the number of issues 5.0.0.Beta4 has, I would not use it at this point. You would just be adding to your headaches.

      #1; Tue, 15 Jul 2008 17:43:00 GMT
    • no, the only exception is duplicate primary key, that is the statement em.persist(item);

      JBOSS 5.0 beta 4 has many bugs? I have not used it yet.

      #2; Tue, 15 Jul 2008 17:44:00 GMT
    • Please post the full exception stack trace.

      5.0.0.Beta4 has quite a few deployer issues, and there are some things that are no longer working (the binding service, class scoping).

      #3; Tue, 15 Jul 2008 17:45:00 GMT
    • the full stack trace is as follows:

      14:07:59,515 WARN [JDBCExceptionReporter] SQL Error: 1062, SQLState: 23000

      14:07:59,515 ERROR [JDBCExceptionReporter] Duplicate entry '5' for key 1

      14:07:59,515 ERROR [AbstractFlushingEventListener] Could not synchronize database state with session

      org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update

      at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:71)

      at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)

      at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:253)

      at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:237)

      at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:141)

      at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)

      at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)

      at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)

      at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)

      at org.hibernate.ejb.AbstractEntityManagerImpl$1.beforeCompletion(AbstractEntityManagerImpl.java:515)

      at com.arjuna.ats.internal.jta.resources.arjunacore.SynchronizationImple.beforeCompletion(SynchronizationImple.java:114)

      at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.beforeCompletion(TwoPhaseCoordinator.java:247)

      at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.end(TwoPhaseCoordinator.java:86)

      at com.arjuna.ats.arjuna.AtomicAction.commit(AtomicAction.java:177)

      at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1389)

      at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.commit(BaseTransaction.java:135)

      at com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.commit(BaseTransactionManagerDelegate.java:87)

      at org.jboss.aspects.tx.TxPolicy.endTransaction(TxPolicy.java:175)

      at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:87)

      at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:191)

      at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)

      at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:95)

      at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)

      at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:62)

      at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)

      at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:77)

      at org.jboss.ejb3.security.Ejb3AuthenticationInterceptor.invoke(Ejb3AuthenticationInterceptor.java:110)

      at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)

      at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:46)

      at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)

      at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106)

      at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)

      at org.jboss.ejb3.stateless.StatelessContainer.dynamicInvoke(StatelessContainer.java:304)

      at org.jboss.ejb3.remoting.IsLocalInterceptor.invokeLocal(IsLocalInterceptor.java:81)

      at org.jboss.ejb3.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.java:72)

      at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)

      at org.jboss.ejb3.stateless.StatelessRemoteProxy.invoke(StatelessRemoteProxy.java:107)

      at $Proxy118.createItem(Unknown Source)

      at hk.com.yahoo.web.ItemWeb.processRequest(ItemWeb.java:39)

      at hk.com.yahoo.web.ItemWeb.doPost(ItemWeb.java:90)

      at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)

      at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

      at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:654)

      at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:557)

      at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:481)

      at org.apache.jsp.addItem_jsp._jspService(addItem_jsp.java:108)

      at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)

      at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

      at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:373)

      at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:336)

      at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)

      at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

      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:230)

      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)

      at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)

      at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:524)

      at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)

      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)

      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)

      at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)

      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)

      at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)

      at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)

      at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)

      at java.lang.Thread.run(Thread.java:619)

      Caused by: java.sql.BatchUpdateException: Duplicate entry '5' for key 1

      at com.mysql.jdbc.ServerPreparedStatement.executeBatch(ServerPreparedStatement.java:652)

      at org.jboss.resource.adapter.jdbc.WrappedStatement.executeBatch(WrappedStatement.java:519)

      at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48)

      at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:246)

      ... 70 more

      14:07:59,906 WARN [arjLoggerI18N] [com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator_2] TwoPhaseCoordinator.beforeCompletion - failed for com.arjuna.ats.internal.jta.resources.arjunacore.SynchronizationImple.javatools.developerfaqs.com.11e8b08

      javax.persistence.EntityExistsException: org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update

      at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:604)

      at org.hibernate.ejb.AbstractEntityManagerImpl$1.beforeCompletion(AbstractEntityManagerImpl.java:524)

      at com.arjuna.ats.internal.jta.resources.arjunacore.SynchronizationImple.beforeCompletion(SynchronizationImple.java:114)

      at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.beforeCompletion(TwoPhaseCoordinator.java:247)

      at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.end(TwoPhaseCoordinator.java:86)

      at com.arjuna.ats.arjuna.AtomicAction.commit(AtomicAction.java:177)

      at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1389)

      at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.commit(BaseTransaction.java:135)

      at com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.commit(BaseTransactionManagerDelegate.java:87)

      at org.jboss.aspects.tx.TxPolicy.endTransaction(TxPolicy.java:175)

      at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:87)

      at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:191)

      at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)

      at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:95)

      at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)

      at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:62)

      at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)

      at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:77)

      at org.jboss.ejb3.security.Ejb3AuthenticationInterceptor.invoke(Ejb3AuthenticationInterceptor.java:110)

      at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)

      at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:46)

      at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)

      at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106)

      at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)

      at org.jboss.ejb3.stateless.StatelessContainer.dynamicInvoke(StatelessContainer.java:304)

      at org.jboss.ejb3.remoting.IsLocalInterceptor.invokeLocal(IsLocalInterceptor.java:81)

      at org.jboss.ejb3.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.java:72)

      at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)

      at org.jboss.ejb3.stateless.StatelessRemoteProxy.invoke(StatelessRemoteProxy.java:107)

      at $Proxy118.createItem(Unknown Source)

      at hk.com.yahoo.web.ItemWeb.processRequest(ItemWeb.java:39)

      at hk.com.yahoo.web.ItemWeb.doPost(ItemWeb.java:90)

      at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)

      at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

      at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:654)

      at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:557)

      at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:481)

      at org.apache.jsp.addItem_jsp._jspService(addItem_jsp.java:108)

      at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)

      at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

      at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:373)

      at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:336)

      at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)

      at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

      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:230)

      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)

      at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)

      at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:524)

      at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)

      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)

      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)

      at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)

      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)

      at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)

      at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)

      at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)

      at java.lang.Thread.run(Thread.java:619)

      Caused by: org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update

      at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:71)

      at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)

      at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:253)

      at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:237)

      at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:141)

      at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)

      at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)

      at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)

      at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)

      at org.hibernate.ejb.AbstractEntityManagerImpl$1.beforeCompletion(AbstractEntityManagerImpl.java:515)

      ... 63 more

      Caused by: java.sql.BatchUpdateException: Duplicate entry '5' for key 1

      at com.mysql.jdbc.ServerPreparedStatement.executeBatch(ServerPreparedStatement.java:652)

      at org.jboss.resource.adapter.jdbc.WrappedStatement.executeBatch(WrappedStatement.java:519)

      at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48)

      at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:246)

      ... 70 more

      #4; Tue, 15 Jul 2008 17:46:00 GMT
    • it is stranged, in IE, I see the error message is

      javax.transaction.RollbackException: [com.arjuna.ats.internal.jta.transaction.arjunacore.commitwhenaborted] [com.arjuna.ats.internal.jta.transaction.arjunacore.commitwhenaborted] Can't commit because the transaction is in aborted state

      but I can't find this statement in the JBOSS exception full stack trace!!

      #5; Tue, 15 Jul 2008 17:47:00 GMT
    • Never use the expection reported in the browser to debug a problem. Usually that exception is very deceptive as to the cause of the problem.

      Based on the full stack trace, the problem is the duplicate key entry, which you acknowledged that you made intentionally. The transaction-related error reported by the browser is probably an artifact of the later handling of the request, after the duplicate key was reported.

      #6; Tue, 15 Jul 2008 17:48:00 GMT
    • code:

      javax.persistence.EntityExistsException: org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update


      Is this a RuntimeException? Does hibernate wrap all the SQLException into RuntimeException? Wouldn't an uncaught RuntimeException thrown to the container mark the transaction to be rollbacked?

      #7; Tue, 15 Jul 2008 17:49:00 GMT