WildFly:jboss-web.xml配置的context-root未按预期生效
这种情况我碰到过好几次,大概率是jboss-web.xml没被正确识别或者打包环节出了问题,咱们一步步来排查:
先确认
jboss-web.xml的位置和内容是否合规
你得保证这个文件放在项目的src/main/webapp/WEB-INF目录下(对应你截图里的WEB-INF文件夹),而且文件格式不能出错。正确的结构示例如下:<?xml version="1.0" encoding="UTF-8"?> <jboss-web xmlns="http://www.jboss.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.jboss.com/xml/ns/javaee http://www.jboss.org/j2ee/schema/jboss-web_5_1.xsd"> <context-root>/services</context-root> </jboss-web>重点检查命名空间是否正确,
<context-root>标签有没有闭合,值里有没有多余的空格或特殊字符。检查打包后的war文件是否包含
jboss-web.xml
执行mvn package生成war包后,去target目录找到javaee.war,解压它看看WEB-INF目录下有没有这个文件。如果没有,说明Maven打包时没把它包含进去——不过只要你放在src/main/webapp/WEB-INF下,Maven默认会自动打包这个目录的内容,除非你在pom.xml的资源配置里做了特殊限制。清理JBoss缓存后重新部署
JBoss有时候会缓存旧的部署信息,导致新配置不生效。你可以先停掉服务器,删除standalone/tmp和standalone/data/content目录下的所有内容,然后重启服务器再重新部署war包,这一步经常能解决这类奇怪的部署问题。排查JBoss全局配置是否覆盖了你的设置
极少数情况下,JBoss的全局配置文件(比如standalone.xml或domain.xml)里的部署参数可能强制覆盖了上下文路径。你可以检查文件里有没有deployment-overlays相关配置,或者有没有针对这个war包的特殊部署规则。
一般来说,前两步就能解决问题——要么是文件放错了位置,要么是内容格式有误导致JBoss没读取到你的context-root设置。
内容的提问来源于stack exchange,提问作者user3133542

