|
RSS Feed - WebSphere MQ Support
|
RSS Feed - Message Broker Support
|
 |
|
Exception when multithreading an MDB |
« View previous topic :: View next topic » |
Author |
Message
|
fjcarretero |
Posted: Tue Mar 02, 2004 2:19 am Post subject: Exception when multithreading an MDB |
|
|
Voyager
Joined: 13 Oct 2003 Posts: 88
|
Hi all,
I have the following problem:
The application reads a message from a queue (with MDB) updates a DB (session bean) and writes a reply message to another queue (session bean). This occurs in a single unit of work. All the resources use 2-phase commit. I'm using JMS.
When I increase the number of sessions in the listener port, it throws this exception:
Code: |
java.lang.NullPointerException
at com.aseriti.eai.adapter.writer.JMSMessageWriter.[b]putMessage[/b](JMSMessageWriter.java:133)
at com.aseriti.eai.adapter.writer.JMSMessageWriter.sendMessage(JMSMessageWriter.java:227)
at com.aseriti.eai.adapter.writer.MessageWriterBean.sendMessage(MessageWriterBean.java:71)
at com.aseriti.eai.adapter.writer.EJSLocalStatelessMessageWriter_cd63cf14.sendMessage(EJSLocalStatelessMessageWriter_cd63cf14.java:40)
at com.aseriti.eai.workplace.schedule.inbound.InboundScheduleAdapter.sendReplyMessage(InboundScheduleAdapter.java:166)
at com.aseriti.eai.workplace.schedule.inbound.InboundScheduleAdapter.onTextMessage(InboundScheduleAdapter.java:69)
at com.aseriti.eai.adapter.reader.JMSMessageReaderBean.onMessage(JMSMessageReaderBean.java:66)
at com.ibm.ejs.jms.listener.MDBWrapper$PriviledgedOnMessage.run(MDBWrapper.java:205)
at java.security.AccessController.doPrivileged(Native Method)
at com.ibm.ejs.jms.listener.MDBWrapper.callOnMessage(MDBWrapper.java:194)
at com.ibm.ejs.jms.listener.MDBWrapper.onMessage(MDBWrapper.java:172)
at com.ibm.mq.jms.MQSession.run(MQSession.java:1136)
at com.ibm.ejs.jms.JMSSessionHandle.run(JMSSessionHandle.java:905)
at com.ibm.ejs.jms.listener.ServerSession.connectionConsumerOnMessage(ServerSession.java:696)
at com.ibm.ejs.jms.listener.ServerSession.onMessage(ServerSession.java:481)
at com.ibm.ejs.jms.listener.ServerSession.dispatch(ServerSession.java:448)
at java.lang.reflect.Method.invoke(Native Method)
at com.ibm.ejs.jms.listener.ServerSessionDispatcher.dispatch(ServerSessionDispatcher.java:37)
at com.ibm.ejs.container.MDBWrapper.onMessage(MDBWrapper.java:90)
at com.ibm.ejs.container.MDBWrapper.onMessage(MDBWrapper.java:120)
at com.ibm.ejs.jms.listener.ServerSession.run(ServerSession.java:372)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:592)
at com.ibm.ejs.container.util.ExceptionUtil.mapCSIException(ExceptionUtil.java:51)
at com.ibm.ejs.container.LocalExceptionMappingStrategy.mapException(LocalExceptionMappingStrategy.java:85)
at com.ibm.ejs.container.LocalExceptionMappingStrategy.mapCSITransactionRolledBackException(LocalExceptionMappingStrategy.java:195)
at com.ibm.ejs.container.EJSContainer.postInvoke(EJSContainer.java:2858)
at com.aseriti.eai.adapter.writer.EJSLocalStatelessMessageWriter_cd63cf14.sendMessage(EJSLocalStatelessMessageWriter_cd63cf14.java:50)
at com.aseriti.eai.workplace.schedule.inbound.InboundScheduleAdapter.sendReplyMessage(InboundScheduleAdapter.java:166)
at com.aseriti.eai.workplace.schedule.inbound.InboundScheduleAdapter.onTextMessage(InboundScheduleAdapter.java:69)
at com.aseriti.eai.adapter.reader.JMSMessageReaderBean.onMessage(JMSMessageReaderBean.java:66)
at com.ibm.ejs.jms.listener.MDBWrapper$PriviledgedOnMessage.run(MDBWrapper.java:205)
at java.security.AccessController.doPrivileged(Native Method)
at com.ibm.ejs.jms.listener.MDBWrapper.callOnMessage(MDBWrapper.java:194)
at com.ibm.ejs.jms.listener.MDBWrapper.onMessage(MDBWrapper.java:172)
at com.ibm.mq.jms.MQSession.run(MQSession.java:1136)
at com.ibm.ejs.jms.JMSSessionHandle.run(JMSSessionHandle.java:905)
at com.ibm.ejs.jms.listener.ServerSession.connectionConsumerOnMessage(ServerSession.java:696)
at com.ibm.ejs.jms.listener.ServerSession.onMessage(ServerSession.java:481)
at com.ibm.ejs.jms.listener.ServerSession.dispatch(ServerSession.java:448)
at java.lang.reflect.Method.invoke(Native Method)
at com.ibm.ejs.jms.listener.ServerSessionDispatcher.dispatch(ServerSessionDispatcher.java:37)
at com.ibm.ejs.container.MDBWrapper.onMessage(MDBWrapper.java:90)
at com.ibm.ejs.container.MDBWrapper.onMessage(MDBWrapper.java:120)
at com.ibm.ejs.jms.listener.ServerSession.run(ServerSession.java:372)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:592)
; nested exception is: java.lang.NullPointerException
java.lang.NullPointerException
at com.aseriti.eai.adapter.writer.JMSMessageWriter.putMessage(JMSMessageWriter.java:133)
at com.aseriti.eai.adapter.writer.JMSMessageWriter.sendMessage(JMSMessageWriter.java:227)
at com.aseriti.eai.adapter.writer.MessageWriterBean.sendMessage(MessageWriterBean.java:71)
at com.aseriti.eai.adapter.writer.EJSLocalStatelessMessageWriter_cd63cf14.sendMessage(EJSLocalStatelessMessageWriter_cd63cf14.java:40)
at com.aseriti.eai.workplace.schedule.inbound.InboundScheduleAdapter.sendReplyMessage(InboundScheduleAdapter.java:166)
at com.aseriti.eai.workplace.schedule.inbound.InboundScheduleAdapter.onTextMessage(InboundScheduleAdapter.java:69)
at com.aseriti.eai.adapter.reader.JMSMessageReaderBean.onMessage(JMSMessageReaderBean.java:66)
at com.ibm.ejs.jms.listener.MDBWrapper$PriviledgedOnMessage.run(MDBWrapper.java:205)
at java.security.AccessController.doPrivileged(Native Method)
at com.ibm.ejs.jms.listener.MDBWrapper.callOnMessage(MDBWrapper.java:194)
at com.ibm.ejs.jms.listener.MDBWrapper.onMessage(MDBWrapper.java:172)
at com.ibm.mq.jms.MQSession.run(MQSession.java:1136)
at com.ibm.ejs.jms.JMSSessionHandle.run(JMSSessionHandle.java:905)
at com.ibm.ejs.jms.listener.ServerSession.connectionConsumerOnMessage(ServerSession.java:696)
at com.ibm.ejs.jms.listener.ServerSession.onMessage(ServerSession.java:481)
at com.ibm.ejs.jms.listener.ServerSession.dispatch(ServerSession.java:448)
at java.lang.reflect.Method.invoke(Native Method)
at com.ibm.ejs.jms.listener.ServerSessionDispatcher.dispatch(ServerSessionDispatcher.java:37)
at com.ibm.ejs.container.MDBWrapper.onMessage(MDBWrapper.java:90)
at com.ibm.ejs.container.MDBWrapper.onMessage(MDBWrapper.java:120)
at com.ibm.ejs.jms.listener.ServerSession.run(ServerSession.java:372)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:592) |
I'm using WAS 5.0 and MQSeries 5.3
The exception is thrown when I close the JMS connection.
This is the code of putMessage:
Code: |
try {
log.debug("Sending the message " + msg);
System.out.println(prop.getReplyToQ());
Queue rQ = session.createQueue(prop.getReplyToQ());
msg.setJMSReplyTo(rQ);
msg.setJMSExpiration(prop.getExpiry());
qs.setPriority(prop.getPriority());
qs.setDeliveryMode(prop.getPersistence());
qs.send(msg);
log.debug("Message sent");
} catch (JMSException e) {
throw new AdapterException(e.getMessage());
} |
Any help will be appreciated
TIA
Felipe |
|
Back to top |
|
 |
