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

Scott Marlow (Commented) (JIRA) jira-events at lists.jboss.org
Wed Nov 9 21:19:45 EST 2011


    [ https://issues.jboss.org/browse/AS7-2562?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12641613#comment-12641613 ] 

Scott Marlow commented on AS7-2562:
-----------------------------------

Next time, please open a forum thread for discussion.  This does seem like some type of bug, but that isn't clear yet.  forum thread link is http://community.jboss.org/community/jbossas/post!input.jspa?containerType=14&container=2279

Could you attach the server.log, that should be easier to read.  Might also need to enable TRACE logging (it will be very noisy to have trace for everything but we can grep or search through the log...).

Lets try to pull some facts out of the exception and go from there.

1.  I see this little nugget of information in the exception.  xaResource=org.jboss.jca.core.tx.jbossts.LocalXAResourceImpl

LocalXAResourceImpl appears to be a XA wrapper for a non-XA datasource.  Since non-XA datasources only support one phase (commit is supported but not prepare).  Most transaction managers support enlisting a non-xa datasource and arrange for its prepare method to be called at the end of the second phase.  The limitation is that only one non-xa datasource can be enrolled.  This must be for the non-xa datasource in your application.  But, is the other datasource XA?  

This might require the super hero strength of Byteman to unwravel!    http://community.jboss.org/wiki/ABytemanTutorial

Lets hope the trace enabled server.log contains more information.
                
> 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: Scott Marlow
>         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