2011-07-14 74 views
0

我使用Glassfish和ActiveMQ的XATransactions

  • 的Sun的GlassFish企業服務器2.1.1((V2.1 Patch06)(9.1_02 Patch12))
  • ActiveMQ的-RAR-5.4.2-保險絲 - 02-00.rar
  • XATransaction爲ActiveMQ的-RAR

我遇到例外下面,我懷疑這是因爲XATransaction啓動後activemqra不能得到的ActiveMQ連接的保持。 我本來預計activemqra會在這種情況下回滾事務。

當前在Glassfish中啓動的事務掛起,直到其超時。當db事務是XATransaction 的一部分時,這是特別糟糕的,因爲那時db連接不可用。

我不知道該怎麼做,所以我不掛斷交易?

歡迎任何幫助或意見。

問候Trym

[#|2011-07-14T15:24:50.946+0200|INFO|sunappserver2.1| javax.enterprise.system.container.ejb.mdb |_ThreadID=26;_ThreadName=p: mdb-threadpool; w: 6;|javax.ejb.EJBException javax.ejb.EJBException: Unable to complete container-managed transaction.; 
nested exception is: javax.transaction.SystemException: org.omg.CORBA.INTERNAL: JTS5031: 
Exception [org.omg.CORBA.INTERNAL: vmcid: 0x0 minor code: 0 completed: Maybe] on Resource [commit one phase] operation. vmcid: 0x0 minor code: 0 completed: No 
javax.transaction.SystemException: org.omg.CORBA.INTERNAL: JTS5031: 
Exception [org.omg.CORBA.INTERNAL: vmcid: 0x0 minor code: 0 completed: Maybe] on Resource [commit one phase] operation. vmcid: 0x0 minor code: 0 completed: No 
    at com.sun.jts.jta.TransactionManagerImpl.commit(TransactionManagerImpl.java:321) 
    at com.sun.enterprise.distributedtx.J2EETransactionManagerImpl.commit(J2EETransactionManagerImpl.java:1029) 
    at com.sun.enterprise.distributedtx.J2EETransactionManagerOpt.commit(J2EETransactionManagerOpt.java:398) 
    at com.sun.ejb.containers.BaseContainer.completeNewTx(BaseContainer.java:3826) 
    at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:3605) 
    at com.sun.ejb.containers.MessageBeanContainer.afterMessageDeliveryInternal(MessageBeanContainer.java:1226) 
    at com.sun.ejb.containers.MessageBeanContainer.afterMessageDelivery(MessageBeanContainer.java:1197) 
    at com.sun.ejb.containers.MessageBeanListenerImpl.afterMessageDelivery(MessageBeanListenerImpl.java:79) 
    at com.sun.enterprise.connectors.inflow.MessageEndpointInvocationHandler.invoke(MessageEndpointInvocationHandler.java:139) 
    at $Proxy65.afterDelivery(Unknown Source) 
    at org.apache.activemq.ra.MessageEndpointProxy$MessageEndpointAlive.afterDelivery(MessageEndpointProxy.java:128) 
    at org.apache.activemq.ra.MessageEndpointProxy.afterDelivery(MessageEndpointProxy.java:69) 
    at org.apache.activemq.ra.ServerSessionImpl.afterDelivery(ServerSessionImpl.java:224) 
    at org.apache.activemq.ActiveMQSession.run(ActiveMQSession.java:897) 
    at org.apache.activemq.ra.ServerSessionImpl.run(ServerSessionImpl.java:169) 
    at com.sun.enterprise.connectors.work.OneWork.doWork(OneWork.java:77) 
    at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:555) 
javax.ejb.EJBException: Unable to complete container-managed transaction.; nested exception is: javax.transaction.SystemException: org.omg.CORBA.INTERNAL: JTS5031: Exception [org.omg.CORBA.INTERNAL: vmcid: 0x0 minor code: 0 completed: Maybe] on Resource [commit one phase] operation. vmcid: 0x0 minor code: 0 completed: No 
    at com.sun.ejb.containers.BaseContainer.completeNewTx(BaseContainer.java:3837) 
    at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:3605) 
    at com.sun.ejb.containers.MessageBeanContainer.afterMessageDeliveryInternal(MessageBeanContainer.java:1226) 
    at com.sun.ejb.containers.MessageBeanContainer.afterMessageDelivery(MessageBeanContainer.java:1197) 
    at com.sun.ejb.containers.MessageBeanListenerImpl.afterMessageDelivery(MessageBeanListenerImpl.java:79) 
    at com.sun.enterprise.connectors.inflow.MessageEndpointInvocationHandler.invoke(MessageEndpointInvocationHandler.java:139) 
    at $Proxy65.afterDelivery(Unknown Source) 
    at org.apache.activemq.ra.MessageEndpointProxy$MessageEndpointAlive.afterDelivery(MessageEndpointProxy.java:128) 
    at org.apache.activemq.ra.MessageEndpointProxy.afterDelivery(MessageEndpointProxy.java:69) 
    at org.apache.activemq.ra.ServerSessionImpl.afterDelivery(ServerSessionImpl.java:224) 
    at org.apache.activemq.ActiveMQSession.run(ActiveMQSession.java:897) 
    at org.apache.activemq.ra.ServerSessionImpl.run(ServerSessionImpl.java:169) 
    at com.sun.enterprise.connectors.work.OneWork.doWork(OneWork.java:77) 
    at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:555) 
|#] 

回答

0

這似乎是Glassfish上的錯誤。它試圖關閉已經關閉的線程。有一個補丁可以解決這個問題。 看看https://forums.oracle.com/forums/thread.jspa?threadID=1979095

+1

感謝您的回答。在閱讀oracle論壇之後,我非常懷疑如何獲得補丁,以及補丁是否已經是我正在使用的Glassfish版本v2.1.1((v2.1 Patch06)(9.1_02 Patch12))的一部分。你可以給我任何關於這個或哪裏尋找進一步信息的提示。提前致謝。祝你好運 – Trym

0

只是刪除的GlassFish的內容/域/域1/IMQ /實例/ imqbroker/fs370

這是因爲一些奇怪的文件損壞的發生堅持隊列數據...清理此文件夾後,錯誤將會消失