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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1277 - (show annotations) (download)
Thu Apr 7 19:44:38 2011 UTC (13 years, 1 month ago) by torben
File size: 2895 byte(s)
Use Correlation ID to pair request / response messages
1 package dk.thoerup.messagedriven;
2
3 import java.io.IOException;
4 import java.util.Random;
5
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 Random r = new Random();
45
46 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 String corrID = "" + r.nextInt();
56
57 message.setText(msg);
58 message.setJMSReplyTo(responseQueue);
59 message.setJMSCorrelationID(corrID);
60
61
62 producer.send(message);
63
64 //Remember ' around the correleationID in JMS selector
65 QueueReceiver consumer = session.createReceiver(responseQueue,"JMSCorrelationID='" + corrID + "'");
66 connection.start(); //incomming messages is not received until a start is given
67
68
69 TextMessage reply = (TextMessage) consumer.receive(500); //wait max 500 ms for replay
70
71
72 if (reply != null)
73 response.getWriter().print("Reply: " + reply.getText() );
74 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