My Oracle Support Banner

WebLogic Server JMS Data Source Frequently Fails with BEA-010213 javax.transaction.xa.XAException (Doc ID 1484996.1)

Last updated on DECEMBER 11, 2017

Applies to:

Oracle WebLogic Server - Version 10.3 and later
Information in this document applies to any platform.
***Checked for relevance on 6-Jul-2015***

Symptoms

This issue occurred in a WebLogic Server (WLS) 10.3.5 domain with an Admin server and three managed servers all residing on same physical machine. Over a period of several weeks, one of the managed servers threw the following data source exceptions, and the transactions were rolled back. A whole server restart was required to restore the services.

<Apr 25, 2012 12:30:37 PM EDT> <Info> <EJB> <BEA-010213> <Message-Driven EJB: AsyncDispatcher's transaction was rolled back.
The transaction details are: Xid=BEA1-68816D8ABC69F69ED57A(2046620606),Status=Rolled back.
[Reason=javax.transaction.SystemException: start() failed on resource 'WLStore_GlomApp_cgJMSStore_auto_1': XAER_RMFAIL : Resource manager is unavailable
javax.transaction.xa.XAException: Internal error: XAResource 'WLStore_GlomApp_cgJMSStore_auto_1' is unavailable
  at weblogic.transaction.internal.XAResourceDescriptor.checkResource(XAResourceDescriptor.java:941)
  at weblogic.transaction.internal.XAResourceDescriptor.startResourceUse(XAResourceDescriptor.java:630)
  at weblogic.transaction.internal.XAServerResourceInfo.start(XAServerResourceInfo.java:1182)
  at weblogic.transaction.internal.XAServerResourceInfo.xaStart(XAServerResourceInfo.java:1116)
  at weblogic.transaction.internal.XAServerResourceInfo.enlist(XAServerResourceInfo.java:275)
  at weblogic.transaction.internal.ServerTransactionImpl.enlistResource(ServerTransactionImpl.java:511)
  at weblogic.transaction.internal.ServerTransactionImpl.enlistResource(ServerTransactionImpl.java:438)
  at weblogic.store.gxa.internal.GXAResourceImpl.enlist(GXAResourceImpl.java:442)
  at weblogic.messaging.kernel.internal.KernelImpl.getGXATransaction(KernelImpl.java:536)
  at weblogic.messaging.kernel.internal.QueueImpl.send(QueueImpl.java:313)
  at weblogic.jms.backend.BEDestinationImpl.sendIssueMessage(BEDestinationImpl.java:1858)
  at weblogic.jms.backend.BEDestinationImpl.send(BEDestinationImpl.java:2088)
  at weblogic.jms.backend.BEDestinationImpl.wrappedSend(BEDestinationImpl.java:2031)
  at weblogic.jms.backend.BEDestinationImpl.invoke(BEDestinationImpl.java:1524)

Also, a related exception and WLS errors indicate warning messages from the JTA component - used by JMS - as shown in the following stack dump (note, the stack dump has been truncated). This indicates that a transaction has been rolled back.

<Apr 25, 2012 12:28:59 PM EDT> <Warning> <JTA> <BEA-110484> <The JTA health state has changed from HEALTH_OK to HEALTH_WARN with reason codes: Resource WLStore_GlomApp_cgJMSStore_auto_1 declared unhealthy.>
<Apr 25, 2012 12:28:59 PM EDT> <Warning> <JTA> <BEA-110030> <XA resource [WLStore_GlomApp_cgJMSStore_auto_1] has not responded in the last 120 second(s).>
<Apr 25, 2012 12:29:31 PM EDT> <Info> <WLI-Core> <BEA-489044> <ProcessControl invocation failed
javax.transaction.TransactionRolledbackException: EJB Exception: weblogic.jws.control.SchedulerException: Unable to schedule Service method clientRequest[weblogic.messaging.kernel.KernelException: Error enlisting GXA transaction]
  at com.bea.wli.knex.runtime.core.bean.InvokeScheduler.scheduleRequest(InvokeScheduler.java:370)
  at com.bea.wli.knex.runtime.core.bean.InvokeScheduler.scheduleRequest(InvokeScheduler.java:366)
  at com.bea.wli.knex.runtime.core.bean.InvokeScheduler.scheduleRequest(InvokeScheduler.java:182)
  at com.bea.wli.knex.runtime.core.bean.SyncDispatcherBean.invoke(SyncDispatcherBean.java:151)
  at com.bea.wli.knex.runtime.core.bean.SyncDispatcher_k1mrl8_EOImpl.invoke(SyncDispatcher_k1mrl8_EOImpl.java:62)
  at com.bea.wli.knex.runtime.core.dispatcher.Dispatcher.remoteDispatch(Dispatcher.java:165)
  at com.bea.wli.knex.runtime.core.dispatcher.ServiceHandleImpl.invoke(ServiceHandleImpl.java:460)
  at com.bea.wli.knex.runtime.core.call.JavaCall.invoke(JavaCall.java:56)
  at com.bea.wli.bpm.runtime.SubFlowCall.invoke(SubFlowCall.java:112)
  at com.bea.wli.knex.runtime.core.control.ServiceControlImpl.invoke(ServiceControlImpl.java:1308)
  at com.bea.control.ProcessControlImpl.invoke(ProcessControlImpl.java:825)
  at com.bea.wli.knex.runtime.core.control.ServiceControlImpl.invoke(ServiceControlImpl.java:1175)
  at com.bea.control.ProcessControlImpl.invoke(ProcessControlImpl.java:760)
  at processes.GenericProcessControlBean.clientRequest(GenericProcessControlBean.java:163)
  at sun.reflect.GeneratedMethodAccessor651.invoke(Unknown Source)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  at java.lang.reflect.Method.invoke(Method.java:597)
  at com.bea.wli.knex.runtime.jcs.container.JcsProxy.invokeBeehiveControl(JcsProxy.java:666)
  at com.bea.wli.knex.runtime.jcs.container.JcsProxy.invoke(JcsProxy.java:446)
  at $Proxy136.clientRequest(Unknown Source)
  at processes.ExceptionDispatcher.genericProcessControlClientRequest(ExceptionDispatcher.java:265)
  at sun.reflect.GeneratedMethodAccessor650.invoke(Unknown Source)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  at java.lang.reflect.Method.invoke(Method.java:597)
  at com.bea.wli.bpm.runtime.Perform.invoke(Perform.java:39)
  at com.bea.wli.bpm.runtime.Perform.execute(Perform.java:50)
  at com.bea.wli.bpm.runtime.Receive.messageDelivery(Receive.java:93)
  at com.bea.wli.bpm.runtime.ProcessState.processMessage(ProcessState.java:215)
  at com.bea.wli.bpm.runtime.ProcessState.dispatchRequest(ProcessState.java:239)
  at com.bea.wli.bpm.runtime.JpdContainer.dispatchProcessRequest(JpdContainer.java:1077)
  at com.bea.wli.bpm.runtime.JpdContainer.preInvoke(JpdContainer.java:1041)
  at com.bea.wli.knex.runtime.core.container.Invocable.invoke(Invocable.java:248)
  at com.bea.wli.bpm.runtime.JpdContainer.invoke(JpdContainer.java:814)
  at com.bea.wli.knex.runtime.core.bean.BaseContainerBean.invokeBase(BaseContainerBean.java:224)
  at com.bea.wli.knex.runtime.core.bean.SLSBContainerBean.invoke(SLSBContainerBean.java:136)
  at com.bea.wlwgen.StatelessContainer_2hozgx_ELOImpl.invoke(StatelessContainer_2hozgx_ELOImpl.java:137)
  at com.bea.wlwgen.SLSBContAdpt.invokeOnBean(SLSBContAdpt.java:29)
  at com.bea.wli.knex.runtime.core.bean.BaseDispatcherBean.runAsInvoke(BaseDispatcherBean.java:185)
  at com.bea.wli.knex.runtime.core.bean.BaseDispatcherBean.invoke(BaseDispatcherBean.java:54)
  at com.bea.wli.knex.runtime.core.bean.AsyncDispatcherBean.onMessage(AsyncDispatcherBean.java:259)
  at weblogic.ejb.container.internal.MDListener.execute(MDListener.java:466)
  at weblogic.ejb.container.internal.MDListener.transactionalOnMessage(MDListener.java:371)
  at weblogic.ejb.container.internal.MDListener.onMessage(MDListener.java:327)
  at weblogic.jms.client.JMSSession.onMessage(JMSSession.java:4547)
  at weblogic.jms.client.JMSSession.execute(JMSSession.java:4233)
  at weblogic.jms.client.JMSSession.executeMessage(JMSSession.java:3709)
  at weblogic.jms.client.JMSSession.access$000(JMSSession.java:114)
  at weblogic.jms.client.JMSSession$UseForRunnable.run(JMSSession.java:5058)
  at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:516)
  at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
  at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
