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

JBoss EAP 6.4部署后上下文根自动跳转至临时文件夹问题

问题根因

你遇到的重定向到VFS临时路径的问题,是3个配置错误共同导致的:

  • jboss-deployment-structure.xml中自定义模块的配置错误,触发了JBoss VFS虚拟文件系统的路径解析异常,导致Web资源路径被映射到了临时解压目录的物理路径
  • jboss-web.xml配置了多个安全域,JBoss EAP 6.4不支持单Web应用绑定多个安全域,安全上下文初始化异常导致重定向路径计算错误
  • 没有显式声明上下文根,JBoss自动解析路径时出现偏差

修复步骤

  1. 修正jboss-deployment-structure.xml配置
    删掉文件末尾自定义deployment.module.nested.app模块的整段内容,你当前的写法会强制类加载器读取war包的物理临时路径,直接破坏Web资源的路径映射规则。如果确实需要将当前部署的类暴露给其他模块,只需在对应依赖的配置上添加export="true"属性即可,不要手动指定资源路径指向war包。
    修正后的jboss-deployment-structure.xml核心配置如下:
<jboss-deployment-structure>   
<ear-subdeployments-isolated>false</ear-subdeployments-isolated>
<deployment>
    <resources>
        <resource-root path="WEB-INF/lib/bcprov-jdk16-1.46.jar"  use-physical-code-source="true"/>
    </resources>
    <exclusions>
        <module name="org.javassist" />
        <module name="org.hibernate" />
        <module name="org.hibernate.validator" />
        <module name="org.jboss.msc" />
        <module name="javax.faces.api" />
        <module name="com.sun.jsf-impl" />
        <module name="org.apache.log4j" />
        <module name="org.slf4j" />
        <module name="org.slf4j.impl" />
        <module name="org.apache.commons.logging" />
        <module name="org.jboss.resteasy.resteasy-hibernatevalidator-provider" />
    </exclusions>
    <dependencies>
        <module name="com.company.app.config" optional="TRUE"/>         
        <module name="deployment.module.nested.app" export="true"/>
    </dependencies>
</deployment>
</jboss-deployment-structure>
  1. 修正jboss-web.xml配置
  • 单Web应用只能绑定一个安全域,你可以把两个登录模块合并到同一个安全域配置中,不需要拆分两个安全域
  • 显式声明上下文根,避免JBoss自动解析出错
    首先修改standalone-ha.xml的安全域配置,合并两个登录模块:
<security-domain name="CombinedModule" cache-type="default">
    <authentication>
        <login-module code="com.company.uas.service.authentication.loginmodule.UserLoginModule" flag="required"/>
        <login-module code="com.company.uas.service.authentication.loginmodule.ServiceLoginModule" flag="required"/>
    </authentication>
</security-domain>

再修改jboss-web.xml配置:

<!DOCTYPE jboss-web PUBLIC
"-//JBoss//DTD Web Application 4.2//EN"
"http://www.jboss.org/j2ee/dtd/jboss-web_4_2.dtd">

<jboss-web>  
    <security-domain>CombinedModule</security-domain>
    <context-root>/contextroot</context-root>
</jboss-web>
  1. 清理缓存重启验证
    停掉JBoss服务,删除${jboss.home}/standalone/tmp和${jboss.home}/standalone/work目录下的所有内容,重新部署war包后启动服务。
    启动后查看控制台日志,确认存在Registered web context: /contextroot的输出,再访问上下文根地址验证重定向路径是否正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 01:51:02