You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jetty 8集成ActiveMQ Classic:隐藏HTTP响应中的Jetty版本

解决ActiveMQ 5.11.3集成Jetty 8.1.16隐藏HTTP响应Server版本的问题

方案一:正确调用Jetty Server的setSendServerVersion方法

Jetty 8.1.16的org.eclipse.jetty.server.Server确实提供了setSendServerVersion(boolean)方法,但直接给bean加属性会失败——因为这是通过setter方法生效的,不是直接的JavaBean属性。需要用Jetty XML的<call>标签来调用:

  1. 打开ActiveMQ安装目录下的conf/jetty.xml,找到id为"Server"的bean定义。
  2. 在bean内部现有配置后添加以下代码块:
<bean id="Server" class="org.eclipse.jetty.server.Server">
    <!-- 保留原有线程池、连接器等配置 -->
    <call name="setSendServerVersion">
        <argument type="boolean">false</argument>
    </call>
</bean>
  1. 重启ActiveMQ,检查HTTP响应头,Server字段会被隐藏或仅显示通用标识。

如果此方案仍导致Broker启动失败,大概率是ActiveMQ对Jetty Server做了封装,此时可以尝试方案二。

方案二:通过自定义Filter强制覆盖Server响应头

这种方法不依赖Jetty核心配置,通过Servlet Filter直接修改响应头,兼容性更强:

步骤1:编写自定义Filter类

实现javax.servlet.Filter接口,强制清空或替换Server头:

public class HideServerVersionFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {}

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        HttpServletResponse httpResponse = (HttpServletResponse) response;
        // 可设置为空字符串,或自定义标识(比如"ActiveMQ Console")
        httpResponse.setHeader("Server", "");
        chain.doFilter(request, response);
    }

    @Override
    public void destroy() {}
}

步骤2:打包部署Filter

  • 将编译后的类打包成JAR,放到ActiveMQ安装目录的lib/文件夹下。
  • 打开webapps/admin/WEB-INF/web.xml,在现有filter配置前添加:
<filter>
    <filter-name>HideServerVersionFilter</filter-name>
    <filter-class>com.yourpackage.HideServerVersionFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>HideServerVersionFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

(替换com.yourpackage为实际包名)

步骤3:验证效果

重启ActiveMQ后,用curl或浏览器访问控制台,检查响应头的Server字段已被修改或清空。

为什么之前的配置失败?

Jetty 8的sendServerVersion不是直接Bean属性,无法通过<property>标签设置,必须用<call>调用setter方法。另外,ActiveMQ对Jetty Server的封装可能导致直接修改Server bean触发兼容性问题,Filter方案是更稳妥的替代方案。

内容的提问来源于stack exchange,提问作者Markus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 06:10:16