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

Jetty 12热部署失效求助:升级后更新部署XML无法自动重部署

解决Jetty 12 EE10模块下部署XML修改后热部署失效的问题

针对你遇到的Jetty 12中修改部署XML后无法自动热部署的问题,可按以下步骤排查和修复:

1. 修正部署XML的DOCTYPE声明

你当前使用的是Jetty 10版本的DTD,与Jetty 12 EE10模块不兼容,会导致配置解析异常。将部署XML的DOCTYPE替换为Jetty 12对应版本:

<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "https://www.eclipse.org/jetty/configure_12_0.dtd">

2. 修复ee10-deploy.xml中的scanInterval配置

你当前的scanInterval配置存在语法错误,同时嵌套了Property标签和硬编码值,导致扫描间隔未正确生效。二选一修改为:

  • 使用属性配置(推荐,支持通过系统变量覆盖):
    <Set name="scanInterval"><Property name="jetty.deploy.scanInterval" default="1"/></Set>
    
  • 直接设置固定值:
    <Set name="scanInterval">1</Set>
    

3. 确保DeploymentManager监听正确的部署目录

检查ee10-deploy.xml中是否正确配置了DeploymentManager的监控目录,确保指向你的部署XML所在路径/opt/jetty/my_base/webapps:

<Call name="addAppProvider">
  <Arg>
    <New class="org.eclipse.jetty.deploy.providers.WebAppProvider">
      <Set name="monitoredDirName"><Property name="jetty.base" default="."/>/webapps</Set>
      <!-- 其他原有配置 -->
    </New>
  </Arg>
</Call>

4. 配置自动重部署策略

Jetty 12默认可能不会自动重部署已存在的WebAppContext,需在ee10-deploy.xml的WebAppProvider配置中添加以下参数,允许修改部署XML时触发先卸载再重新部署:

<Set name="redeploy">true</Set>
<Set name="undeployOldVersions">true</Set>

5. 验证Spring Boot应用打包方式

确保你的Spring Boot 3.0应用是标准WAR包(而非可执行JAR),且未禁用Jetty的WebAppContext重部署支持。若使用spring-boot-devtools,需注意其热部署与Jetty容器级热部署的兼容性,生产环境建议关闭devtools。

6. 开启详细日志排查

将Jetty日志级别调整为DEBUG,重点查看org.eclipse.jetty.deploy和org.eclipse.jetty.ee10.webapp包的日志,确认:

  • 扫描器是否检测到部署XML的修改
  • DeploymentManager是否触发了卸载和重新部署操作
  • WebAppContext是否成功重启

完成以上配置后,修改部署XML并保存,Jetty应能在扫描间隔内自动触发应用重部署。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 14:32:04