[
https://issues.jboss.org/browse/AS7-2562?page=com.atlassian.jira.plugin.s...
]
Scott Marlow commented on AS7-2562:
-----------------------------------
Regarding the attached example, I'm pretty sure that both datasources, would be
non-XA, which would not work correctly.
If both of your datasources are non-xa, lets talk about getting XA out of this picture and
perhaps using a single datasource. I assume that's not the case but if it is, a much
easier issue to solve.
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@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
--
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