This content has been marked as final.
Show 2 replies
-
1. Re: HA JMS & message selector
brian.stansberry Jun 19, 2007 5:56 PM (in response to niefeng)If you added a selector on the MDB and a message doesn't match, the message shouldn't be discarded; it should remain in the queue. The fact that there is a cluster involved shouldn't affect this at all.
Suggest you search the JMS forums for any similar issue and if you can't find anything, post there. -
2. Re: HA JMS & message selector
niefeng Jun 24, 2007 6:43 AM (in response to niefeng)here is the exception i got in node1
org.jboss.mq.SpyXAException: Resource manager error during prepare; - nested throwable: (javax.jms.IllegalStateException: The connection is closed) at org.jboss.mq.SpyXAException.getAsXAException(SpyXAException.java:72) at org.jboss.mq.SpyXAResource.prepare(SpyXAResource.java:151) at org.jboss.tm.TransactionImpl$Resource.prepare(TransactionImpl.java:2212) at org.jboss.tm.TransactionImpl.prepareResources(TransactionImpl.java:1660) at org.jboss.tm.TransactionImpl.commit(TransactionImpl.java:347) at org.jboss.tm.TxManager.commit(TxManager.java:240) at org.jboss.jms.asf.StdServerSession.onMessage(StdServerSession.java:351) at org.jboss.mq.SpyMessageConsumer.sessionConsumerProcessMessage(SpyMessageConsumer.java:905) at org.jboss.mq.SpyMessageConsumer.addMessage(SpyMessageConsumer.java:170) at org.jboss.mq.SpySession.run(SpySession.java:323) at org.jboss.jms.asf.StdServerSession.run(StdServerSession.java:194) at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:743) at java.lang.Thread.run(Unknown Source) Caused by: javax.jms.IllegalStateException: The connection is closed at org.jboss.mq.Connection.checkClosed(Connection.java:1244) at org.jboss.mq.Connection.send(Connection.java:1104) at org.jboss.mq.SpyXAResourceManager.prepare(SpyXAResourceManager.java:255) at org.jboss.mq.SpyXAResource.prepare(SpyXAResource.java:147) ... 11 more [14:06:07-22:24:39,779] [ WARN:org.jboss.tm.TransactionImpl] [JMS SessionPool Worker-6] XAException: tx=TransactionImpl:XidImpl[FormatId=257, GlobalId=asterix/809, BranchQual=, localId=809] errorCode=XAER_RMERR org.jboss.mq.SpyXAException: Resource manager error during rollback; - nested throwable: (javax.jms.IllegalStateException: The connection is closed) at org.jboss.mq.SpyXAException.getAsXAException(SpyXAException.java:72) at org.jboss.mq.SpyXAResource.rollback(SpyXAResource.java:182) at org.jboss.tm.TransactionImpl$Resource.rollback(TransactionImpl.java:2277) at org.jboss.tm.TransactionImpl.rollbackResources(TransactionImpl.java:1837) at org.jboss.tm.TransactionImpl.commit(TransactionImpl.java:368) at org.jboss.tm.TxManager.commit(TxManager.java:240) at org.jboss.jms.asf.StdServerSession.onMessage(StdServerSession.java:351) at org.jboss.mq.SpyMessageConsumer.sessionConsumerProcessMessage(SpyMessageConsumer.java:905) at org.jboss.mq.SpyMessageConsumer.addMessage(SpyMessageConsumer.java:170) at org.jboss.mq.SpySession.run(SpySession.java:323) at org.jboss.jms.asf.StdServerSession.run(StdServerSession.java:194) at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:743) at java.lang.Thread.run(Unknown Source) Caused by: javax.jms.IllegalStateException: The connection is closed at org.jboss.mq.Connection.checkClosed(Connection.java:1244) at org.jboss.mq.Connection.send(Connection.java:1104) at org.jboss.mq.SpyXAResourceManager.rollback(SpyXAResourceManager.java:308) at org.jboss.mq.SpyXAResource.rollback(SpyXAResource.java:178) ... 11 more [14:06:07-22:24:39,788] [ERROR:org.jboss.jms.asf.StdServerSession] [JMS SessionPool Worker-6] failed to commit/rollback org.jboss.tm.JBossRollbackException: Unable to commit, tx=TransactionImpl:XidImpl[FormatId=257, GlobalId=asterix/809, BranchQual=, localId=809] status=STATUS_NO_TRANSACTION; - nested throwable: (org.jboss.mq.SpyXAException: Resource manager error during prepare; - nested throwable: (javax.jms.IllegalStateException: The connection is closed)) at org.jboss.tm.TransactionImpl.commit(TransactionImpl.java:372) at org.jboss.tm.TxManager.commit(TxManager.java:240) at org.jboss.jms.asf.StdServerSession.onMessage(StdServerSession.java:351) at org.jboss.mq.SpyMessageConsumer.sessionConsumerProcessMessage(SpyMessageConsumer.java:905) at org.jboss.mq.SpyMessageConsumer.addMessage(SpyMessageConsumer.java:170) at org.jboss.mq.SpySession.run(SpySession.java:323) at org.jboss.jms.asf.StdServerSession.run(StdServerSession.java:194) at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:743) at java.lang.Thread.run(Unknown Source) Caused by: org.jboss.mq.SpyXAException: Resource manager error during prepare; - nested throwable: (javax.jms.IllegalStateException: The connection is closed) at org.jboss.mq.SpyXAException.getAsXAException(SpyXAException.java:72) at org.jboss.mq.SpyXAResource.prepare(SpyXAResource.java:151) at org.jboss.tm.TransactionImpl$Resource.prepare(TransactionImpl.java:2212) at org.jboss.tm.TransactionImpl.prepareResources(TransactionImpl.java:1660) at org.jboss.tm.TransactionImpl.commit(TransactionImpl.java:347) ... 8 more Caused by: javax.jms.IllegalStateException: The connection is closed at org.jboss.mq.Connection.checkClosed(Connection.java:1244) at org.jboss.mq.Connection.send(Connection.java:1104) at org.jboss.mq.SpyXAResourceManager.prepare(SpyXAResourceManager.java:255) at org.jboss.mq.SpyXAResource.prepare(SpyXAResource.java:147)
And I also realize that the jms msg has been moved to DLQ due to too many resend, that's why I can't find the msg neither in node1 and node2.
Below is the pseudo code on how i initiating the sending of jms msg:private void initArchive() { //delegate to other component using jms sendArchiveRequest(); //start archive: the execution time can be more than 10 minutes and //is an intensive operation archive(); }
The caller of this method is an MDBean, and this method is resided under a nomal java class. The sending of the jms is not involved any session bean.
I managed to resolved it by delegating the sending of the jms msg to a SLSB with transaction attr "RequiresNew".