This bug can be demonstrated using Glassfish 3.0.1 (and the bundled version of
MQ),using a MDB which sends a message.
When the outbound resource is enlisted with the XA transaction, the broker
complains that the XID is unknown. Here is the full stack trace:
WARNING: [I500]: Caught JVM Exception: com.sun.messaging.jms.JMSException:
[START_TRANSACTION_REPLY(45)] [C4036]: A broker error occurred. :[404] Uknown
XID
47422D4E443139353837322D30312C7365727665722C50333730302C0003000000658279E647422D4E443139353837322D30312C7365727665722C5033373030
user=guest, broker=localhost:7676(1688)
WARNING: [I500]: Caught JVM Exception: com.sun.messaging.jms.JMSException:
[START_TRANSACTION_REPLY(45)] [C4036]: A broker error occurred. :[404] Uknown
XID
47422D4E443139353837322D30312C7365727665722C50333730302C0002000000658279E647422D4E443139353837322D30312C7365727665722C5033373030
user=guest, broker=localhost:7676(1688)
INFO: com.sun.messaging.jms.JMSException: [START_TRANSACTION_REPLY(45)] [C4036]:
A broker error occurred. :[404] Uknown XID
47422D4E443139353837322D30312C7365727665722C50333730302C0002000000658279E647422D4E443139353837322D30312C7365727665722C5033373030
user=guest, broker=localhost:7676(1688)
at
com.sun.messaging.jmq.jmsclient.ProtocolHandler.throwServerErrorException(ProtocolHandler.java:4019)
at
com.sun.messaging.jmq.jmsclient.ProtocolHandler.startTransaction(ProtocolHandler.java:2744)
at
com.sun.messaging.jmq.jmsclient.ProtocolHandler.startTransaction(ProtocolHandler.java:2646)
at
com.sun.messaging.jmq.jmsclient.Transaction.startTransaction(Transaction.java:640)
at
com.sun.messaging.jmq.jmsclient.Transaction.startXATransaction(Transaction.java:566)
at
com.sun.messaging.jmq.jmsclient.XAResourceImpl.start(XAResourceImpl.java:863)
at
com.sun.genericra.outbound.XAResourceProxy.start(XAResourceProxy.java:244)
at
com.sun.jts.jta.TransactionState.startAssociation(TransactionState.java:312)
at com.sun.jts.jta.TransactionImpl.enlistResource(TransactionImpl.java:208)
at
com.sun.enterprise.transaction.JavaEETransactionImpl.enlistResource(JavaEETransactionImpl.java:608)
at
com.sun.enterprise.transaction.JavaEETransactionManagerSimplified.enlistXAResource(JavaEETransactionManagerSimplified.java:1247)
at
com.sun.enterprise.transaction.JavaEETransactionManagerSimplified.enlistResource(JavaEETransactionManagerSimplified.java:332)
at
com.sun.enterprise.resource.rm.ResourceManagerImpl.registerResource(ResourceManagerImpl.java:147)
at
com.sun.enterprise.resource.rm.ResourceManagerImpl.enlistResource(ResourceManagerImpl.java:107)
at
com.sun.enterprise.resource.pool.PoolManagerImpl.getResource(PoolManagerImpl.java:191)
at
com.sun.enterprise.connectors.ConnectionManagerImpl.getResource(ConnectionManagerImpl.java:321)
at
com.sun.enterprise.connectors.ConnectionManagerImpl.internalGetConnection(ConnectionManagerImpl.java:290)
at
com.sun.enterprise.connectors.ConnectionManagerImpl.allocateConnection(ConnectionManagerImpl.java:227)
at
com.sun.enterprise.connectors.ConnectionManagerImpl.allocateConnection(ConnectionManagerImpl.java:159)
at
com.sun.enterprise.connectors.ConnectionManagerImpl.allocateConnection(ConnectionManagerImpl.java:154)
at
com.sun.genericra.outbound.ConnectionFactory.createConnection(ConnectionFactory.java:75)
at
com.sun.genericra.outbound.ConnectionFactory.createQueueConnection(ConnectionFactory.java:115)
at
test.stress.queue.redelivery.ejb.SimpleMessageBean.onMessage(SimpleMessageBean.java:97)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1056)
at
org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:1128)
at
com.sun.ejb.containers.BaseContainer.invokeTargetBeanMethod(BaseContainer.java:4087)
at com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:5272)
at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:5252)
at
com.sun.ejb.containers.MessageBeanContainer.deliverMessage(MessageBeanContainer.java:1086)
at
com.sun.ejb.containers.MessageBeanListenerImpl.deliverMessage(MessageBeanListenerImpl.java:76)
at
com.sun.enterprise.connectors.inbound.MessageEndpointInvocationHandler.invoke(MessageEndpointInvocationHandler.java:166)
at $Proxy176.onMessage(Unknown Source)
at
com.sun.genericra.inbound.async.DeliveryHelper.deliverMessage(DeliveryHelper.java:301)
at
com.sun.genericra.inbound.async.DeliveryHelper.deliver(DeliveryHelper.java:196)
at
com.sun.genericra.inbound.async.DeliveryHelper.deliver(DeliveryHelper.java:186)
at
com.sun.genericra.inbound.async.EndpointConsumer.consumeMessage(EndpointConsumer.java:176)
at
com.sun.genericra.inbound.async.MessageListener.onMessage(MessageListener.java:56)
at
com.sun.messaging.jmq.jmsclient.ServerSessionRunner.onMessage(ServerSessionRunner.java:185)
at
com.sun.messaging.jmq.jmsclient.ServerSessionRunner.run(ServerSessionRunner.java:142)
at com.sun.messaging.jmq.jmsclient.SessionImpl.run(SessionImpl.java:3194)
at com.sun.genericra.inbound.async.WorkImpl.run(WorkImpl.java:53)
at com.sun.enterprise.connectors.work.OneWork.doWork(OneWork.java:92)
at
com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.performWork(ThreadPoolImpl.java:492)
at
com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:528)
Caused by: com.sun.messaging.jms.JMSException: [START_TRANSACTION_REPLY(45)]
[C4036]: A broker error occurred. :[404] Uknown XID
47422D4E443139353837322D30312C7365727665722C50333730302C0002000000658279E647422D4E443139353837322D30312C7365727665722C5033373030
user=guest, broker=localhost:7676(1688)
at
com.sun.messaging.jmq.jmsclient.ProtocolHandler.throwServerErrorException(ProtocolHandler.java:4003)
... 47 more
This bug can be demonstrated using Glassfish 3.0.1 (and the bundled version of MQ),using a MDB which sends a message.
When the outbound resource is enlisted with the XA transaction, the broker complains that the XID is unknown. Here is the full stack trace:
WARNING: [I500]: Caught JVM Exception: com.sun.messaging.jms.JMSException: [START_TRANSACTION_REPLY(45)] [C4036]: A broker error occurred. :[404] Uknown XID 47422D4E443139353837322D30312C7365727665722C50333730302C0003000000658279E647422D4E443139353837322D30312C7365727665722C5033373030 user=guest, broker=localhost:7676(1688) WARNING: [I500]: Caught JVM Exception: com.sun.messaging.jms.JMSException: [START_TRANSACTION_REPLY(45)] [C4036]: A broker error occurred. :[404] Uknown XID 47422D4E443139353837322D30312C7365727665722C50333730302C0002000000658279E647422D4E443139353837322D30312C7365727665722C5033373030 user=guest, broker=localhost:7676(1688) INFO: com.sun.messaging.jms.JMSException: [START_TRANSACTION_REPLY(45)] [C4036]: A broker error occurred. :[404] Uknown XID 47422D4E443139353837322D30312C7365727665722C50333730302C0002000000658279E647422D4E443139353837322D30312C7365727665722C5033373030 user=guest, broker=localhost:7676(1688) at com.sun.messaging.jmq.jmsclient.ProtocolHandler.throwServerErrorException(ProtocolHandler.java:4019) at com.sun.messaging.jmq.jmsclient.ProtocolHandler.startTransaction(ProtocolHandler.java:2744) at com.sun.messaging.jmq.jmsclient.ProtocolHandler.startTransaction(ProtocolHandler.java:2646) at com.sun.messaging.jmq.jmsclient.Transaction.startTransaction(Transaction.java:640) at com.sun.messaging.jmq.jmsclient.Transaction.startXATransaction(Transaction.java:566) at com.sun.messaging.jmq.jmsclient.XAResourceImpl.start(XAResourceImpl.java:863) at com.sun.genericra.outbound.XAResourceProxy.start(XAResourceProxy.java:244) at com.sun.jts.jta.TransactionState.startAssociation(TransactionState.java:312) at com.sun.jts.jta.TransactionImpl.enlistResource(TransactionImpl.java:208) at com.sun.enterprise.transaction.JavaEETransactionImpl.enlistResource(JavaEETransactionImpl.java:608) at com.sun.enterprise.transaction.JavaEETransactionManagerSimplified.enlistXAResource(JavaEETransactionManagerSimplified.java:1247) at com.sun.enterprise.transaction.JavaEETransactionManagerSimplified.enlistResource(JavaEETransactionManagerSimplified.java:332) at com.sun.enterprise.resource.rm.ResourceManagerImpl.registerResource(ResourceManagerImpl.java:147) at com.sun.enterprise.resource.rm.ResourceManagerImpl.enlistResource(ResourceManagerImpl.java:107) at com.sun.enterprise.resource.pool.PoolManagerImpl.getResource(PoolManagerImpl.java:191) at com.sun.enterprise.connectors.ConnectionManagerImpl.getResource(ConnectionManagerImpl.java:321) at com.sun.enterprise.connectors.ConnectionManagerImpl.internalGetConnection(ConnectionManagerImpl.java:290) at com.sun.enterprise.connectors.ConnectionManagerImpl.allocateConnection(ConnectionManagerImpl.java:227) at com.sun.enterprise.connectors.ConnectionManagerImpl.allocateConnection(ConnectionManagerImpl.java:159) at com.sun.enterprise.connectors.ConnectionManagerImpl.allocateConnection(ConnectionManagerImpl.java:154) at com.sun.genericra.outbound.ConnectionFactory.createConnection(ConnectionFactory.java:75) at com.sun.genericra.outbound.ConnectionFactory.createQueueConnection(ConnectionFactory.java:115) at test.stress.queue.redelivery.ejb.SimpleMessageBean.onMessage(SimpleMessageBean.java:97) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1056) at org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:1128) at com.sun.ejb.containers.BaseContainer.invokeTargetBeanMethod(BaseContainer.java:4087) at com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:5272) at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:5252) at com.sun.ejb.containers.MessageBeanContainer.deliverMessage(MessageBeanContainer.java:1086) at com.sun.ejb.containers.MessageBeanListenerImpl.deliverMessage(MessageBeanListenerImpl.java:76) at com.sun.enterprise.connectors.inbound.MessageEndpointInvocationHandler.invoke(MessageEndpointInvocationHandler.java:166) at $Proxy176.onMessage(Unknown Source) at com.sun.genericra.inbound.async.DeliveryHelper.deliverMessage(DeliveryHelper.java:301) at com.sun.genericra.inbound.async.DeliveryHelper.deliver(DeliveryHelper.java:196) at com.sun.genericra.inbound.async.DeliveryHelper.deliver(DeliveryHelper.java:186) at com.sun.genericra.inbound.async.EndpointConsumer.consumeMessage(EndpointConsumer.java:176) at com.sun.genericra.inbound.async.MessageListener.onMessage(MessageListener.java:56) at com.sun.messaging.jmq.jmsclient.ServerSessionRunner.onMessage(ServerSessionRunner.java:185) at com.sun.messaging.jmq.jmsclient.ServerSessionRunner.run(ServerSessionRunner.java:142) at com.sun.messaging.jmq.jmsclient.SessionImpl.run(SessionImpl.java:3194) at com.sun.genericra.inbound.async.WorkImpl.run(WorkImpl.java:53) at com.sun.enterprise.connectors.work.OneWork.doWork(OneWork.java:92) at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.performWork(ThreadPoolImpl.java:492) at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:528) Caused by: com.sun.messaging.jms.JMSException: [START_TRANSACTION_REPLY(45)] [C4036]: A broker error occurred. :[404] Uknown XID 47422D4E443139353837322D30312C7365727665722C50333730302C0002000000658279E647422D4E443139353837322D30312C7365727665722C5033373030 user=guest, broker=localhost:7676(1688) at com.sun.messaging.jmq.jmsclient.ProtocolHandler.throwServerErrorException(ProtocolHandler.java:4003) ... 47 more
Environment
Operating System: All Platform: All
Affected Versions
[current]