Caused by: weblogic.jms.common.JMSException: weblogic.messaging.kernel.KernelException: Error enlisting GXA transaction
......

Changes

The JDBC data source is not configured for transactions.

<jdbc-data-source-params>
  <jndi-name>cgDataSource-nonXA</jndi-name>
  <global-transactions-protocol>None</global-transactions-protocol>
</jdbc-data-source-params>
<jdbc-xa-params></jdbc-xa-params>

The JDBC data source cannot be configured for transactions, but will support the Java Transaction API (JTA) with Java Messaging System (JMS). See "Handling JMS Transactions with JDBC Stores".

Also, see "Creating a JDBC Store" where it states:

Note: You cannot specify a JDBC data source that is configured to support global (XA) transactions. Therefore, the specified JDBC data source must use a non-XA JDBC driver. In addition, you cannot enable Logging Last Resource or Emulate Two-Phase Commit in the data source. This limitation does not remove the XA capabilities of layered subsystems that use JDBC stores. For example, WebLogic JMS is fully XA-capable regardless of whether it uses a file store or any JDBC store.

Cause

To view full details, sign in with your My Oracle Support account.

Don't have a My Oracle Support account? Click to get started!


In this Document
Symptoms
Changes
Cause
Solution
References


My Oracle Support provides customers with access to over a million knowledge articles and a vibrant support community of peers and Oracle experts.