• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Liutauras Vilda
  • Jeanne Boyarsky
  • Devaka Cooray
  • Paul Clapham
Sheriffs:
  • Tim Cooke
  • Knute Snortum
  • Bear Bibeault
Saloon Keepers:
  • Ron McLeod
  • Tim Moores
  • Stephan van Hulst
  • Piet Souris
  • Ganesh Patekar
Bartenders:
  • Frits Walraven
  • Carey Brown
  • Tim Holloway

WebSphere MQ call failed with compcode '2' ('MQCC_FAILED') reason '2003'

 
Greenhorn
Posts: 2
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi,

I have a EJB project with one MDB. MDB is attached to a JMS listener port. The application is deployed in was 7.0.0.7 server on windows platform. Currently MDB does not have much code it has just a sysout which prints that "I got a message" and no other code in the MDB. When I post message on MDB I get the sysout which confirms that MDB received the message. After 5-6 minutes server starts throwing error
"JMSCMQ0001: WebSphere MQ call failed with compcode '2' ('MQCC_FAILED') reason '2003' ('MQRC_BACKED_OUT')" and then I get the error message every 2 second.
Please help me to debug the issue. Complete error logs follows

Thanks,
Sandeep

[3/8/11 16:37:00:135 EST] 00000026 LocalExceptio E CNTR0020E: EJB threw an unexpected (non-declared) exception during invocation of method "onMessage" on

bean "BeanId(testEJBEAR#EJB.jar#TESTMDB, null)". Exception data: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:45)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:599)
at com.ibm.ejs.jms.listener.ServerSessionDispatcher.dispatch(ServerSessionDispatcher.java:37)
at com.ibm.ejs.container.MDBWrapper.onMessage(MDBWrapper.java:100)
at com.ibm.ejs.container.MDBWrapper.onMessage(MDBWrapper.java:136)
at com.ibm.ejs.jms.listener.ServerSession.run(ServerSession.java:558)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1550)
Caused by: java.lang.RuntimeException: JMSCC0110: An exception '
Message : com.ibm.msg.client.jms.DetailedTransactionRolledBackException: JMSWMQ2002: Failed to get a message from destination 'TESTQ'.

WebSphere MQ classes for JMS attempted to perform an MQGET; however WebSphere MQ reported an error. Use the linked exception to determine the cause of this

error.
Class : class com.ibm.msg.client.jms.DetailedTransactionRolledBackException
Stack : com.ibm.msg.client.wmq.common.internal.Reason.reasonToException(Reason.java:603)
: com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:236)
: com.ibm.msg.client.wmq.internal.WMQMessageConsumer.checkJmqiCallSuccess(WMQMessageConsumer.java:123)
: com.ibm.msg.client.wmq.internal.WMQConsumerShadow.getMsg(WMQConsumerShadow.java:1198)
: com.ibm.msg.client.wmq.internal.WMQConsumerShadow.getMsg(WMQConsumerShadow.java:1117)
: com.ibm.msg.client.wmq.internal.WMQSyncConsumerShadow.receive(WMQSyncConsumerShadow.java:366)
: com.ibm.msg.client.wmq.internal.WMQSession.loadMessageReference(WMQSession.java:1265)
: com.ibm.msg.client.jms.internal.JmsSessionImpl.consume(JmsSessionImpl.java:2899)
: com.ibm.msg.client.jms.internal.JmsSessionImpl.run(JmsSessionImpl.java:2590)
: com.ibm.mq.jms.MQSession.run(MQSession.java:862)
: com.ibm.ejs.jms.JMSSessionHandle.run(JMSSessionHandle.java:979)
: com.ibm.ejs.jms.listener.ServerSession.connectionConsumerOnMessage(ServerSession.java:1064)
: com.ibm.ejs.jms.listener.ServerSession.onMessage(ServerSession.java:737)
: com.ibm.ejs.jms.listener.ServerSession.dispatch(ServerSession.java:703)
: sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAccessorImpl.java:-2)
: sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:45)
: sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
: java.lang.reflect.Method.invoke(Method.java:599)
: com.ibm.ejs.jms.listener.ServerSessionDispatcher.dispatch(ServerSessionDispatcher.java:37)
: com.ibm.ejs.container.MDBWrapper.onMessage(MDBWrapper.java:100)
: com.ibm.ejs.container.MDBWrapper.onMessage(MDBWrapper.java:136)
: com.ibm.ejs.jms.listener.ServerSession.run(ServerSession.java:558)
: com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1550)
Caused by [1] --> Message : com.ibm.mq.MQException: JMSCMQ0001: WebSphere MQ call failed with compcode '2' ('MQCC_FAILED') reason '2003'

