Uploaded image for project: 'Application Server 7'
  1. Application Server 7
  2. AS7-2562

Exception: Could not enlist in transaction on entering meta-aware object. Exception occurs although XADatasource is defined

    XMLWordPrintable

Details

    • Bug
    • Resolution: Won't Do
    • Major
    • None
    • 7.1.0.Alpha1
    • JCA, JPA / Hibernate, Server
    • None
    • Hide

      1. Duplicate the ExampleDS from the default config of standalone.xml, rename the database's and the JNDI-Name
      2. Create an ejb (EJB1) jar that's persistence.xml points to java:jboss/datasources/ExampleDS
      3. Create a second ejb (EJB2) jar that's persistence.xml points to java:jboss/datasources/ExampleDS2
      4. Create a method in EJB2 that uses it's persistence context
      5. Create a method in EJB1 that uses it's persistence context and make a call on the method defined in (4)
      6. Wrap the both modules up in an ear-file
      7. Deploy the ear-file to standalone/deployments
      8. Invoke the method of EJB1
      9. You'll get the exception mentioned above

      Show
      1. Duplicate the ExampleDS from the default config of standalone.xml, rename the database's and the JNDI-Name 2. Create an ejb (EJB1) jar that's persistence.xml points to java:jboss/datasources/ExampleDS 3. Create a second ejb (EJB2) jar that's persistence.xml points to java:jboss/datasources/ExampleDS2 4. Create a method in EJB2 that uses it's persistence context 5. Create a method in EJB1 that uses it's persistence context and make a call on the method defined in (4) 6. Wrap the both modules up in an ear-file 7. Deploy the ear-file to standalone/deployments 8. Invoke the method of EJB1 9. You'll get the exception mentioned above

    Description

      I configured some XA-Datasources in $JBOSS_HOME/standalone/configuration/standalone.xml. Now I tried created an EAR-File with two EJBs in it (Module1.jar / Module2.jar). Both modules define a persistence.xml and point to differed datasources. Now Module2.Ejb2 is injected into Module1.Ejb1. Ejb1 starts the transaction and persists data to the defined datasource. Afterwards (in the same transaction) a transactional method of Ejb2 is called. Ejb2 also persists data to it's datasource. I guess that's why I have to configure a XA-datasource. Unfortunately the container throws an exception if the method of Ejb2 gets called. This snippet we hopefully point out what I tried to explain.

      Module1.Ejb1
      =============
      @Singleton
      @Startup
      public class Ejb1 {
      @PersistenceContext
      EntityManager em;

      @EJB
      Ejb2 ejb2;

      @PostConstruct
      void persistAndLoad()

      { em.persist(new EntityClass(42L, "Lightning")); em.flush(); EntityClass e= em.find(EntityClass.class, 42L); ejb2.doLogging(e + " persisted"); }

      // ...
      }

      Module2.Ejb2
      ============

      @Stateless
      public class Ejb2 {
      @PersistenceContext
      EntityManager em;

      public void doLogging(String s)

      { em.persist(new Ejb2EntityClass(e)); }

      }

      If I deploy the ear-file which includes these two modules. I receive the following exception when the container invokes the method annotated with @PostConstruct.

      471 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-3) MSC00001: Failed to start service jboss.deployment.subunit."thunder-ear.ear"."Thunder-ejb.jar".component.ThunderBean.START: org.jboss.msc.service.StartException in service jboss.deployment.subunit."thunder-ear.ear"."Thunder-ejb.jar".component.ThunderBean.START: Failed to start service
      at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1780) [jboss-msc-1.0.1.GA.jar:1.0.1.GA]
      at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [:1.6.0_26]
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [:1.6.0_26]
      at java.lang.Thread.run(Thread.java:680) [:1.6.0_26]
      Caused by: java.lang.IllegalStateException: Failed to construct component instance
      at org.jboss.as.ee.component.BasicComponent.constructComponentInstance(BasicComponent.java:156)
      at org.jboss.as.ee.component.BasicComponent.createInstance(BasicComponent.java:78)
      at org.jboss.as.ejb3.component.singleton.SingletonComponent.getComponentInstance(SingletonComponent.java:138)
      at org.jboss.as.ejb3.component.singleton.SingletonComponent.start(SingletonComponent.java:151)
      at org.jboss.as.ee.component.ComponentStartService.start(ComponentStartService.java:44)
      at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1824) [jboss-msc-1.0.1.GA.jar:1.0.1.GA]
      at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1759) [jboss-msc-1.0.1.GA.jar:1.0.1.GA]
      ... 3 more
      Caused by: javax.ejb.EJBTransactionRolledbackException: Transaction rolled back
      at org.jboss.as.ejb3.tx.CMTTxInterceptor.handleEndTransactionException(CMTTxInterceptor.java:112)
      at org.jboss.as.ejb3.tx.CMTTxInterceptor.endTransaction(CMTTxInterceptor.java:92)
      at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor.java:220)
      at org.jboss.as.ejb3.tx.CMTTxInterceptor.requiresNew(CMTTxInterceptor.java:323)
      at org.jboss.as.ejb3.tx.SingletonLifecycleCMTTxInterceptor.processInvocation(SingletonLifecycleCMTTxInterceptor.java:56)
      at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
      at org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(CurrentInvocationContextInterceptor.java:41)
      at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
      at org.jboss.as.ee.component.TCCLInterceptor.processInvocation(TCCLInterceptor.java:45)
      at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
      at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)
      at org.jboss.as.ee.component.BasicComponent.constructComponentInstance(BasicComponent.java:154)
      ... 9 more
      Caused by: javax.transaction.RollbackException: Could not commit transaction.
      at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1171)
      at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.commit(BaseTransaction.java:119)
      at com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.commit(BaseTransactionManagerDelegate.java:75)
      at org.jboss.as.ejb3.tx.CMTTxInterceptor.endTransaction(CMTTxInterceptor.java:89)
      ... 19 more
      Caused by: javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: Could not open connection
      at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1353)
      at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1281)
      at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1287)
      at org.hibernate.ejb.AbstractEntityManagerImpl$CallbackExceptionMapperImpl.mapManagedFlushFailure(AbstractEntityManagerImpl.java:1463)
      at org.hibernate.engine.transaction.synchronization.internal.SynchronizationCallbackCoordinatorImpl.beforeCompletion(SynchronizationCallbackCoordinatorImpl.java:109)
      at org.hibernate.engine.transaction.synchronization.internal.RegisteredSynchronization.beforeCompletion(RegisteredSynchronization.java:53)
      at com.arjuna.ats.internal.jta.resources.arjunacore.SynchronizationImple.beforeCompletion(SynchronizationImple.java:97)
      at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.beforeCompletion(TwoPhaseCoordinator.java:274)
      at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.end(TwoPhaseCoordinator.java:94)
      at com.arjuna.ats.arjuna.AtomicAction.commit(AtomicAction.java:159)
      at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1159)
      ... 22 more
      Caused by: org.hibernate.exception.GenericJDBCException: Could not open connection
      at org.hibernate.exception.internal.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:148)
      at org.hibernate.exception.internal.SQLStateConverter.convert(SQLStateConverter.java:136)
      at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125)
      at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110)
      at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:306)
      at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.getConnection(LogicalConnectionImpl.java:169)
      at org.hibernate.engine.jdbc.internal.proxy.ConnectionProxyHandler.extractPhysicalConnection(ConnectionProxyHandler.java:82)
      at org.hibernate.engine.jdbc.internal.proxy.ConnectionProxyHandler.continueInvocation(ConnectionProxyHandler.java:138)
      at org.hibernate.engine.jdbc.internal.proxy.AbstractProxyHandler.invoke(AbstractProxyHandler.java:81)
      at $Proxy20.prepareStatement(Unknown Source) at org.hibernate.engine.jdbc.batch.internal.AbstractBatchImpl.buildBatchStatement(AbstractBatchImpl.java:144)
      at org.hibernate.engine.jdbc.batch.internal.AbstractBatchImpl.getBatchStatement(AbstractBatchImpl.java:127)
      at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2827)
      at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3290)
      at org.hibernate.action.internal.EntityInsertAction.execute(EntityInsertAction.java:80)
      at org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:273)
      at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:265)
      at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:186)
      at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:337)
      at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:50)
      at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1084)
      at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:319)
      at org.hibernate.engine.transaction.synchronization.internal.SynchronizationCallbackCoordinatorImpl.beforeCompletion(SynchronizationCallbackCoordinatorImpl.java:104)
      ... 28 more
      Caused by: java.sql.SQLException: javax.resource.ResourceException: IJ000457: Unchecked throwable in managedConnectionReconnected() cl=org.jboss.jca.core.connectionmanager.listener.TxConnectionListener@1f77497[state=NORMAL managed connection=org.jboss.jca.adapters.jdbc.local.LocalManagedConnection@4528055b connection handles=0 lastUse=1320851513463 trackByTx=false pool=org.jboss.jca.core.connectionmanager.pool.strategy.OnePool@5f0e6817 pool internal context=org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreArrayListManagedConnectionPool@10f946f9 xaResource=org.jboss.jca.core.tx.jbossts.LocalXAResourceImpl@7cec59b txSync=null]
      at org.jboss.jca.adapters.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:137)
      at org.hibernate.ejb.connection.InjectedDataSourceConnectionProvider.getConnection(InjectedDataSourceConnectionProvider.java:67)
      at org.hibernate.internal.AbstractSessionImpl$NonContextualJdbcConnectionAccess.obtainConnection(AbstractSessionImpl.java:276)
      at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:299)
      ... 46 more
      Caused by: javax.resource.ResourceException: IJ000457: Unchecked throwable in managedConnectionReconnected() cl=org.jboss.jca.core.connectionmanager.listener.TxConnectionListener@1f77497[state=NORMAL managed connection=org.jboss.jca.adapters.jdbc.local.LocalManagedConnection@4528055b connection handles=0 lastUse=1320851513463 trackByTx=false pool=org.jboss.jca.core.connectionmanager.pool.strategy.OnePool@5f0e6817 pool internal context=org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreArrayListManagedConnectionPool@10f946f9 xaResource=org.jboss.jca.core.tx.jbossts.LocalXAResourceImpl@7cec59b txSync=null]
      at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.reconnectManagedConnection(AbstractConnectionManager.java:588)
      at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.allocateConnection(AbstractConnectionManager.java:451)
      at org.jboss.jca.adapters.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:129)
      ... 49 more
      Caused by: javax.resource.ResourceException: Could not enlist in transaction on entering meta-aware object
      at org.jboss.jca.core.connectionmanager.tx.TxConnectionManagerImpl.managedConnectionReconnected(TxConnectionManagerImpl.java:430)
      at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.reconnectManagedConnection(AbstractConnectionManager.java:583)
      ... 51 more
      Caused by: javax.transaction.SystemException: IJ000356: Failed to enlist: java.lang.Throwable: Unabled to enlist resource, see the previous warnings. tx=TransactionImple < ac, BasicAction: 0:ffffc0a80257:5ebf8653:4eba95e7:1b status: ActionStatus.ABORT_ONLY >
      at org.jboss.jca.core.connectionmanager.listener.TxConnectionListener$TransactionSynchronization.checkEnlisted(TxConnectionListener.java:552)
      at org.jboss.jca.core.connectionmanager.listener.TxConnectionListener.enlist(TxConnectionListener.java:282)
      at org.jboss.jca.core.connectionmanager.tx.TxConnectionManagerImpl.managedConnectionReconnected(TxConnectionManagerImpl.java:423)
      ... 52 more

      I also tried it on AS7.0.2 and it works so this issue came in later. Unfortunately my problem is a bit more complex than just that because I am depended on a solved issue AS7-2497. That's why I tried the Alpha2

      Attachments

        Activity

          People

            smarlow1@redhat.com Scott Marlow
            jensmander_jira Jens Mander (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: