Package org.apache.activemq.web
Class MessageListenerServlet
- java.lang.Object
-
- javax.servlet.GenericServlet
-
- javax.servlet.http.HttpServlet
-
- org.apache.activemq.web.MessageServletSupport
-
- 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
Constructors Constructor Description MessageListenerServlet()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
destroy()
protected void
doGet(HttpServletRequest request, HttpServletResponse response)
Supports a HTTP DELETE to be equivlanent of consuming a singe message from a queueprotected void
doMessages(AjaxWebClient client, HttpServletRequest request, HttpServletResponse response)
Reads a message from a destination up to some specific timeout periodprotected 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
-
-
-
-
Method Detail
-
init
public void init() throws ServletException
- Overrides:
init
in classGenericServlet
- 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 isapplication/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 notapplication/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 classHttpServlet
- 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 classHttpServlet
- 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 webclientrequest
-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 interfaceServlet
- Overrides:
destroy
in classGenericServlet
-
-