You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by de...@apache.org on 2010/05/12 14:23:38 UTC
svn commit: r943467 -
/activemq/trunk/activemq-web/src/main/java/org/apache/activemq/web/MessageServlet.java
Author: dejanb
Date: Wed May 12 12:23:38 2010
New Revision: 943467
URL: http://svn.apache.org/viewvc?rev=943467&view=rev
Log:
https://issues.apache.org/activemq/browse/AMQ-2728 - cleaning up MessageServlet
Modified:
activemq/trunk/activemq-web/src/main/java/org/apache/activemq/web/MessageServlet.java
Modified: activemq/trunk/activemq-web/src/main/java/org/apache/activemq/web/MessageServlet.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-web/src/main/java/org/apache/activemq/web/MessageServlet.java?rev=943467&r1=943466&r2=943467&view=diff
==============================================================================
--- activemq/trunk/activemq-web/src/main/java/org/apache/activemq/web/MessageServlet.java (original)
+++ activemq/trunk/activemq-web/src/main/java/org/apache/activemq/web/MessageServlet.java Wed May 12 12:23:38 2010
@@ -20,8 +20,6 @@ package org.apache.activemq.web;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
import javax.jms.Destination;
import javax.jms.JMSException;
@@ -54,6 +52,9 @@ import org.eclipse.jetty.continuation.Co
* @version $Revision: 1.1.1.1 $
*/
public class MessageServlet extends MessageServletSupport {
+
+ private static final long serialVersionUID = 8737914695188481219L;
+
private static final Log LOG = LogFactory.getLog(MessageServlet.class);
private String readTimeoutParameter = "readTimeout";
@@ -142,7 +143,7 @@ public class MessageServlet extends Mess
* from a queue
*/
protected void doDelete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- doMessages(request, response, 1);
+ doMessages(request, response);
}
/**
@@ -150,7 +151,7 @@ public class MessageServlet extends Mess
* from a queue
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- doMessages(request, response, -1);
+ doMessages(request, response);
}
/**
@@ -161,7 +162,7 @@ public class MessageServlet extends Mess
* @throws ServletException
* @throws IOException
*/
- protected void doMessages(HttpServletRequest request, HttpServletResponse response, int maxMessages) throws ServletException, IOException {
+ protected void doMessages(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
WebClient client = getWebClient(request);
Destination destination = getDestination(client, request);
@@ -174,7 +175,7 @@ public class MessageServlet extends Mess
if (message != null) {
// we're resuming continuation,
// so just write the message and return
- writeResponse(request, response, maxMessages, message, consumer);
+ writeResponse(request, response, message);
return;
}
long timeout = getReadTimeout(request);
@@ -196,7 +197,7 @@ public class MessageServlet extends Mess
continuation = ContinuationSupport.getContinuation(request);
if (continuation.isExpired()) {
- response.setStatus(isRicoAjax(request) ? HttpServletResponse.SC_OK : HttpServletResponse.SC_NO_CONTENT);
+ response.setStatus(HttpServletResponse.SC_NO_CONTENT);
return;
}
@@ -214,33 +215,24 @@ public class MessageServlet extends Mess
listener.setContinuation(continuation);
}
- writeResponse(request, response, maxMessages, message, consumer);
+ writeResponse(request, response, message);
} catch (JMSException e) {
throw new ServletException("Could not post JMS message: " + e, e);
}
}
- protected void writeResponse(HttpServletRequest request, HttpServletResponse response, int maxMessages, Message message, MessageAvailableConsumer consumer) throws IOException, JMSException {
+ protected void writeResponse(HttpServletRequest request, HttpServletResponse response, Message message) throws IOException, JMSException {
int messages = 0;
try {
- boolean ajax = isRicoAjax(request);
- if (!ajax) {
- maxMessages = 1;
- }
// write a responds
response.setContentType("text/xml");
PrintWriter writer = response.getWriter();
- if (ajax) {
- writer.println("<ajax-response>");
- }
-
// handle any message(s)
if (message == null) {
// No messages so OK response of for ajax else no content.
- response.setStatus(ajax ? HttpServletResponse.SC_OK
- : HttpServletResponse.SC_NO_CONTENT);
+ response.setStatus(HttpServletResponse.SC_NO_CONTENT);
} else {
// We have at least one message so set up the response
response.setStatus(HttpServletResponse.SC_OK);
@@ -248,142 +240,10 @@ public class MessageServlet extends Mess
if (type != null) {
response.setContentType(type);
}
-
- // send a response for each available message (up to max
- // messages)
- while ((maxMessages < 0 || messages < maxMessages)
- && message != null) {
- if (ajax) {
- writer.print("<response type='object' id='");
- writer.print(request.getParameter("id"));
- writer.println("'>");
- } else {
- // only ever 1 message for non ajax!
- setResponseHeaders(response, message);
- }
-
- writeMessageResponse(writer, message);
-
- if (ajax) {
- writer.println("</response>");
- }
-
- // look for next message
- messages++;
- if (maxMessages < 0 || messages < maxMessages) {
- message = consumer.receiveNoWait();
- }
- }
- }
-
- if (ajax) {
- writer
- .println("<response type='object' id='poll'><ok/></response>");
- writer.println("</ajax-response>");
- }
- } finally {
- if (LOG.isDebugEnabled()) {
- LOG.debug("Received " + messages + " message(s)");
- }
- }
- }
-
- /**
- * Reads a message from a destination up to some specific timeout period
- *
- * @param request
- * @param response
- * @throws ServletException
- * @throws IOException
- */
- protected void doMessagesWithoutContinuation(HttpServletRequest request, HttpServletResponse response, int maxMessages) throws ServletException, IOException {
-
- int messages = 0;
- try {
- WebClient client = getWebClient(request);
- Destination destination = getDestination(client, request);
- long timeout = getReadTimeout(request);
- boolean ajax = isRicoAjax(request);
- if (!ajax) {
- maxMessages = 1;
- }
- if (LOG.isDebugEnabled()) {
- LOG.debug("Receiving message(s) from: " + destination + " with timeout: " + timeout);
- }
-
- MessageAvailableConsumer consumer = (MessageAvailableConsumer)client.getConsumer(destination, request.getHeader(WebClient.selectorName));
- Message message = null;
-
- // write a responds
- response.setContentType("text/xml");
- PrintWriter writer = response.getWriter();
-
- if (ajax) {
- writer.println("<ajax-response>");
- }
-
- // Only one client thread at a time should poll for messages.
- if (client.getSemaphore().tryAcquire()) {
- try {
- // Look for any available messages
- message = consumer.receive(timeout);
-
- // handle any message(s)
- if (message == null) {
- // No messages so OK response of for ajax else no
- // content.
- response.setStatus(ajax ? HttpServletResponse.SC_OK : HttpServletResponse.SC_NO_CONTENT);
- } else {
- // We have at least one message so set up the
- // response
- response.setStatus(HttpServletResponse.SC_OK);
- String type = getContentType(request);
- if (type != null) {
- response.setContentType(type);
- }
-
- // send a response for each available message (up to
- // max
- // messages)
- while ((maxMessages < 0 || messages < maxMessages) && message != null) {
- if (ajax) {
- writer.print("<response type='object' id='");
- writer.print(request.getParameter("id"));
- writer.println("'>");
- } else {
- // only ever 1 message for non ajax!
- setResponseHeaders(response, message);
- }
-
- writeMessageResponse(writer, message);
-
- if (ajax) {
- writer.println("</response>");
- }
-
- // look for next message
- messages++;
- if(maxMessages < 0 || messages < maxMessages) {
- message = consumer.receiveNoWait();
- }
-
- }
- }
- } finally {
- client.getSemaphore().release();
- }
- } else {
- // Client is using us in another thread.
- response.setStatus(ajax ? HttpServletResponse.SC_OK : HttpServletResponse.SC_NO_CONTENT);
- }
-
- if (ajax) {
- writer.println("<response type='object' id='poll'><ok/></response>");
- writer.println("</ajax-response>");
+
+ setResponseHeaders(response, message);
+ writeMessageResponse(writer, message);
}
-
- } catch (JMSException e) {
- throw new ServletException("Could not post JMS message: " + e, e);
} finally {
if (LOG.isDebugEnabled()) {
LOG.debug("Received " + messages + " message(s)");
@@ -472,7 +332,6 @@ public class MessageServlet extends Mess
private static class Listener implements MessageAvailableListener {
MessageConsumer consumer;
Continuation continuation;
- List queue = new LinkedList();
Listener(MessageConsumer consumer) {
this.consumer = consumer;
@@ -493,7 +352,7 @@ public class MessageServlet extends Mess
Message message = consumer.receiveNoWait();
continuation.setAttribute("message", message);
} catch (Exception e) {
- e.printStackTrace();
+ LOG.error("Error receiving message " + e, e);
}
continuation.resume();
}