WildFly服务器.class文件热修复部署方案咨询
WildFly不重启部署.class文件的可行方案
核心逻辑:避开VFS临时文件修改,用WildFly原生部署机制实现热更新
方法1:利用自动热扫描部署
- 把更新后的
.class文件替换到原WAR包的WEB-INF/classes对应目录下,重新打包成WAR - 将修改后的WAR放入WildFly的
standalone/deployments目录- 默认开启自动扫描的情况下,WildFly会自动识别文件变更,触发增量部署,无需重启服务
- 若自动扫描未开启,可通过CLI手动触发:先进入
bin/jboss-cli.sh(Linux)或bin\jboss-cli.bat(Windows),连接服务器后执行deploy --force /path/to/your-updated.war
方法2:用CLI创建部署覆盖直接替换类文件
- 启动WildFly CLI并连接服务器:执行
bin/jboss-cli.sh(或对应Windows脚本),输入connect完成连接 - 执行以下命令替换目标类文件(替换命令里的路径和部署名):
这个命令会创建一个部署覆盖层,直接替换指定类文件,同时自动触发对应应用的重载,不用重启整个服务器deployment-overlay add --name=class-update-overlay --content=/WEB-INF/classes/com/your/package/TargetClass.class=/local/path/to/updated/TargetClass.class --deployments=your-app.war --redeploy-affected
方法3:开发环境用解压部署+自动扫描
- 启动WildFly时添加参数:
standalone.sh -c standalone.xml -Djboss.deployment.scanner.autoDeployExploded=true(Windows替换为standalone.bat) - 将应用以解压后的文件夹形式放到
deployments目录(而非WAR包) - 之后直接替换文件夹内
WEB-INF/classes下的.class文件,WildFly会自动检测并加载新类,即时生效
之前操作无效的原因
tmp/vfs下的文件是WAR包的虚拟镜像,WildFly重启或重部署时会从原WAR重新生成,直接修改临时文件不会被持久化- 重启服务会触发WAR的完整重部署,自然覆盖临时文件的修改
内容的提问来源于stack exchange,提问作者Rohit Shete
相关产品推荐
相关产品推荐

