Sending AJMS message from a servlet
package com.ack.web.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.jms.*;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* web.xml servlet configuration file
*
...
outgoing jms send
jms/queue/connection
javax.jms.QueueConnectionFactory
CONTAINER
...
*
* the vendor-specific web.xml file that maps the res-ref-name
* onto the one found in the jndi name space
*
...
jms/queue/connection
jms/akira/connectionfactory
...
...
*/
public class SendingAJMSMessageFromAServlet extends HttpServlet {
public void doGet( HttpServletRequest req, HttpServletResponse res )
throws ServletException, IOException {
res.setContentType( "text/html" );
PrintWriter pw = res.getWriter();
QueueConnection queueCon = null;
try {
// get the queue connection factory
Context ctx = new InitialContext();
QueueConnectionFactory qcf
= (QueueConnectionFactory) ctx.lookup( "java:comp/env/jms/queue/connection" );
queueCon = qcf.createQueueConnection();
// create queue session off the connection
QueueSession queueSession = queueCon.
createQueueSession( false, Session.AUTO_ACKNOWLEDGE );
// get handle on queue, create a sender and send the message
Queue queue = (Queue) ctx.lookup( "jms/queue/devilman" );
QueueSender sender = queueSession.createSender( queue );
Message msg = queueSession.createTextMessage( "hello..." );
sender.send( msg );
pw.println( "sent the message" );
}
catch( Exception ex ) {
log( "couldn't send the message", ex );
res.sendError( res.SC_INTERNAL_SERVER_ERROR, ex.getMessage() );
}
finally {
// close the queue connection
if( queueCon != null ) {
try {
queueCon.close();
}
catch( JMSException jme ) {
log( "problem closing queue con" );
}
}
}
}
}