/[projects]/miscJava/Test3/src/dk/thoerup/messagedriven/ReverserServlet.java
ViewVC logotype

Annotation of /miscJava/Test3/src/dk/thoerup/messagedriven/ReverserServlet.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1277 - (hide annotations) (download)
Thu Apr 7 19:44:38 2011 UTC (13 years, 2 months ago) by torben
File size: 2895 byte(s)
Use Correlation ID to pair request / response messages
1 torben 1275 package dk.thoerup.messagedriven;
2    
3     import java.io.IOException;
4 torben 1277 import java.util.Random;
5 torben 1275
6     import javax.annotation.Resource;
7     import javax.jms.Message;
8     import javax.jms.MessageListener;
9     import javax.jms.MessageProducer;
10     import javax.jms.Queue;
11     import javax.jms.QueueConnection;
12     import javax.jms.QueueConnectionFactory;
13     import javax.jms.QueueReceiver;
14     import javax.jms.QueueSession;
15     import javax.jms.Session;
16     import javax.jms.TextMessage;
17     import javax.servlet.ServletException;
18     import javax.servlet.annotation.WebServlet;
19     import javax.servlet.http.HttpServlet;
20     import javax.servlet.http.HttpServletRequest;
21     import javax.servlet.http.HttpServletResponse;
22    
23     @WebServlet(name = "ReverserServlet", urlPatterns = { "/ReverserServlet" })
24     public class ReverserServlet extends HttpServlet {
25     private static final long serialVersionUID = 1L;
26    
27     // resource mapped vars may of course not be static !
28     @Resource(mappedName = "jms/helloFactory")
29     private QueueConnectionFactory connectionFactory;
30    
31     @Resource(mappedName = "jms/reverse")
32     private Queue queue;
33    
34     @Resource(mappedName = "jms/reverseResponse")
35     private Queue responseQueue;
36    
37    
38    
39     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
40     String msg = request.getParameter("msg");
41     if (msg == null)
42     msg = "Default";
43    
44 torben 1277 Random r = new Random();
45    
46 torben 1275 try {
47     QueueConnection connection = connectionFactory.createQueueConnection();
48    
49    
50     QueueSession session = connection.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE);
51     MessageProducer producer = session.createProducer(queue);
52    
53     TextMessage message = session.createTextMessage();
54    
55 torben 1277 String corrID = "" + r.nextInt();
56    
57 torben 1275 message.setText(msg);
58     message.setJMSReplyTo(responseQueue);
59 torben 1277 message.setJMSCorrelationID(corrID);
60    
61 torben 1276
62 torben 1275 producer.send(message);
63    
64 torben 1277 //Remember ' around the correleationID in JMS selector
65     QueueReceiver consumer = session.createReceiver(responseQueue,"JMSCorrelationID='" + corrID + "'");
66 torben 1276 connection.start(); //incomming messages is not received until a start is given
67 torben 1275
68    
69 torben 1276 TextMessage reply = (TextMessage) consumer.receive(500); //wait max 500 ms for replay
70 torben 1275
71    
72     if (reply != null)
73 torben 1276 response.getWriter().print("Reply: " + reply.getText() );
74 torben 1275 else
75     response.getWriter().print("No reply !!!");
76    
77     connection.close();
78     } catch (Exception e) {
79     throw new ServletException(e);
80     }
81     }
82    
83     class Test implements MessageListener {
84    
85     @Override
86     public void onMessage(Message message) {
87     // TODO Auto-generated method stub
88     System.out.println("onMessage() ");
89     }
90    
91     }
92     }

  ViewVC Help
Powered by ViewVC 1.1.20