[jboss-jira] [JBoss JIRA] (AS7-2562) Exception: Could not enlist in transaction on entering meta-aware object. Exception occurs although XADatasource is defined

Jens Mander (Created) (JIRA) jira-events at lists.jboss.org
Wed Nov 9 10:57:46 EST 2011


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

                 Key: AS7-2562
                 URL: https://issues.jboss.org/browse/AS7-2562
             Project: Application Server 7
          Issue Type: Bug
          Components: JCA, JPA / Hibernate, Server
    Affects Versions: 7.1.0.Alpha1
         Environment: MacOS Lion & CentOS 5.5
            Reporter: Jens Mander
            Assignee: Jesper Pedersen


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 at 1f77497[state=NORMAL managed connection=org.jboss.jca.adapters.jdbc.local.LocalManagedConnection at 4528055b connection handles=0 lastUse=1320851513463 trackByTx=false pool=org.jboss.jca.core.connectionmanager.pool.strategy.OnePool at 5f0e6817 pool internal context=org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreArrayListManagedConnectionPool at 10f946f9 xaResource=org.jboss.jca.core.tx.jbossts.LocalXAResourceImpl at 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 at 1f77497[state=NORMAL managed connection=org.jboss.jca.adapters.jdbc.local.LocalManagedConnection at 4528055b connection handles=0 lastUse=1320851513463 trackByTx=false pool=org.jboss.jca.core.connectionmanager.pool.strategy.OnePool at 5f0e6817 pool internal context=org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreArrayListManagedConnectionPool at 10f946f9 xaResource=org.jboss.jca.core.tx.jbossts.LocalXAResourceImpl at 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

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the jboss-jira mailing list