Skip to content

Commit 52bef00

Browse files
authored
[#1911] Update resource cleanup on queueBrowse servlet (#1912)
1 parent 5bda7d8 commit 52bef00

File tree

2 files changed

+30
-28
lines changed

2 files changed

+30
-28
lines changed

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
@@ -61,7 +61,7 @@
6161
*
6262
*
6363
*/
64-
public class WebClient implements HttpSessionActivationListener, HttpSessionBindingListener, Externalizable {
64+
public class WebClient implements HttpSessionActivationListener, HttpSessionBindingListener, Externalizable, AutoCloseable {
6565

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

0 commit comments

Comments
 (0)