ASG
IBM
Zystems
Cressida
Icon
Netflexity
 
  MQSeries.net
Search  Search       Tech Exchange      Education      Certifications      Library      Info Center      SupportPacs      LinkedIn  Search  Search                                                                   FAQ  FAQ   Usergroups  Usergroups
 
Register  ::  Log in Log in to check your private messages
 
RSS Feed - WebSphere MQ Support RSS Feed - Message Broker Support

MQSeries.net Forum Index » IBM MQ Java / JMS » Exception when multithreading an MDB

Post new topic  Reply to topic
 Exception when multithreading an MDB « View previous topic :: View next topic » 
Author Message
fjcarretero
PostPosted: Tue Mar 02, 2004 2:19 am    Post subject: Exception when multithreading an MDB Reply with quote

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
View user's profile Send private message
bower5932
PostPosted: Tue Mar 02, 2004 7:01 am    Post subject: Reply with quote

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
View user's profile Send private message Send e-mail Visit poster's website AIM Address Yahoo Messenger
fjcarretero
PostPosted: Wed Mar 03, 2004 3:37 am    Post subject: Reply with quote

Voyager

Joined: 13 Oct 2003
Posts: 88

Hi,

Thanks for the reply.

It's CSD05.

Cheers
Felipe
Back to top
View user's profile Send private message
bower5932
PostPosted: Wed Mar 03, 2004 6:22 am    Post subject: Reply with quote

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
View user's profile Send private message Send e-mail Visit poster's website AIM Address Yahoo Messenger
fjcarretero
PostPosted: Wed Mar 03, 2004 7:31 am    Post subject: Reply with quote

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
View user's profile Send private message
fjcarretero
PostPosted: Wed Mar 10, 2004 9:02 am    Post subject: Reply with quote

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
View user's profile Send private message
Display posts from previous:   
Post new topic  Reply to topic Page 1 of 1

MQSeries.net Forum Index » IBM MQ Java / JMS » Exception when multithreading an MDB
Jump to:  



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
Protected by Anti-Spam ACP
 
 


Theme by Dustin Baccetti
Powered by phpBB © 2001, 2002 phpBB Group

Copyright © MQSeries.net. All rights reserved.