Skip to content

Commit d5d59f1

Browse files
committed
[#1911] Update resource cleanup on queueBrowse servlet (#1912)
(cherry picked from commit 52bef00)
1 parent c84899b commit d5d59f1

2 files changed

Lines changed: 30 additions & 28 deletions

File tree

activemq-web/src/main/java/org/apache/activemq/web/QueueBrowseServlet.java

Lines changed: 28 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -67,34 +67,36 @@ public QueueBrowseServlet() {
6767
// -------------------------------------------------------------------------
6868
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
6969
try {
70-
WebClient client = WebClient.getWebClient(request);
71-
Session session = client.getSession();
72-
Queue queue = getQueue(request, session);
73-
if (queue == null) {
74-
throw new ServletException("No queue URI specified");
75-
}
76-
77-
String msgId = request.getParameter("msgId");
78-
if (msgId == null) {
79-
MessageRenderer renderer = getMessageRenderer(request);
80-
configureRenderer(request, renderer);
81-
82-
String selector = getSelector(request);
83-
QueueBrowser browser = session.createBrowser(queue, selector);
84-
renderer.renderMessages(request, response, browser);
85-
}
86-
else {
87-
XmlMessageRenderer renderer = new XmlMessageRenderer();
88-
QueueBrowser browser = session.createBrowser(queue, "JMSMessageID='" + msgId + "'");
89-
if (!browser.getEnumeration().hasMoreElements()) {
90-
response.sendError(HttpServletResponse.SC_NOT_FOUND);
91-
return;
70+
try(WebClient client = WebClient.getWebClient(request);
71+
Session session = client.getSession()) {
72+
Queue queue = getQueue(request, session);
73+
if (queue == null) {
74+
throw new ServletException("No queue URI specified");
9275
}
93-
Message message = (Message) browser.getEnumeration().nextElement();
9476

95-
PrintWriter writer = response.getWriter();
96-
renderer.renderMessage(writer, request, response, browser, message);
97-
writer.flush();
77+
String msgId = request.getParameter("msgId");
78+
if (msgId == null) {
79+
MessageRenderer renderer = getMessageRenderer(request);
80+
configureRenderer(request, renderer);
81+
82+
String selector = getSelector(request);
83+
try (QueueBrowser browser = session.createBrowser(queue, selector)) {
84+
renderer.renderMessages(request, response, browser);
85+
}
86+
} else {
87+
XmlMessageRenderer renderer = new XmlMessageRenderer();
88+
try (QueueBrowser browser = session.createBrowser(queue, "JMSMessageID='" + msgId + "'")) {
89+
if (!browser.getEnumeration().hasMoreElements()) {
90+
response.sendError(HttpServletResponse.SC_NOT_FOUND);
91+
return;
92+
}
93+
Message message = (Message) browser.getEnumeration().nextElement();
94+
95+
PrintWriter writer = response.getWriter();
96+
renderer.renderMessage(writer, request, response, browser, message);
97+
writer.flush();
98+
}
99+
}
98100
}
99101
}
100102
catch (JMSException e) {

activemq-web/src/main/java/org/apache/activemq/web/WebClient.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@
6060
*
6161
*
6262
*/
63-
public class WebClient implements HttpSessionActivationListener, HttpSessionBindingListener, Externalizable {
63+
public class WebClient implements HttpSessionActivationListener, HttpSessionBindingListener, Externalizable, AutoCloseable {
6464

6565
public static final String WEB_CLIENT_ATTRIBUTE = "org.apache.activemq.webclient";
6666
public static final String CONNECTION_FACTORY_ATTRIBUTE = "org.apache.activemq.connectionFactory";
@@ -278,7 +278,7 @@ protected static synchronized void initConnectionFactory(ServletContext servletC
278278
if (broker == null) {
279279
throw new IllegalStateException("missing brokerURL (specified via " + BROKER_URL_INIT_PARAM + " init-Param) or embedded broker");
280280
} else {
281-
brokerURL = "vm://" + broker.getBrokerName();
281+
brokerURL = broker.getVmConnectorURI().toString();
282282
}
283283
}
284284

0 commit comments

Comments
 (0)