JSP+JMS+EJB Envoie de Message .
Bonjour tout le monde,
Je suis entrain de développer une petite application qui envoie un message à partir d'une page JSP . ce message sera envoyer à la Queue puis à mon Message Driven bean.
une fois que mon bean récupère le message je voulais qu'il fasse la même chose qu'il envoie le message à une autre Queue et que ma JSP recoit le message .
Je connais pas trop bien comment je récupère le message :/
Bon voila ce que j'ai fais . Mon Message driven bean il recupere bien le message mais je sais pas comment je pourrai faire pour envoyer le message a nouveau à ma JSP.
Ma Servlet :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
|
/*
* sendMessage.java
*
* Created on May 5, 2006, 2:47 PM
*/
package servlets;
import java.io.*;
import java.net.*;
import javax.annotation.Resource;
import javax.jms.ConnectionFactory;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueReceiver;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.servlet.*;
import javax.servlet.http.*;
/**
*
* @author Masoud Kalali
* @version
*/
public class sendMessage extends HttpServlet {
/** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
* @param request servlet request
* @param response servlet response
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
//start the jms stuff
try{
//+++++++++++++++++++++++++++++++++++++++++ Send MSG +++++++++++++++++++++++++++++++++++++++
Context ctx = new InitialContext();
ConnectionFactory connectionFactory = (ConnectionFactory)ctx.lookup("jms/tConnectionFactory");
Queue queue = (Queue)ctx.lookup("jms/tQueue");
javax.jms.Connection connection = connectionFactory.createConnection();
javax.jms.Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
MessageProducer messageProducer = session.createProducer(queue);
TextMessage message = session.createTextMessage();
message.setText(request.getParameter("message"));
System.out.println( "It come from Servlet:"+ message.getText());
messageProducer.send(message);
session.close();
//message sent , it was all
//show what we have done in this servlet
/*
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet sendMessage</title>");
out.println("</head>");
out.println("<body>");
out.println("<center>");
out.print("Servlet Send this message <h2></h2> to this Queue : <h2>"+queue1.getQueueName()+"</h2>");
out.println("</center>");
out.println("</body>");
out.println("</html>");
*/
} catch(Exception ex){
ex.printStackTrace();
}
//out.close();
}
// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/** Handles the HTTP <code>GET</code> method.
* @param request servlet request
* @param response servlet response
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/** Handles the HTTP <code>POST</code> method.
* @param request servlet request
* @param response servlet response
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/** Returns a short description of the servlet.
*/
public String getServletInfo() {
return "Short description";
}
// </editor-fold>
} |
Mon Message Driven Bean
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package mdbc;
import javax.annotation.Resource;
import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.ejb.MessageDrivenContext;
import javax.jms.ConnectionFactory;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.naming.Context;
import javax.naming.InitialContext;
/**
*
* @author NaoufaL
*/
@MessageDriven(mappedName = "jms/tQueue", activationConfig = {
@ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"),
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue")
})
public class TMDBBean implements MessageListener {
/** Creates a new instance of TMDB */
public TMDBBean() {
}
@Resource
private MessageDrivenContext mdc;
public void onMessage(Message message) {
TextMessage msg = null;
try {
if (message instanceof TextMessage) {
msg = (TextMessage) message;
System.out.println("A Message received in TMDB: " +
msg.getText());
} else {
System.out.println("Message of wrong type: " +
message.getClass().getName());
}
//++++++++++++++++++++++++++++++++++++++ Replay +++++++++++++++++++++++++++++++++++++++++++
} catch (JMSException e) {
e.printStackTrace();
mdc.setRollbackOnly();
} catch (Throwable te) {
te.printStackTrace();
}
}
} |
je vous précise bien que j'utilise . netbeans6.5 avec GlassFish.
je vous rapelle aussi que j'ai deja crée mes pool de connection JNDI et mon Queue sous Glassfish .
Merci d'avance .