要在MyEclipse中让JBoss真正实现修改代码后自动刷新、无需重启服务的热部署效果,关键在于IDE编译行为、JBoss内部资源锁定机制与部署路径三者的协同配合,而非单一的设置操作。若缺少任何一个环节,你会频繁点击“Redeploy”按钮,浏览器端却始终没有反应。
确保MyEclipse自动编译功能已开启
首先,务必勾选 Project → Build Automatically。这是最基础的前提——如果没有勾选,Java文件保存后不会生成对应的.class文件,JBoss自然无法加载新类。此外,建议检查项目右键 → Properties → Builders 中 Java Builder 是否被禁用,若已禁用,手动启用即可。确认项目根目录下生成了 build/classes 或 target/classes(取决于构建方式),如果缺少这些目录,说明编译链已断裂,热部署将无从谈起。
修改JBoss的context.xml配置以解除资源锁定
接下来,修改JBoss的context.xml配置文件。不同版本对应的路径略有差异:
- JBoss 4.x/5.x: $JBOSS_HOME/server/default/deploy/jboss-web.deployer/context.xml
- JBoss 6.x: $JBOSS_HOME/server/default/deploy/jbossweb.sar/context.xml
- JBoss 7/EAP: 不适用此方法,需改用CLI或standalone.xml配置部署扫描间隔,本节暂不展开讨论。
打开context.xml,在
antiResourceLocking="true" antiJARLocking="true"
这里需要特别留意:务必确认文件中只有一处
验证并强制触发一次热加载
配置完成后,需要验证整个链路是否畅通。具体操作步骤如下:
第一步:在MyEclipse中右键点击JBoss服务器 → Clean… → 勾选“Clean all deployed applications” → OK。
第二步:右键你的Web项目 → MyEclipse → Add and Remove Deployments → 确保项目状态显示为“Deployed” → Apply → Close。
第三步:启动JBoss(Debug或Run模式均可),待控制台输出“Started JBoss Web Server”后,随意修改一个Servlet或JSP文件,保存。
观察控制台是否出现类似“Reloading context [/yourapp]”的日志行。如果出现了,说明热部署通道已成功打通。如果没有日志且页面没有更新,很可能是因为antiResourceLocking未生效,或者class文件根本没有重新编译。
