2012-09-13 4 views
0

정기적 인 JMS 메시지를 사용하는 Glassfish 3.1.2.2 응용 프로그램에 여러 MDB가 있습니다. 모든 것이 겉으로보기에는 응용 프로그램 시작 후 12 시간에서 며칠 사이의 일정 기간 동안 완벽하게 작동합니다. 그런 다음 아래 오류와 같은 오류가 반복해서 나타납니다. 오류 텍스트 ("클라이언트의 트랜잭션이 중단됨")에서 컨테이너가 기존 트랜잭션에서 MDB를 실행하려고 시도하는 것처럼 들리지만 트랜잭션이 어떻게 든 중단되어 MDB를 호출 할 수 없습니다. 또 다른 정보는 응용 프로그램을 다시 배포해도 오류가 사라지지 않는다는 것입니다. 글래스 피쉬를 다시 시작하면 오류가 사라질 것입니다 (일정 기간 후에 다시 나타납니다). 이것이 어떤 종류의 자원 고갈 문제인지 궁금합니다.Glassfish/JMS MDB 트랜잭션이 중단되었습니다.

[#|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 
|#] 

답변

1

오류가 나타나면 여전히 동일한 스레드에서 발생합니까? 이 경우 _ThreadID=74;_ThreadName=Thread-2처럼 좋아하십니까? 나는 this bug을보고했는데, 스레드는 롤백 된 트랜잭션과 연관되어 있었지만 아무런 반응이 없었습니다. 그러나 데이터베이스 연결이보다 안정적으로 된 후에 제거했습니다.

이 오류가 발생하기 전에 문제의 스레드에서 마지막 활동을 찾습니다.