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

WildFly(Windows服务部署)关闭时能否保留已部署的Web应用/EAR项目?

解决WildFly每次启动重新部署应用的问题

作为JEE新手,你遇到的这个启动耗时问题其实很常见,核心答案是:完全可以避免每次启动重新部署——WildFly默认并不会在关机/停止服务时卸载应用,启动时重新部署通常是因为部署配置或操作方式的问题。下面给你一步步的解决方法:

1. 检查并调整部署扫描模式

WildFly默认开启了「自动部署扫描」,会在启动时检查standalone/deployments目录下的应用变化,如果发现内容更新或者部署标记丢失,就会重新部署。你可以切换到手动部署模式来避免这个问题:

  • 打开standalone/configuration/standalone.xml(如果是域模式则修改domain.xml)
  • 找到<deployment-scanner>节点,将scan-enabled属性设为false,修改后如下:
    <deployment-scanner path="deployments" relative-to="jboss.server.base.dir" scan-enabled="false"/>
    
    这样WildFly启动时不会扫描部署目录,只会加载已经确认部署成功的应用。

2. 确保正常关闭WildFly,保留部署标记

当你成功部署应用后,WildFly会在standalone/deployments目录生成对应的.deployed文件(比如你的应用是myapp.ear,就会有myapp.ear.deployed),这个文件是应用已部署的标记。如果这个文件丢失,启动时WildFly会认为应用未部署,从而重新部署:

  • 关闭WildFly时请使用正常方式:比如通过管理控制台执行关机操作,或者用命令行工具jboss-cli.bat执行:shutdown命令,不要直接杀死进程或强制关机。
  • 停止Windows服务时,也要通过服务管理器的「停止」按钮操作,确保服务正常退出。

3. 检查WildFly服务的启动配置

如果你是用WildFly自带的脚本安装的Windows服务,要确认服务的启动参数没有强制重新部署的选项:

  • 打开Windows服务管理器,找到WildFly服务,右键选择「属性」
  • 查看「可执行文件路径」,确保没有添加--deploy之类的强制部署参数。如果有,去掉这些参数后重启服务。
  • 如果需要重新安装服务,可以使用类似这样的命令(注意替换成你的WildFly路径):
    service install /name=WildFly /displayname="WildFly Application Server" /startmode=auto
    

4. 验证部署状态

做完上面的配置后,你可以验证一下效果:

  1. 正常启动WildFly,通过管理控制台(默认http://localhost:9990)确认应用已部署并正常运行
  2. 正常关闭WildFly,检查standalone/deployments目录下的.deployed文件是否存在
  3. 再次启动WildFly,查看启动日志或管理控制台,确认应用是直接加载而不是重新部署

这样调整后,下次Windows启动WildFly服务时,就会直接加载已部署的应用,不用再耗时重新部署了。

内容的提问来源于stack exchange,提问作者Cédric Navetta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:19:32