From 2c889c6c87073ef9f8b45d5206bcf3c2c79e3073 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?JB=20Onofr=C3=A9?= Date: Wed, 15 Apr 2026 17:52:26 +0200 Subject: [PATCH 1/2] fix(webconsole): the webconsole now redirect to the slave.jsp when required (slave broker with startAsync="true") --- .../web/filter/ApplicationContextFilter.java | 30 +++++++++++-------- assembly/src/release/conf/activemq.xml | 2 +- assembly/src/release/conf/jetty.xml | 2 +- 3 files changed, 19 insertions(+), 15 deletions(-) diff --git a/activemq-web-console/src/main/java/org/apache/activemq/web/filter/ApplicationContextFilter.java b/activemq-web-console/src/main/java/org/apache/activemq/web/filter/ApplicationContextFilter.java index a82e9f4a98a..31bca89fb58 100644 --- a/activemq-web-console/src/main/java/org/apache/activemq/web/filter/ApplicationContextFilter.java +++ b/activemq-web-console/src/main/java/org/apache/activemq/web/filter/ApplicationContextFilter.java @@ -66,6 +66,7 @@ public class ApplicationContextFilter implements Filter { private String applicationContextName = "applicationContext"; private String requestContextName = "requestContext"; private String requestName = "request"; + private String slavePage = "slave.jsp"; public void init(FilterConfig config) throws ServletException { this.servletContext = config.getServletContext(); @@ -84,19 +85,22 @@ public void doFilter(ServletRequest request, ServletResponse response, FilterCha Map requestContextWrapper = createRequestContextWrapper(request); String path = ((HttpServletRequest)request).getRequestURI(); // handle slave brokers -// try { -// if ( !(path.endsWith("css") || path.endsWith("png") || path.endsWith("ico") || path.endsWith(slavePage)) -// && ((BrokerFacade)requestContextWrapper.get("brokerQuery")).isSlave()) { -// ((HttpServletResponse)response).sendRedirect(slavePage); -// return; -// } -// } catch (Exception e) { -// LOG.warn(path + ", failed to access BrokerFacade: reason: " + e.getLocalizedMessage()); -// if (LOG.isDebugEnabled()) { -// LOG.debug(request.toString(), e); -// } -// throw new IOException(e); -// } + try { + boolean isSlave = ((BrokerFacade) requestContextWrapper.get("brokerQuery")).getBrokerAdmin().isSlave(); + if (isSlave && !(path.endsWith("css") || path.endsWith("png") || path.endsWith("ico") || path.endsWith(slavePage))) { + ((HttpServletResponse) response).sendRedirect(slavePage); + return; + } else if (!isSlave && path.endsWith(slavePage)) { + ((HttpServletResponse) response).sendRedirect(((HttpServletRequest) request).getContextPath() + "/index.jsp"); + return; + } + } catch (Exception e) { + LOG.warn(path + ", failed to access BrokerFacade: reason: " + e.getLocalizedMessage()); + if (LOG.isDebugEnabled()) { + LOG.debug(request.toString(), e); + } + throw new IOException(e); + } request.setAttribute(requestContextName, requestContextWrapper); request.setAttribute(requestName, request); chain.doFilter(request, response); diff --git a/assembly/src/release/conf/activemq.xml b/assembly/src/release/conf/activemq.xml index 9f32bd90f59..39ba30d7ae6 100644 --- a/assembly/src/release/conf/activemq.xml +++ b/assembly/src/release/conf/activemq.xml @@ -31,7 +31,7 @@ - + diff --git a/assembly/src/release/conf/jetty.xml b/assembly/src/release/conf/jetty.xml index cb3d281ea35..fd000137fc9 100644 --- a/assembly/src/release/conf/jetty.xml +++ b/assembly/src/release/conf/jetty.xml @@ -209,7 +209,7 @@ + depends-on="broker, configureJetty, invokeConnectors"> From 4f4fbb214019aebc61d85cedf59f503ec20c61a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?JB=20Onofr=C3=A9?= Date: Fri, 17 Apr 2026 08:20:28 +0200 Subject: [PATCH 2/2] fix(assembly): add id="broker" to sample configs so jetty.xml depends-on resolves The BrokerXmlConfigStartTest loads all activemq-*.xml sample configs which import jetty.xml. Since jetty.xml now has depends-on="broker" on the invokeStart bean, the sample configs need a matching bean id. --- assembly/src/release/examples/conf/activemq-demo.xml | 2 +- assembly/src/release/examples/conf/activemq-security.xml | 2 +- assembly/src/release/examples/conf/activemq-stomp.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/assembly/src/release/examples/conf/activemq-demo.xml b/assembly/src/release/examples/conf/activemq-demo.xml index a6954cf2f10..02d6ae19606 100644 --- a/assembly/src/release/examples/conf/activemq-demo.xml +++ b/assembly/src/release/examples/conf/activemq-demo.xml @@ -47,7 +47,7 @@ - Change the brokerName attribute to something unique --> - + - + diff --git a/assembly/src/release/examples/conf/activemq-stomp.xml b/assembly/src/release/examples/conf/activemq-stomp.xml index 0fe5b11c2b7..d2f6fee4bf9 100644 --- a/assembly/src/release/examples/conf/activemq-stomp.xml +++ b/assembly/src/release/examples/conf/activemq-stomp.xml @@ -44,7 +44,7 @@ - +