1 Reply Latest reply on Apr 6, 2005 9:30 AM by Deepak Nohwal

    javax.jms.IllegalStateException: Method not allowed when cal

    Igor Azarny Newbie

      Hello Everyone,

      Enviroment jboss 4.0.1 on windows xp.
      When i call QueueReceiver.setMessageListener i get next exception
      Whats wrong ? Or can anybody point me to the right way ?

      javax.jms.IllegalStateException: Method not allowed
       at org.jboss.resource.adapter.jms.JmsSession.checkStrict(JmsSession.java:399)
       at org.jboss.resource.adapter.jms.JmsMessageConsumer.setMessageListener(JmsMessageConsumer.java:111)
       at com.lcp.core.gate.Gate.<init>(Gate.java:44)
      


      source is

      package com.lcp.core.gate;
      
      import com.lcp.core.IStat;
      import com.lcp.util.configHelper;
      import com.lcp.exception.MustBeImplementedInDerivedClass;
      
      import javax.jms.*;
      import javax.naming.Context;
      import javax.naming.InitialContext;
      import javax.naming.NamingException;
      
      import org.apache.log4j.Logger;
      
      public class Gate implements IGate, MessageListener {
      
       private static final Logger log = Logger.getLogger(configHelper.LoggerName);
      
       protected QueueConnection queueConnection = null;
       protected QueueSession queueSession = null;
       protected QueueSender queueSender = null;
       protected Context jndiContext = null;
       protected QueueConnectionFactory queueConnectionFactory = null;
       protected Queue queue = null;
       protected QueueReceiver queueReceiver = null;
       protected String queueName = null;
      
      
       public Gate(String oper_id) throws JMSException {
       super();
       try {
       jndiContext = new InitialContext();
       queueConnectionFactory = (QueueConnectionFactory) jndiContext.lookup("java:JmsXA"); // todo think how to send queue name
       System.out.println(">>>>>>>>>>>>>> queueConnectionFactory " + queueConnectionFactory);
       Object o = jndiContext.lookup(configHelper.getValue("lcp.queue.prefix") + oper_id);
       System.out.println(">>>>>>>>>>>>>> o " + o);
       queue = (Queue) o;
       queueConnection = queueConnectionFactory.createQueueConnection();
       System.out.println(">>>>>>>>>>>>>> queueConnection " + queueConnection);
       queueSession = queueConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
       System.out.println(">>>>>>>>>>>>>> queueSession " + queueSession);
       queueSender = queueSession.createSender(queue);
       System.out.println(">>>>>>>>>>>>>> queueSender " + queueSender);
       queueReceiver = queueSession.createReceiver(queue);
       queueReceiver.setMessageListener(new Gate());
       } catch (NamingException e) {
       log.error("NamigException", e);
       }
       }
      
       public Gate() {
       super(); // just empty constructor for listener
       System.out.println(">>>>>>>>>>>>>>>>>>>>>>> Gate with empty constructor");
       }
      
       public void SendViaJMS(String stat_id) {
       try {
       TextMessage statMessage = queueSession.createTextMessage();
       statMessage.setText(stat_id);
       queueSender.send(statMessage);
       } catch (JMSException e) {
       log.error("Cant send message to JMS", e);
       }
       }
      
       public void SendViaJMS(IStat Stat) {
       SendViaJMS(Stat.getStat_id());
       }
      
       public void ProcessMessage(String msg) throws MustBeImplementedInDerivedClass {
       throw new MustBeImplementedInDerivedClass("Must be Implemented In Derived class");
       }
      
       public void onMessage(Message message) {
       TextMessage tmstat_id = (TextMessage) message;
       try {
       System.out.println(">>>>>>>>>>>>>>> text message = " + tmstat_id.getText());
       } catch (JMSException e) {
       e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
       }
       }
      
      }