org.apache.activemq.web
Class MessageListenerServlet

java.lang.Object
  extended by javax.servlet.GenericServlet
      extended by javax.servlet.http.HttpServlet
          extended by org.apache.activemq.web.MessageServletSupport
              extended by org.apache.activemq.web.MessageListenerServlet
All Implemented Interfaces:
Serializable, Servlet, ServletConfig
Direct Known Subclasses:
AjaxServlet

public class MessageListenerServlet
extends MessageServletSupport

A servlet for sending and receiving messages to/from JMS destinations using HTTP POST for sending and HTTP GET for receiving.

You can specify the destination and whether it is a topic or queue via configuration details on the servlet or as request parameters.

For reading messages you can specify a readTimeout parameter to determine how long the servlet should block for. The servlet can be configured with the following init parameters:

defaultReadTimeout
The default time in ms to wait for messages. May be overridden by a request using the 'timeout' parameter
maximumReadTimeout
The maximum value a request may specify for the 'timeout' parameter
maximumMessages
maximum messages to send per response

See Also:
Serialized Form

Constructor Summary
MessageListenerServlet()
           
 
Method Summary
 void destroy()
           
protected  void doGet(HttpServletRequest request, HttpServletResponse response)
          Supports a HTTP DELETE to be equivlanent of consuming a singe message from a queue
protected  void doMessages(AjaxWebClient client, HttpServletRequest request, HttpServletResponse response)
          Reads a message from a destination up to some specific timeout period
protected  void doPost(HttpServletRequest request, HttpServletResponse response)
          Sends a message to a destination or manage subscriptions.
protected  AjaxWebClient getAjaxWebClient(HttpServletRequest request)
           
protected  long getReadTimeout(HttpServletRequest request)
           
 void init()
           
protected  void writeMessageResponse(PrintWriter writer, Message message, String id, String destinationName)
           
 
Methods inherited from class org.apache.activemq.web.MessageServletSupport
appendParametersToMessage, asBoolean, asBoolean, asDestination, asInt, asInteger, asLong, asLong, asString, getDestination, getDestination, getDestinationFromURI, getPostedMessageBody, getSelector, getSendPriority, getSendTimeToLive, init, isSendPersistent, isSync, isTopic
 
Methods inherited from class javax.servlet.http.HttpServlet
doDelete, doHead, doOptions, doPut, doTrace, getLastModified, service, service
 
Methods inherited from class javax.servlet.GenericServlet
getInitParameter, getInitParameterNames, getServletConfig, getServletContext, getServletInfo, getServletName, log, log
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

MessageListenerServlet

public MessageListenerServlet()
Method Detail

init

public void init()
          throws ServletException
Overrides:
init in class GenericServlet
Throws:
ServletException

doPost

protected void doPost(HttpServletRequest request,
                      HttpServletResponse response)
               throws ServletException,
                      IOException
Sends a message to a destination or manage subscriptions. If the the content type of the POST is application/x-www-form-urlencoded, then the form parameters "destination", "message" and "type" are used to pass a message or a subscription. If multiple messages or subscriptions are passed in a single post, then additional parameters are shortened to "dN", "mN" and "tN" where N is an index starting from 1. The type is either "send", "listen" or "unlisten". For send types, the message is the text of the TextMessage, otherwise it is the ID to be used for the subscription. If the content type is not application/x-www-form-urlencoded, then the body of the post is sent as the message to a destination that is derived from a query parameter, the URL or the default destination.

Overrides:
doPost in class HttpServlet
Parameters:
request -
response -
Throws:
ServletException
IOException

doGet

protected void doGet(HttpServletRequest request,
                     HttpServletResponse response)
              throws ServletException,
                     IOException
Supports a HTTP DELETE to be equivlanent of consuming a singe message from a queue

Overrides:
doGet in class HttpServlet
Throws:
ServletException
IOException

doMessages

protected void doMessages(AjaxWebClient client,
                          HttpServletRequest request,
                          HttpServletResponse response)
                   throws JMSException,
                          IOException
Reads a message from a destination up to some specific timeout period

Parameters:
client - The webclient
request -
response -
Throws:
ServletException
IOException
JMSException

writeMessageResponse

protected void writeMessageResponse(PrintWriter writer,
                                    Message message,
                                    String id,
                                    String destinationName)
                             throws JMSException,
                                    IOException
Throws:
JMSException
IOException

getAjaxWebClient

protected AjaxWebClient getAjaxWebClient(HttpServletRequest request)

getReadTimeout

protected long getReadTimeout(HttpServletRequest request)
Returns:
the timeout value for read requests which is always >= 0 and <= maximumReadTimeout to avoid DoS attacks

destroy

public void destroy()
Specified by:
destroy in interface Servlet
Overrides:
destroy in class GenericServlet


Copyright © 2005–2013 The Apache Software Foundation. All rights reserved.