package dk.thoerup.messagedriven; import java.io.IOException; import javax.annotation.Resource; import javax.jms.Connection; import javax.jms.ConnectionFactory; import javax.jms.MessageProducer; import javax.jms.Queue; import javax.jms.Session; import javax.jms.TextMessage; import javax.naming.InitialContext; import javax.naming.NamingException; 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 = "ProducerServlet", urlPatterns = { "/ProducerServlet" }) public class ProducerServlet extends HttpServlet { private static final long serialVersionUID = 1L; // why doesn't @Resource work ?? @Resource(mappedName = "jms/helloFactory") private static ConnectionFactory connectionFactory; @Resource(mappedName = "jms/hello") private static Queue queue; @Override public void init() throws ServletException { try { InitialContext ic = new InitialContext(); if (connectionFactory == null) { connectionFactory = (ConnectionFactory)ic.lookup("jms/helloFactory"); System.out.println("@Resource failed for connection factory"); } if (queue == null) { queue = (Queue)ic.lookup("jms/hello"); System.out.println("@Resource failed for queue"); } } catch(NamingException ne) { throw new ServletException(ne); } } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { Connection connection = connectionFactory.createConnection(); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); MessageProducer producer = session.createProducer(queue); TextMessage message = session.createTextMessage(); message.setStringProperty("name", "World!!"); message.setText("this is the body"); producer.send(message); response.getWriter().print("Message sent" ); } catch (Exception e) { throw new ServletException(e); } } }