bower5932 |
Posted: Tue Mar 02, 2004 7:01 am Post subject: |
|
|
 Jedi Knight
Joined: 27 Aug 2001 Posts: 3023 Location: Dallas, TX, USA
|
What MQ CSD are you running? You can get it with mqver. |
|
Back to top |
|
 |
fjcarretero |
Posted: Wed Mar 03, 2004 3:37 am Post subject: |
|
|
Voyager
Joined: 13 Oct 2003 Posts: 88
|
Hi,
Thanks for the reply.
It's CSD05.
Cheers
Felipe |
|
Back to top |
|
 |
bower5932 |
Posted: Wed Mar 03, 2004 6:22 am Post subject: |
|
|
 Jedi Knight
Joined: 27 Aug 2001 Posts: 3023 Location: Dallas, TX, USA
|
After looking at your stack trace, it looks like you are being called via the onMessage, you do some processing, and get the NullPointerException. The last part of the trace looks like this exception is coming from inside your code rather than the JMS. |
|
Back to top |
|
 |
fjcarretero |
Posted: Wed Mar 03, 2004 7:31 am Post subject: |
|
|
Voyager
Joined: 13 Oct 2003 Posts: 88
|
That's what I thought. But if you follow the log it seems that the last line that is excuted is the JMSconnection.close(). Also, the it's taking 25 seconds to throw the exception.
Code: |
2126275436 [2004-03-03 15:20:08,719] DEBUG (JMSMessageWriter:putMessage) - Sending the message
JMS Message class: jms_text
JMSType: null
JMSDeliveryMode: 1
JMSExpiration: 0
JMSPriority: 0
JMSMessageID: ID:414d512042524f4b455220202020202011a34540200006b9
JMSTimestamp: 1078327067950
JMSCorrelationID:null
JMSDestination: null
JMSReplyTo: null
JMSRedelivered: false
BH_Class:WMS/job/create/reply
BH_Version:1.1
BH_SourceApp:FEA
BH_Mode:LIVE
BH_HeaderName:BasicHeader V0-01
BH_BusinessTID:none
BH_UserId:unknown
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JobCreatedReply xmlns="http://www.severntre
Another 455 character(s) omitted
2126275436 [2004-03-03 15:20:09,078] DEBUG (JMSMessageWriter:disconnect) - Closing QueueSender
2126275436 [2004-03-03 15:20:09,094] DEBUG (JMSMessageWriter:disconnect) - Closing session
2126275436 [2004-03-03 15:20:09,094] DEBUG (JMSMessageWriter:disconnect) - Closing connection
2126275436 [2004-03-03 15:20:33,969] ERROR (InboundScheduleAdapter:onTextMessage) - javax.transaction.TransactionRolledbackException: com.ibm.websphere.csi.CSITransactionRolledbackException: null; nested exception is:
java.lang.NullPointerException
java.lang.NullPointerException
at com.ibm.ejs.jms.JMSConnectionHandle.contact admin(JMSConnectionHandle.java:667)
at com.ibm.ejs.jms.JMSSessionHandle.markManagedObjectsAsStale(JMSSessionHandle.java:1304)
at com.ibm.ejs.jms.JMSMessageProducerHandle.markManagedObjectsAsStale(JMSMessageProducerHandle.java:826)
at com.ibm.ejs.jms.JMSQueueSenderHandle.send(JMSQueueSenderHandle.java:190)
at com.aseriti.eai.adapter.writer.JMSMessageWriter.putMessage(JMSMessageWriter.java:147)
at com.aseriti.eai.adapter.writer.JMSMessageWriter.sendMessage(JMSMessageWriter.java:235)
at com.aseriti.eai.adapter.writer.MessageWriterBean.sendMessage(MessageWriterBean.java:71)
at com.aseriti.eai.adapter.writer.EJSLocalStatelessMessageWriter_cd63cf14.sendMessage(EJSLocalStatelessMessageWriter_cd63cf14.java:40)
at com.aseriti.eai.workplace.schedule.inbound.InboundScheduleAdapter.sendReplyMessage(InboundScheduleAdapter.java:174)
at com.aseriti.eai.workplace.schedule.inbound.InboundScheduleAdapter.onTextMessage(InboundScheduleAdapter.java:76)
at com.aseriti.eai.adapter.reader.JMSMessageReaderBean.onMessage(JMSMessageReaderBean.java:69)
at com.ibm.ejs.jms.listener.MDBWrapper$PriviledgedOnMessage.run(MDBWrapper.java:205)
at java.security.AccessController.doPrivileged(Native Method)
at com.ibm.ejs.jms.listener.MDBWrapper.callOnMessage(MDBWrapper.java:194)
at com.ibm.ejs.jms.listener.MDBWrapper.onMessage(MDBWrapper.java:172)
at com.ibm.mq.jms.MQSession.run(MQSession.java:1136)
at com.ibm.ejs.jms.JMSSessionHandle.run(JMSSessionHandle.java:905)
at com.ibm.ejs.jms.listener.ServerSession.connectionConsumerOnMessage(ServerSession.java:696)
at com.ibm.ejs.jms.listener.ServerSession.onMessage(ServerSession.java:481)
at com.ibm.ejs.jms.listener.ServerSession.dispatch(ServerSession.java:448)
at java.lang.reflect.Method.invoke(Native Method)
at com.ibm.ejs.jms.listener.ServerSessionDispatcher.dispatch(ServerSessionDispatcher.java:37)
at com.ibm.ejs.container.MDBWrapper.onMessage(MDBWrapper.java:90)
at com.ibm.ejs.container.MDBWrapper.onMessage(MDBWrapper.java:120)
at com.ibm.ejs.jms.listener.ServerSession.run(ServerSession.java:372)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:592)
at com.ibm.ejs.container.util.ExceptionUtil.mapCSIException(ExceptionUtil.java:51)
at com.ibm.ejs.container.LocalExceptionMappingStrategy.mapException(LocalExceptionMappingStrategy.java:85)
at com.ibm.ejs.container.LocalExceptionMappingStrategy.mapCSITransactionRolledBackException(LocalExceptionMappingStrategy.java:195)
at com.ibm.ejs.container.EJSContainer.postInvoke(EJSContainer.java:2858)
at com.aseriti.eai.adapter.writer.EJSLocalStatelessMessageWriter_cd63cf14.sendMessage(EJSLocalStatelessMessageWriter_cd63cf14.java:50)
at com.aseriti.eai.workplace.schedule.inbound.InboundScheduleAdapter.sendReplyMessage(InboundScheduleAdapter.java:174)
at com.aseriti.eai.workplace.schedule.inbound.InboundScheduleAdapter.onTextMessage(InboundScheduleAdapter.java:76)
at com.aseriti.eai.adapter.reader.JMSMessageReaderBean.onMessage(JMSMessageReaderBean.java:69)
at com.ibm.ejs.jms.listener.MDBWrapper$PriviledgedOnMessage.run(MDBWrapper.java:205)
at java.security.AccessController.doPrivileged(Native Method)
at com.ibm.ejs.jms.listener.MDBWrapper.callOnMessage(MDBWrapper.java:194)
at com.ibm.ejs.jms.listener.MDBWrapper.onMessage(MDBWrapper.java:172)
at com.ibm.mq.jms.MQSession.run(MQSession.java:1136)
at com.ibm.ejs.jms.JMSSessionHandle.run(JMSSessionHandle.java:905)
at com.ibm.ejs.jms.listener.ServerSession.connectionConsumerOnMessage(ServerSession.java:696)
at com.ibm.ejs.jms.listener.ServerSession.onMessage(ServerSession.java:481)
at com.ibm.ejs.jms.listener.ServerSession.dispatch(ServerSession.java:448)
at java.lang.reflect.Method.invoke(Native Method)
at com.ibm.ejs.jms.listener.ServerSessionDispatcher.dispatch(ServerSessionDispatcher.java:37)
at com.ibm.ejs.container.MDBWrapper.onMessage(MDBWrapper.java:90)
at com.ibm.ejs.container.MDBWrapper.onMessage(MDBWrapper.java:120)
at com.ibm.ejs.jms.listener.ServerSession.run(ServerSession.java:372)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:592)
; nested exception is: java.lang.NullPointerException |
I'm also getting another exception:
Code: |
javax.resource.ResourceException: Reassociate call Failed |
Thanks
Felipe |
|
Back to top |
|
 |
fjcarretero |
Posted: Wed Mar 10, 2004 9:02 am Post subject: |
|
|
Voyager
Joined: 13 Oct 2003 Posts: 88
|
I have solved the problem, but still I don't know why was not working before.
This is my scenario:
A SSB has an instance of a class that writes to a queue. In that class, QueueConnection, QueueSession and QueueSender are class fields. The constructor of this class is called in ejbCreate of the SSB. In each call to this class, I was getting and releasing the QueueConnection, ...
I have removed QueueConnection, QueueSession and QueueSender as class fields and now it works perfectly.
I was assuming that each SSB had a different instance of the previous class. Am I right?
I think is something related to the QueueConnection.
Any thoughts?
TIA.
Felipe |
|
Back to top |
|
 |
|
|
 |
|
Page 1 of 1 |
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|
|
|