1 Reply Latest reply on Sep 25, 2003 1:33 AM by Stephane Nicoll

    MDB doesn't work at times -- Please help!

    rkbeach Newbie


      Hi All,

      Please help!

      I am encountering a problem, which I am not able to resolve...any pointers would be highly appreciated (since this is a production related issue)...

      Environment: JBoss 3.2.1 on Solaris 2.8

      Scenario:
      ----------

      1) A Stateless Session Bean (Request Bean) publishes messages ( I do close the Connection and Session after I publish the message) to a Request Topic.

      2) A MDB called RequestMDB (it's a Durable Subscriber) listens on this RequestTopic and processes the messages that it receives (the MaxPoolSize of these MDB's is 15...as per default) by invoking a method (called 'execute') in another Stateless Session Bean(ProcessBean). This processing takes about a couple of seconds.

      3) The ProcessBean's 'execute' method after processing the message received, publishes the results to another Topic, called the ResultTopic. So, essentially, the RequestMDB doesn't get control back until the 'execute' method in the ProcessBean is done.

      4) A MDB called ResultMDB (it's a Durable Subscriber) listens on this ResultTopic and processes the messages.

      Problem:
      ----------

      When I send messages at the rate of 1 message per second, everything works fine...if I send messages at the rate of 3 messages per second, one of the following happens:

      1) I get a 'Invalid transaction id' exception (while the ProcessBean tries to publish a message to the ResultTopic -- I do close the session and connection after publishing the message and all the transactions are container managed) afterwhich, the ResultMDB just doesn't work...it will not dequeue any messages. When does one get a 'Invalid transaction id'?

      2) Everything works fine for the first 10 - 15 essages...after that, even though the Request Bean publishes messages (at a clip of 3 per second), the RequestMDB doesn't dequeue these messages at all...and I don't see any exceptions whatsoever...even after turning TRACE on...after a while, messages start getting written to the disk (I am using file persistence)...when these messages get to a large number (with no message being deq'ed), I have no choice but to stop the server.

      Can anyone please let me know as to what could be happening? I can provide more info...if that helps...

      Thanks a lot!
      Srini

        • 1. Re: MDB doesn't work at times -- Please help!
          Stephane Nicoll Master

          Your transaction context is broken. Here some trick

          # 'Invalid transaction id' is thrown mainly when your transaction context is not initalized

          # You do not need to create a connection to JMS each time. However, you should create one JMS session per transaction

          # use java:/JmsXA as JMS connection factory if you are inside JBoss

          Regards,

          Stephane