Exception in Websphere JMS Topic


General J2EE: Exception in Websphere JMS Topic

  1. Exception in Websphere JMS Topic (2 messages)

    I am facing a small issue with WebSphere Topic ,
    I am using embedded WebSphere MQ and creating a Topic

    Following are the steps That I had done for creating a Topic
    1) Installed WebSphere Application Server with Embedded Messaging Server and Client
    2) Created a Topic Connection Factory
       (Given a Name and JNDI Name for it)
    3) Created a Topic
       (Given a Name JNDI name and Topic Name)

    I have an application deployed on Websphere, This has a servlet which starts a Thread which uses recieve() on this Topic for new messages.

    javax.jms.IllegalStateException: Non-durable subscriber invalidated on transaction boundary
    [2/24/05 17:43:55:061 PST] 7049048d SystemErr R at com.ibm.ejs.jms.JMSTopicSubscriberHandle.getOpenTopicSubscriber(JMSTopicSubscriberHandle.java(Compiled Code))
    [2/24/05 17:43:55:061 PST] 7049048d SystemErr R at com.ibm.ejs.jms.JMSTopicSubscriberHandle.getOpenMessageConsumer(JMSTopicSubscriberHandle.java(Compiled Code))
    [2/24/05 17:43:55:061 PST] 7049048d SystemErr R at com.ibm.ejs.jms.JMSMessageConsumerHandle.receive(JMSMessageConsumerHandle.java(Compiled Code))

    When I started this application I am getting following error in the Error log
    Can you please guide me where I am going wrong ?

    I am using Websphere version

    Thanks in Advance
  2. Exception in Websphere JMS Topic[ Go to top ]

    See http://publib.boulder.ibm.com/infocenter/ws51help/index.jsp?topic=/com.ibm.websphere.nd.doc/info/ae/ae/rmj_durab.html
    and http://publib.boulder.ibm.com/infocenter/ws51help/index.jsp?topic=/com.ibm.websphere.nd.doc/info/ae/ae/rmj_durab.html

    "a non-durable subscriber can only be used in the same transactional context (for example, a global transaction or an unspecified transaction context) that existed when the subscriber was created. A non-durable subscriber is invalidated whenever a sharing boundary (in general, a local or global transaction boundary) is crossed, resulting in a javax.jms.IllegalStateException with message text Non-durable subscriber invalidated on transaction boundary...If you want to cache a subscriber (to wait to receive messages that arrived since it was created), then use a durable subscriber (for which this restriction does not apply). Do not cache non-durable subscribers."

    Bill Lasley
    Versant Corp.
  3. Hi Bill,
    I guess the problem is arising coz i am spawning a Thread from the Servlet, when i tried the same code as a standalone application its working well.
    i guess i have to deploy listener application as MDB.
    Thanks for ur comments
    Ajith Prabhakar