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:
- java.io.Serializable, javax.servlet.Servlet, javax.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
- Version:
- $Revision: 1.1.1.1 $
- See Also:
- Serialized Form
Method Summary |
protected void |
doGet(javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
Supports a HTTP DELETE to be equivlanent of consuming a singe message
from a queue |
protected void |
doMessages(WebClient client,
javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
Reads a message from a destination up to some specific timeout period |
protected void |
doPost(javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
Sends a message to a destination or manage subscriptions. |
protected java.util.Map |
getConsumerIdMap(javax.servlet.http.HttpServletRequest request)
|
protected org.apache.activemq.web.MessageListenerServlet.Listener |
getListener(javax.servlet.http.HttpServletRequest request)
|
protected long |
getReadTimeout(javax.servlet.http.HttpServletRequest request)
|
void |
init()
|
protected boolean |
isRicoAjax(javax.servlet.http.HttpServletRequest request)
|
protected void |
writeMessageResponse(java.io.PrintWriter writer,
javax.jms.Message message)
|
Methods inherited from class org.apache.activemq.web.MessageServletSupport |
appendParametersToMessage, asBoolean, asBoolean, asDestination, asInt, asInteger, asLong, asLong, asString, getDestination, getDestination, getDestinationFromURI, getPostedMessageBody, getSendPriority, getSendTimeToLive, init, isSendPersistent, isTopic |
Methods inherited from class javax.servlet.http.HttpServlet |
doDelete, doHead, doOptions, doPut, doTrace, getLastModified, service, service |
Methods inherited from class javax.servlet.GenericServlet |
destroy, 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 |
MessageListenerServlet
public MessageListenerServlet()
init
public void init()
throws javax.servlet.ServletException
- Overrides:
init
in class javax.servlet.GenericServlet
- Throws:
javax.servlet.ServletException
doPost
protected void doPost(javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
throws javax.servlet.ServletException,
java.io.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 javax.servlet.http.HttpServlet
- Parameters:
request
- response
-
- Throws:
javax.servlet.ServletException
java.io.IOException
doGet
protected void doGet(javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
throws javax.servlet.ServletException,
java.io.IOException
- Supports a HTTP DELETE to be equivlanent of consuming a singe message
from a queue
- Overrides:
doGet
in class javax.servlet.http.HttpServlet
- Throws:
javax.servlet.ServletException
java.io.IOException
doMessages
protected void doMessages(WebClient client,
javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
throws javax.jms.JMSException,
java.io.IOException
- Reads a message from a destination up to some specific timeout period
- Parameters:
client
- The webclientrequest
- response
-
- Throws:
javax.servlet.ServletException
java.io.IOException
javax.jms.JMSException
writeMessageResponse
protected void writeMessageResponse(java.io.PrintWriter writer,
javax.jms.Message message)
throws javax.jms.JMSException,
java.io.IOException
- Throws:
javax.jms.JMSException
java.io.IOException
getListener
protected org.apache.activemq.web.MessageListenerServlet.Listener getListener(javax.servlet.http.HttpServletRequest request)
getConsumerIdMap
protected java.util.Map getConsumerIdMap(javax.servlet.http.HttpServletRequest request)
isRicoAjax
protected boolean isRicoAjax(javax.servlet.http.HttpServletRequest request)
getReadTimeout
protected long getReadTimeout(javax.servlet.http.HttpServletRequest request)
- Returns:
- the timeout value for read requests which is always >= 0 and <=
maximumReadTimeout to avoid DoS attacks
Copyright © 2011 Apache Software Foundation. All Rights Reserved.