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

WAR包部署到webapps嵌套目录时该如何配置Jetty 9.4?

问题根因
  • Jetty 9.4默认的部署扫描器仅扫描$JETTY_BASE/webapps一级目录下的可部署资源(WAR包、解压的Web应用目录、XML上下文配置文件),不会递归扫描子目录,所以你放在嵌套的eyerep-data子目录下的WAR包没有被正确识别为Web应用,Jetty仅将该路径识别为静态资源目录,访问时就会返回文件列表,调用业务接口返回404。
  • 你当前的jetty-web.xml配置中war属性的路径指向的是$jetty.monitorDir/eyerep-data.war,即webapps根目录下的WAR包,和你实际存放的webapps/eyerep-data/eyerep-data.war路径不匹配,也是应用加载失败的原因之一。
解决方案

方案1:开启部署扫描器递归扫描(适合多嵌套目录部署场景)

  1. 找到$JETTY_BASE/start.d/deploy.ini配置文件,若不存在则执行命令java -jar $JETTY_HOME/start.jar --add-to-start=deploy生成对应配置文件。
  2. 在deploy.ini中添加/修改以下配置项:
jetty.deploy.scanDir = ${jetty.base}/webapps
jetty.deploy.recursiveScan = true

开启后Jetty会自动扫描webapps目录下所有子目录的可部署资源。
3. 修正jetty-web.xml中的WAR包路径,匹配实际存放路径:

<Configure id="eyerep-data" class="org.eclipse.jetty.webapp.WebAppContext">
    <Set name="contextPath">/eyerep-data</Set>
    <Set name="war"><SystemProperty name="jetty.monitorDir" default="./webapps" />/eyerep-data/eyerep-data.war</Set>
</Configure>
  1. 重启Jetty服务即可正常访问。

方案2:使用根目录上下文配置文件(更推荐,便于管理)

不需要开启递归扫描,直接在$JETTY_BASE/webapps根目录下新建名为eyerep-data.xml的上下文配置文件,内容和上述修正后的jetty-web.xml一致即可。Jetty会优先读取webapps根目录下的XML配置,按配置指定的路径加载对应WAR包。

校验方式

启动无报错后,若开启了Jetty管理控制台,可访问http://服务IP:10202/jetty查看已部署应用列表,确认/eyerep-data上下文已成功加载即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 13:54:03