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

Wildfly 29多部署上下文根异常问题求助

解决Wildfly 29中第二个应用无法通过根域名访问的问题

问题根源

你已经在两个应用的jboss-web.xml中都设置了<context-root>/</context-root>并指定了不同虚拟主机,但第二个应用的上下文根被自动改为app2,核心原因是Wildfly未正确识别第二个虚拟主机的配置,导致两个应用尝试抢占默认主机的根上下文,触发了Wildfly的自动上下文根重命名机制。

解决方案步骤

1. 配置Wildfly虚拟主机

打开Wildfly的配置文件(独立模式用standalone/configuration/standalone.xml,域模式用domain/configuration/domain.xml),找到<subsystem xmlns="urn:jboss:domain:undertow:*">(星号对应具体版本号)下的<server>节点,添加app2虚拟主机的域名映射:

<host name="app1" alias="app1domain.com">
    <location name="/" handler="welcome-content"/>
    <http-invoker security-realm="ApplicationRealm"/>
</host>
<host name="app2" alias="app2domain.com">
    <location name="/" handler="welcome-content"/>
    <http-invoker security-realm="ApplicationRealm"/>
</host>
  • name属性必须和jboss-web.xml里的<virtual-host>值完全一致(即app2)
  • alias填写你的目标域名app2domain.com,多域名用逗号分隔即可

2. 检查应用部署包名称

如果第二个应用的部署包是app2.war,在虚拟主机配置未生效时,Wildfly会默认用WAR文件名作为上下文根。你可以选择:

  • 保留WAR包名称,但确保虚拟主机配置正确,让jboss-web.xml的<context-root>/</context-root>生效;
  • 或者将WAR包重命名为ROOT.war,但配合虚拟主机使用时,前者更规范。

3. 重启Wildfly并重新部署

修改配置后必须重启Wildfly,再重新部署两个应用:

  • 停止服务:./bin/jboss-cli.sh --connect command=:shutdown(Linux)或bin\jboss-cli.bat --connect command=:shutdown(Windows)
  • 启动服务:./bin/standalone.sh(Linux)或bin\standalone.bat(Windows)
  • 重新部署两个应用,若使用管理控制台部署,确认选择对应虚拟主机

4. 验证生效情况

部署完成后访问app2domain.com,应该直接指向第二个应用的根路径。若仍有问题,查看standalone/log/server.log,搜索virtual-host或context-root相关日志,排查配置是否加载成功。

注意事项

  • 两个应用的<virtual-host>值必须和Wildfly配置中的<host name>完全匹配,大小写敏感;
  • 同一虚拟主机下不能有多个应用设置<context-root>/</context-root>,否则会触发自动重命名;
  • 若使用反向代理(如Nginx),确保代理配置将域名直接转发到Wildfly,不要额外添加路径前缀。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 21:12:24