I have a number of MDBs in my Glassfish 3.1.2.2 application that consume JMS messages on a regular interval. All will seemingly work flawlessly for a period of time after application startup- anywhere from 12 hours to a couple of days. Then, I will start repeatedly getting an error like the one below. From the error text ("Client's transaction aborted"), it sounds as if the container is attempting to run the MDB in an existing transaction, but that the transaction is somehow aborted, so it can't invoke the MDB. Another piece of information is that redeploying the application does not make the error disappear. Restarting Glassfish does seem to make the error disappear (for a period of time, after which time it will reappear), which makes me wonder if this is some kind of resource exhaustion issue.
[#|2012-09-12T21:42:15.045+0000|WARNING|glassfish3.1.2|javax.resourceadapter.mqjmsra.inbound.message|_ThreadID=74;_ThreadName=Thread-2;|MQJMSRA_MR2001: run:Caught Exception from onMessage():Redelivering:
javax.ejb.EJBException
at com.sun.ejb.containers.MessageBeanContainer.deliverMessage(MessageBeanContainer.java:1176)
at com.sun.ejb.containers.MessageBeanListenerImpl.deliverMessage(MessageBeanListenerImpl.java:81)
at com.sun.enterprise.connectors.inbound.MessageEndpointInvocationHandler.invoke(MessageEndpointInvocationHandler.java:171)
at $Proxy614.onMessage(Unknown Source)
at com.sun.messaging.jms.ra.OnMessageRunner.run(OnMessageRunner.java:260)
at com.sun.enterprise.connectors.work.OneWork.doWork(OneWork.java:114)
at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.performWork(ThreadPoolImpl.java:497)
at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:540)
Caused by: javax.ejb.TransactionRolledbackLocalException: Client's transaction aborted
at com.sun.ejb.containers.BaseContainer.useClientTx(BaseContainer.java:4722)
at com.sun.ejb.containers.BaseContainer.preInvokeTx(BaseContainer.java:4601)
at com.sun.ejb.containers.MessageBeanContainer.beforeMessageDelivery(MessageBeanContainer.java:1040)
at com.sun.ejb.containers.MessageBeanListenerImpl.beforeMessageDelivery(MessageBeanListenerImpl.java:77)
at com.sun.enterprise.connectors.inbound.MessageEndpointInvocationHandler.invoke(MessageEndpointInvocationHandler.java:139)
at $Proxy614.beforeDelivery(Unknown Source)
at com.sun.messaging.jms.ra.OnMessageRunner.run(OnMessageRunner.java:247)
... 3 more
|#]