WildFly(Windows服务部署)关闭时能否保留已部署的Web应用/EAR项目?
解决WildFly每次启动重新部署应用的问题
作为JEE新手,你遇到的这个启动耗时问题其实很常见,核心答案是:完全可以避免每次启动重新部署——WildFly默认并不会在关机/停止服务时卸载应用,启动时重新部署通常是因为部署配置或操作方式的问题。下面给你一步步的解决方法:
1. 检查并调整部署扫描模式
WildFly默认开启了「自动部署扫描」,会在启动时检查standalone/deployments目录下的应用变化,如果发现内容更新或者部署标记丢失,就会重新部署。你可以切换到手动部署模式来避免这个问题:
- 打开
standalone/configuration/standalone.xml(如果是域模式则修改domain.xml) - 找到
<deployment-scanner>节点,将scan-enabled属性设为false,修改后如下:
这样WildFly启动时不会扫描部署目录,只会加载已经确认部署成功的应用。<deployment-scanner path="deployments" relative-to="jboss.server.base.dir" scan-enabled="false"/>
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. 验证部署状态
做完上面的配置后,你可以验证一下效果:
- 正常启动WildFly,通过管理控制台(默认
http://localhost:9990)确认应用已部署并正常运行 - 正常关闭WildFly,检查
standalone/deployments目录下的.deployed文件是否存在 - 再次启动WildFly,查看启动日志或管理控制台,确认应用是直接加载而不是重新部署
这样调整后,下次Windows启动WildFly服务时,就会直接加载已部署的应用,不用再耗时重新部署了。
内容的提问来源于stack exchange,提问作者Cédric Navetta
相关产品推荐
相关产品推荐

