java - unable to receive messages from queue in jms -


i beginner jms , trying simple web app running produces , consumes messages. on welcome page have form text box , submit button. on submit text in text box wrapped in message , sent queue on server via messageproducer. understand, message should remain on queue until call receive method messageconsumer consumer linked queue. unfortunately on second jsp page click "get messages" button , received message turns null. pretty sure being sent (at least there no errors saying otherwise) there way check though? ideas on whats going wrong? in advance. heres producer/consumer code.

public class producer {                private static final string connection_factory = "connectionfactory";          private static final string connection_queue = "jms/myqueue";         private static final string connection_topic = "jms/mytopic";           public producer(string message) {                  connectionfactory connectionfactory = null;                connection connection = null;                  //get jndi context                 try {                     context jndicontext = new initialcontext();                    //create connection factory  , connection                  connectionfactory = (connectionfactory) jndicontext.lookup(producer.connection_factory);                    connection = connectionfactory.createconnection();                //create session                        session session = connection.createsession(false, session.auto_acknowledge);                                 publishtoqueue(jndicontext, session, message);                 session.commit();         } catch (namingexception e) {                     } catch (jmsexception e) {              }finally{                   //close connection              }        }              private void publishtoqueue(context jndicontext, session session, string message) throws namingexception, jmsexception{               //create queue              queue queue = (queue) jndicontext.lookup(producer.connection_queue);           //create message producer                messageproducer producer = session.createproducer(queue);               //send textmessage                 producer.setdeliverymode(deliverymode.persistent);         textmessage textmessage = session.createtextmessage();             textmessage.settext(message);         producer.send(textmessage);           producer.close();  }   }    public class consumer {                private static final string connection_factory = "connectionfactory";          private static final string connection_queue = "jms/myqueue";         private static final string connection_topic = "jms/mytopic";           private message message;      public consumer() {                 connectionfactory connectionfactory = null;                connection connection = null;                  //get jndi context                 try {                     context jndicontext = new initialcontext();               //create connection factory                connectionfactory = (connectionfactory) jndicontext.lookup(consumer.connection_factory);                connection = connectionfactory.createconnection();            //create session                    session session = connection.createsession(false, session.auto_acknowledge);                             //call methods retrieve  message               message = getfromqueue(jndicontext, session);             session.commit();         if(message!=null){             system.out.println("message received");         }     } catch (namingexception e) {                     // todo auto-generated catch block                e.printstacktrace();             } catch (jmsexception e) {             // todo auto-generated catch block             e.printstacktrace();             }finally{                try {                        if(connection != null){                     connection.close();                 }                     } catch (jmsexception e) {                e.printstacktrace();                  }            }    }            private message getfromqueue(context jndicontext, session session) throws namingexception, jmsexception{           //create new queue     queue queue = (queue)jndicontext.lookup(consumer.connection_queue);       //create message consumer            messageconsumer consumer = session.createconsumer(queue);      return consumer.receive(10000);     }  public message getmessage(){     return message; } }  

sorry, found answer in question.. messageconsumer not consuming messages .. needed call connection.start() before getfromqueue method

 public consumer() {             connectionfactory connectionfactory = null;            connection connection = null;              //get jndi context             try {                 context jndicontext = new initialcontext();           //create connection factory            connectionfactory = (connectionfactory) jndicontext.lookup(consumer.connection_factory);            connection = connectionfactory.createconnection();        //create session                session session = connection.createsession(false, session.auto_acknowledge);                         //call methods retrieve  message         --> connection.start(); <--     message = getfromqueue(jndicontext, session);         session.commit();     if(message!=null){         system.out.println("message received");     } 

Comments

Popular posts from this blog

basic authentication with http post params android -

vb.net - Virtual Keyboard commands -

css - Firefox for ubuntu renders wrong colors -