('MQRC_BACKED_OUT').
Class : class com.ibm.mq.MQException
Stack : com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:223)
: com.ibm.msg.client.wmq.internal.WMQMessageConsumer.checkJmqiCallSuccess(WMQMessageConsumer.java:123)
: com.ibm.msg.client.wmq.internal.WMQConsumerShadow.getMsg(WMQConsumerShadow.java:1198)
: com.ibm.msg.client.wmq.internal.WMQConsumerShadow.getMsg(WMQConsumerShadow.java:1117)
: com.ibm.msg.client.wmq.internal.WMQSyncConsumerShadow.receive(WMQSyncConsumerShadow.java:366)
: com.ibm.msg.client.wmq.internal.WMQSession.loadMessageReference(WMQSession.java:1265)
: com.ibm.msg.client.jms.internal.JmsSessionImpl.consume(JmsSessionImpl.java:2899)
: com.ibm.msg.client.jms.internal.JmsSessionImpl.run(JmsSessionImpl.java:2590)
: com.ibm.mq.jms.MQSession.run(MQSession.java:862)
: com.ibm.ejs.jms.JMSSessionHandle.run(JMSSessionHandle.java:979)
: com.ibm.ejs.jms.listener.ServerSession.connectionConsumerOnMessage(ServerSession.java:1064)
: com.ibm.ejs.jms.listener.ServerSession.onMessage(ServerSession.java:737)
: com.ibm.ejs.jms.listener.ServerSession.dispatch(ServerSession.java:703)
: sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAccessorImpl.java:-2)
: sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:45)
: sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
: java.lang.reflect.Method.invoke(Method.java:599)
: com.ibm.ejs.jms.listener.ServerSessionDispatcher.dispatch(ServerSessionDispatcher.java:37)
: com.ibm.ejs.container.MDBWrapper.onMessage(MDBWrapper.java:100)
: com.ibm.ejs.container.MDBWrapper.onMessage(MDBWrapper.java:136)
: com.ibm.ejs.jms.listener.ServerSession.run(ServerSession.java:558)
: com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1550)
' was caught while processing a message for delivery to a message driven bean.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:45)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:39)
at java.lang.reflect.Constructor.newInstance(Constructor.java:515)
at com.ibm.msg.client.commonservices.j2se.NLSServices.createException(NLSServices.java:313)
at com.ibm.msg.client.commonservices.nls.NLSServices.createException(NLSServices.java:390)
at com.ibm.msg.client.jms.internal.JmsErrorUtils.createException(JmsErrorUtils.java:104)
at com.ibm.msg.client.jms.internal.JmsSessionImpl.run(JmsSessionImpl.java:2740)
at com.ibm.mq.jms.MQSession.run(MQSession.java:862)
at com.ibm.ejs.jms.JMSSessionHandle.run(JMSSessionHandle.java:979)
at com.ibm.ejs.jms.listener.ServerSession.connectionConsumerOnMessage(ServerSession.java:1064)
at com.ibm.ejs.jms.listener.ServerSession.onMessage(ServerSession.java:737)
at com.ibm.ejs.jms.listener.ServerSession.dispatch(ServerSession.java:703)
... 9 more
Caused by: com.ibm.msg.client.jms.DetailedTransactionRolledBackException: JMSWMQ2002: Failed to get a message from destination 'TESTQ'. WebSphere MQ classes

for JMS attempted to perform an MQGET; however WebSphere MQ reported an error. Use the linked exception to determine the cause of this error.
at com.ibm.msg.client.wmq.common.internal.Reason.reasonToException(Reason.java:603)
at com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:236)
at com.ibm.msg.client.wmq.internal.WMQMessageConsumer.checkJmqiCallSuccess(WMQMessageConsumer.java:123)
at com.ibm.msg.client.wmq.internal.WMQConsumerShadow.getMsg(WMQConsumerShadow.java:1198)
at com.ibm.msg.client.wmq.internal.WMQConsumerShadow.getMsg(WMQConsumerShadow.java:1117)
at com.ibm.msg.client.wmq.internal.WMQSyncConsumerShadow.receive(WMQSyncConsumerShadow.java:366)
at com.ibm.msg.client.wmq.internal.WMQSession.loadMessageReference(WMQSession.java:1265)
at com.ibm.msg.client.jms.internal.JmsSessionImpl.consume(JmsSessionImpl.java:2899)
at com.ibm.msg.client.jms.internal.JmsSessionImpl.run(JmsSessionImpl.java:2590)
... 14 more
Caused by: com.ibm.mq.MQException: JMSCMQ0001: WebSphere MQ call failed with compcode '2' ('MQCC_FAILED') reason '2003' ('MQRC_BACKED_OUT').
at com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:223)
... 21 more



 
Greenhorn
Posts: 12
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
It sounds like you have a poison message. WMQ will requeue a poison message if possible. When this happens, the poison message is removed under syncpoint from the input queue and written under syncpoint to the backout or dead queue. It is not committed until another message in the input queue *is* able to be committed. If there is no subsequent message in the input queue, the poison message transaction never completes. Then every so often, the transaction times out, the message PUT and GET are backed out and the cycle starts again.

If my theory is correct you can put another message - a GOOD one this time - on the input queue and the transaction will complete. Or you can stop the app and when there are no input handles on the queue, the poison message should be the only message on the queue and you can delete it.
 
Ranch Hand
Posts: 1490
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
What is your message size ?
 
Sandeep Hooda
Greenhorn
Posts: 2
  • Likes 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I would like to thank you all for spending your valuable time to help me. I would like to say that I got the solution of this issue. I went to admin console. Queue->Advanced properties ->Delivery-> Persistence. I changed the drop down to "Websphere MQ non persistent. I got the reference from
http://www-01.ibm.com/support/docview.wss?uid=swg21446761
http://www.tek-tips.com/viewthread.cfm?qid=934210&page=8
http://middleware.its.state.nc.us/middleware/Documentation/en_US/htm/amqzag03/amqzag0334.htm

Thanks you very much,javascript:emoticon('');
Sandeep.
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
Boost this thread!