mirror of https://github.com/apache/activemq.git
minor refactor to make the WebClient easier to use as a stand alone POJO
git-svn-id: https://svn.apache.org/repos/asf/incubator/activemq/trunk@397149 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
535e16a3e4
commit
c1a1dd2689
|
@ -101,7 +101,7 @@ public class MessageListenerServlet extends MessageServletSupport {
|
||||||
|
|
||||||
// lets turn the HTTP post into a JMS Message
|
// lets turn the HTTP post into a JMS Message
|
||||||
|
|
||||||
WebClient client = getWebClient(request);
|
WebClient client = WebClient.getWebClient(request);
|
||||||
String message_ids="";
|
String message_ids="";
|
||||||
|
|
||||||
synchronized (client) {
|
synchronized (client) {
|
||||||
|
@ -227,7 +227,7 @@ public class MessageListenerServlet extends MessageServletSupport {
|
||||||
*/
|
*/
|
||||||
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
||||||
try {
|
try {
|
||||||
WebClient client = getWebClient(request);
|
WebClient client = WebClient.getWebClient(request);
|
||||||
if (log.isDebugEnabled()) {
|
if (log.isDebugEnabled()) {
|
||||||
log.debug("GET client="+client+" session="+request.getSession().getId()+" uri="+request.getRequestURI()+" query="+request.getQueryString());
|
log.debug("GET client="+client+" session="+request.getSession().getId()+" uri="+request.getRequestURI()+" query="+request.getQueryString());
|
||||||
}
|
}
|
||||||
|
@ -371,7 +371,7 @@ public class MessageListenerServlet extends MessageServletSupport {
|
||||||
HttpSession session = request.getSession();
|
HttpSession session = request.getSession();
|
||||||
Listener listener = (Listener) session.getAttribute("mls.listener");
|
Listener listener = (Listener) session.getAttribute("mls.listener");
|
||||||
if (listener == null) {
|
if (listener == null) {
|
||||||
listener = new Listener(getWebClient(request));
|
listener = new Listener(WebClient.getWebClient(request));
|
||||||
session.setAttribute("mls.listener", listener);
|
session.setAttribute("mls.listener", listener);
|
||||||
}
|
}
|
||||||
return listener;
|
return listener;
|
||||||
|
|
|
@ -80,7 +80,7 @@ public class MessageServlet extends MessageServletSupport {
|
||||||
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
||||||
// lets turn the HTTP post into a JMS Message
|
// lets turn the HTTP post into a JMS Message
|
||||||
try {
|
try {
|
||||||
WebClient client = getWebClient(request);
|
WebClient client = WebClient.getWebClient(request);
|
||||||
|
|
||||||
String text = getPostedMessageBody(request);
|
String text = getPostedMessageBody(request);
|
||||||
|
|
||||||
|
@ -137,7 +137,7 @@ public class MessageServlet extends MessageServletSupport {
|
||||||
|
|
||||||
int messages = 0;
|
int messages = 0;
|
||||||
try {
|
try {
|
||||||
WebClient client = getWebClient(request);
|
WebClient client = WebClient.getWebClient(request);
|
||||||
Destination destination = getDestination(client, request);
|
Destination destination = getDestination(client, request);
|
||||||
if (destination==null)
|
if (destination==null)
|
||||||
throw new NoDestinationSuppliedException();
|
throw new NoDestinationSuppliedException();
|
||||||
|
@ -254,7 +254,7 @@ public class MessageServlet extends MessageServletSupport {
|
||||||
|
|
||||||
int messages = 0;
|
int messages = 0;
|
||||||
try {
|
try {
|
||||||
WebClient client = getWebClient(request);
|
WebClient client = WebClient.getWebClient(request);
|
||||||
Destination destination = getDestination(client, request);
|
Destination destination = getDestination(client, request);
|
||||||
long timeout = getReadTimeout(request);
|
long timeout = getReadTimeout(request);
|
||||||
boolean ajax = isRicoAjax(request);
|
boolean ajax = isRicoAjax(request);
|
||||||
|
|
|
@ -28,7 +28,6 @@ import javax.servlet.ServletConfig;
|
||||||
import javax.servlet.ServletException;
|
import javax.servlet.ServletException;
|
||||||
import javax.servlet.http.HttpServlet;
|
import javax.servlet.http.HttpServlet;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpSession;
|
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
@ -58,7 +57,6 @@ public abstract class MessageServletSupport extends HttpServlet {
|
||||||
private int defaultMessagePriority = 5;
|
private int defaultMessagePriority = 5;
|
||||||
private long defaultMessageTimeToLive = 0;
|
private long defaultMessageTimeToLive = 0;
|
||||||
|
|
||||||
|
|
||||||
public void init(ServletConfig servletConfig) throws ServletException {
|
public void init(ServletConfig servletConfig) throws ServletException {
|
||||||
super.init(servletConfig);
|
super.init(servletConfig);
|
||||||
|
|
||||||
|
@ -83,10 +81,6 @@ public abstract class MessageServletSupport extends HttpServlet {
|
||||||
WebClient.initContext(getServletContext());
|
WebClient.initContext(getServletContext());
|
||||||
}
|
}
|
||||||
|
|
||||||
protected WebClient createWebClient(HttpServletRequest request) {
|
|
||||||
return new WebClient();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean asBoolean(String param) {
|
public static boolean asBoolean(String param) {
|
||||||
return asBoolean(param, false);
|
return asBoolean(param, false);
|
||||||
}
|
}
|
||||||
|
@ -100,22 +94,6 @@ public abstract class MessageServletSupport extends HttpServlet {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Helper method to get the client for the current session
|
|
||||||
*
|
|
||||||
* @param request is the current HTTP request
|
|
||||||
* @return the current client or a newly creates
|
|
||||||
*/
|
|
||||||
protected WebClient getWebClient(HttpServletRequest request) {
|
|
||||||
HttpSession session = request.getSession(true);
|
|
||||||
WebClient client = WebClient.getWebClient(session);
|
|
||||||
if (client == null || client.isClosed()) {
|
|
||||||
client = createWebClient(request);
|
|
||||||
session.setAttribute(WebClient.webClientAttribute, client);
|
|
||||||
}
|
|
||||||
return client;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
protected void appendParametersToMessage(HttpServletRequest request, TextMessage message) throws JMSException {
|
protected void appendParametersToMessage(HttpServletRequest request, TextMessage message) throws JMSException {
|
||||||
Map parameterMap = request.getParameterMap();
|
Map parameterMap = request.getParameterMap();
|
||||||
|
|
|
@ -63,7 +63,7 @@ public class PortfolioPublishServlet extends MessageServletSupport {
|
||||||
request.getSession().setAttribute("total",total);
|
request.getSession().setAttribute("total",total);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
WebClient client = getWebClient(request);
|
WebClient client = WebClient.getWebClient(request);
|
||||||
for (int i = 0; i < count; i++) {
|
for (int i = 0; i < count; i++) {
|
||||||
sendMessage(client, stocks);
|
sendMessage(client, stocks);
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,6 +36,7 @@ import javax.jms.MessageConsumer;
|
||||||
import javax.jms.MessageProducer;
|
import javax.jms.MessageProducer;
|
||||||
import javax.jms.Session;
|
import javax.jms.Session;
|
||||||
import javax.servlet.ServletContext;
|
import javax.servlet.ServletContext;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpSession;
|
import javax.servlet.http.HttpSession;
|
||||||
import javax.servlet.http.HttpSessionActivationListener;
|
import javax.servlet.http.HttpSessionActivationListener;
|
||||||
import javax.servlet.http.HttpSessionBindingEvent;
|
import javax.servlet.http.HttpSessionBindingEvent;
|
||||||
|
@ -77,6 +78,23 @@ public class WebClient implements HttpSessionActivationListener, HttpSessionBind
|
||||||
|
|
||||||
private final Semaphore semaphore = new Semaphore(1);
|
private final Semaphore semaphore = new Semaphore(1);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Helper method to get the client for the current session, lazily creating
|
||||||
|
* a client if there is none currently
|
||||||
|
*
|
||||||
|
* @param request is the current HTTP request
|
||||||
|
* @return the current client or a newly creates
|
||||||
|
*/
|
||||||
|
public static WebClient getWebClient(HttpServletRequest request) {
|
||||||
|
HttpSession session = request.getSession(true);
|
||||||
|
WebClient client = getWebClient(session);
|
||||||
|
if (client == null || client.isClosed()) {
|
||||||
|
client = WebClient.createWebClient(request);
|
||||||
|
session.setAttribute(webClientAttribute, client);
|
||||||
|
}
|
||||||
|
return client;
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* @return the web client for the current HTTP session or null if there is
|
* @return the web client for the current HTTP session or null if there is
|
||||||
* not a web client created yet
|
* not a web client created yet
|
||||||
|
@ -89,8 +107,6 @@ public class WebClient implements HttpSessionActivationListener, HttpSessionBind
|
||||||
initConnectionFactory(context);
|
initConnectionFactory(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
*/
|
|
||||||
public WebClient() {
|
public WebClient() {
|
||||||
if (factory == null)
|
if (factory == null)
|
||||||
throw new IllegalStateException("initContext(ServletContext) not called");
|
throw new IllegalStateException("initContext(ServletContext) not called");
|
||||||
|
@ -284,4 +300,9 @@ public class WebClient implements HttpSessionActivationListener, HttpSessionBind
|
||||||
public void valueUnbound(HttpSessionBindingEvent event) {
|
public void valueUnbound(HttpSessionBindingEvent event) {
|
||||||
close();
|
close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected static WebClient createWebClient(HttpServletRequest request) {
|
||||||
|
return new WebClient();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue