[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 (Updated) (JIRA) jira-events at lists.jboss.org
Wed Nov 9 10:59:45 EST 2011


     [ https://issues.jboss.org/browse/AS7-2562?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jens Mander updated AS7-2562:
-----------------------------

    Attachment: Thunder.tar.gz


Here comes a little example which will allow to reproduce the error
                
> 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
>         Attachments: Thunder.tar.gz
>
>
> 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