JBoss EAP 6及以上版本全局错误页面配置方法咨询
在JBoss EAP 6中配置全局自定义错误页面(无需修改应用web.xml)
当然有办法搞定!虽然JBoss EAP 6确实没有全局web.xml这东西,但你完全可以通过容器级别的配置来实现统一的自定义错误页面,不用挨个修改每个应用的WEB-INF/web.xml,也不用动应用本身的配置。下面分两种常见场景给你讲具体操作:
场景1:JBoss EAP 6.4及以上版本(Undertow为默认Web容器)
从EAP 6.4开始,默认Web容器换成了Undertow,配置起来更直接:
- 打开EAP安装目录下的配置文件:
- 独立模式:
standalone/configuration/standalone.xml - 域模式:
domain/configuration/domain.xml
- 独立模式:
- 找到
<subsystem xmlns="urn:jboss:domain:undertow:1.2">节点(版本号可能略有差异,比如1.3、1.4),定位到<server>下的<host name="default-host" alias="localhost">部分,添加错误页面配置:
<host name="default-host" alias="localhost"> <!-- 保留原有配置,比如<location>、<filter-ref>等 --> <error-page code="404" path="/404.html"/> <error-page code="500" path="/500.html"/> <!-- 可按需添加更多错误码,比如403、401等 --> <error-page exception-type="java.lang.Throwable" path="/error.html"/> </host>
- 把你的自定义错误页面(比如
404.html、500.html)放到EAP的standalone/deployments/ROOT.war目录下(如果没有ROOT.war,就新建一个空WAR包,把错误页面放进去部署即可)。这样所有应用触发对应错误时,都会自动跳转到这些全局页面。
场景2:JBoss EAP 6.0~6.3版本(使用JBoss Web/Tomcat容器)
这个版本还在用基于Tomcat的JBoss Web,我们可以通过全局阀门(Valve)来实现:
- 同样打开
standalone.xml或domain.xml,找到<subsystem xmlns="urn:jboss:domain:web:1.0">节点。 - 在
<virtual-server name="default-host" enable-welcome-root="true">节点内添加自定义错误阀门配置:
<virtual-server name="default-host" enable-welcome-root="true"> <!-- 保留原有配置 --> <valve name="CustomGlobalErrorValve" module="org.jboss.web" class-name="org.jboss.web.tomcat.service.errorvalve.JBossErrorValve"> <param param-name="errorCode.404" param-value="/404.html"/> <param param-name="errorCode.500" param-value="/500.html"/> <param param-name="exceptionType.java.lang.Throwable" param-value="/error.html"/> </valve> </virtual-server>
- 同样把错误页面放到
ROOT.war目录下,重启EAP后,所有应用的错误都会被这个全局阀门拦截,跳转到统一的错误页面。
额外注意事项
- 确保
ROOT.war处于正常部署状态,否则容器找不到错误页面的路径。 - 如果需要动态错误页面(比如用JSP展示详细错误信息),可以把JSP文件放到ROOT.war里,然后把配置里的
path指向对应的JSP路径即可。 - 域模式下,记得在对应的服务器组级别配置,或者修改domain.xml后同步到所有服务器实例。
内容的提问来源于stack exchange,提问作者PSTADU
相关产品推荐
相关产品推荐

