package dk.thoerup.messagedriven; import java.io.IOException; import javax.annotation.Resource; import javax.jms.Message; import javax.jms.MessageListener; import javax.jms.MessageProducer; import javax.jms.Queue; import javax.jms.QueueConnection; import javax.jms.QueueConnectionFactory; import javax.jms.QueueReceiver; import javax.jms.QueueSession; import javax.jms.Session; import javax.jms.TextMessage; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet(name = "ReverserServlet", urlPatterns = { "/ReverserServlet" }) public class ReverserServlet extends HttpServlet { private static final long serialVersionUID = 1L; // resource mapped vars may of course not be static ! @Resource(mappedName = "jms/helloFactory") private QueueConnectionFactory connectionFactory; @Resource(mappedName = "jms/reverse") private Queue queue; @Resource(mappedName = "jms/reverseResponse") private Queue responseQueue; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String msg = request.getParameter("msg"); if (msg == null) msg = "Default"; try { QueueConnection connection = connectionFactory.createQueueConnection(); QueueSession session = connection.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE); MessageProducer producer = session.createProducer(queue); TextMessage message = session.createTextMessage(); message.setText(msg); message.setJMSReplyTo(responseQueue); producer.send(message); producer.close(); connection.close(); ///new session for receiving connection = connectionFactory.createQueueConnection(); session = connection.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE); QueueReceiver consumer = session.createReceiver(responseQueue); Message reply = consumer.receive(1000); //wait max 500 ms for replay if (reply != null) response.getWriter().print("Reply: " /*+ reply.getText()*/ ); else response.getWriter().print("No reply !!!"); connection.close(); } catch (Exception e) { throw new ServletException(e); } } class Test implements MessageListener { @Override public void onMessage(Message message) { // TODO Auto-generated method stub System.out.println("onMessage() "); } } }