Package org.apache.activemq.web
Class MessageServlet
- java.lang.Object
-
- javax.servlet.GenericServlet
-
- javax.servlet.http.HttpServlet
-
- org.apache.activemq.web.MessageServletSupport
-
- org.apache.activemq.web.MessageServlet
-
- All Implemented Interfaces:
Serializable,javax.servlet.Servlet,javax.servlet.ServletConfig
public class MessageServlet 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. One thing to keep in mind with this solution - due to the nature of REST, there will always be a chance of losing messages. Consider what happens when a message is retrieved from the broker but the web call is interrupted before the client receives the message in the response - the message is lost.- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Constructor Description MessageServlet()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidcloseConsumerOnOneShot(javax.servlet.http.HttpServletRequest request, WebClient client, javax.jms.Destination dest)Close the consumer if one-shot mode is used on the given request.protected voiddoDelete(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)Supports a HTTP DELETE to be equivalent of consuming a single message from a queueprotected voiddoGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)Supports a HTTP DELETE to be equivalent of consuming a single message from a queueprotected voiddoMessages(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)Reads a message from a destination up to some specific timeout periodprotected voiddoPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)Sends a message to a destinationprotected StringgetContentType(javax.servlet.http.HttpServletRequest request)protected longgetReadDeadline(javax.servlet.http.HttpServletRequest request)WebClientgetWebClient(javax.servlet.http.HttpServletRequest request)protected voidhandleAsyncRequest(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, WebClient client, javax.jms.Destination destination, org.apache.activemq.MessageAvailableConsumer consumer, long deadline)voidinit()protected booleanisXmlContent(javax.jms.Message message)protected voidsetResponseHeaders(javax.servlet.http.HttpServletResponse response, javax.jms.Message message)protected voidwriteMessageResponse(PrintWriter writer, javax.jms.Message message)protected voidwriteResponse(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, 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, getSelector, getSendPriority, getSendTimeToLive, init, isSendPersistent, isSync, isTopic
-
Methods inherited from class javax.servlet.http.HttpServlet
doHead, doOptions, doPut, doTrace, getLastModified, service, service
-
-
-
-
Method Detail
-
init
public void init() throws javax.servlet.ServletException- Overrides:
initin classjavax.servlet.GenericServlet- Throws:
javax.servlet.ServletException
-
doPost
protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOExceptionSends a message to a destination- Overrides:
doPostin classjavax.servlet.http.HttpServlet- Parameters:
request-response-- Throws:
javax.servlet.ServletExceptionIOException
-
doDelete
protected void doDelete(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOExceptionSupports a HTTP DELETE to be equivalent of consuming a single message from a queue- Overrides:
doDeletein classjavax.servlet.http.HttpServlet- Throws:
javax.servlet.ServletExceptionIOException
-
doGet
protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOExceptionSupports a HTTP DELETE to be equivalent of consuming a single message from a queue- Overrides:
doGetin classjavax.servlet.http.HttpServlet- Throws:
javax.servlet.ServletExceptionIOException
-
doMessages
protected void doMessages(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOExceptionReads a message from a destination up to some specific timeout period- Parameters:
request-response-- Throws:
javax.servlet.ServletExceptionIOException
-
handleAsyncRequest
protected void handleAsyncRequest(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, WebClient client, javax.jms.Destination destination, org.apache.activemq.MessageAvailableConsumer consumer, long deadline)
-
writeResponse
protected void writeResponse(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, javax.jms.Message message) throws IOException, javax.jms.JMSException- Throws:
IOExceptionjavax.jms.JMSException
-
writeMessageResponse
protected void writeMessageResponse(PrintWriter writer, javax.jms.Message message) throws javax.jms.JMSException, IOException
- Throws:
javax.jms.JMSExceptionIOException
-
isXmlContent
protected boolean isXmlContent(javax.jms.Message message) throws javax.jms.JMSException- Throws:
javax.jms.JMSException
-
getWebClient
public WebClient getWebClient(javax.servlet.http.HttpServletRequest request)
-
getContentType
protected String getContentType(javax.servlet.http.HttpServletRequest request)
-
setResponseHeaders
protected void setResponseHeaders(javax.servlet.http.HttpServletResponse response, javax.jms.Message message) throws javax.jms.JMSException- Throws:
javax.jms.JMSException
-
getReadDeadline
protected long getReadDeadline(javax.servlet.http.HttpServletRequest request)
- Returns:
- the timeout value for read requests which is always >= 0 and <= maximumReadTimeout to avoid DoS attacks
-
closeConsumerOnOneShot
protected void closeConsumerOnOneShot(javax.servlet.http.HttpServletRequest request, WebClient client, javax.jms.Destination dest)Close the consumer if one-shot mode is used on the given request.
-
-