如何在Wildfly中部署单个class类?是否支持类似Weblogic的类替换能力?
Wildfly完全支持和Weblogic类似的类更新加载能力,具体操作逻辑如下:
常规使用方式
- 如果你采用*展开式WAR(Exploded Web Archive)*的模式部署应用,直接将更新后的.class文件放到应用根目录下的
WEB-INF/classes对应路径中:- 重启Wildfly服务器后,新类会随着应用初始化被加载,效果和Weblogic的操作完全一致
- 不需要全量重启服务器的话,只需触碰(touch)应用根目录下的
WEB-INF/web.xml文件,Wildfly内置的部署扫描器检测到部署描述符修改后会自动重载当前应用,新类即可生效
- 如果你是采用打包好的WAR包直接部署,需要先将WAR包解压为展开式目录,完成class文件替换后再重新部署,或者直接更新WAR包内的对应.class文件后重新触发部署即可。
注意事项
- 该方式仅适用于类内部逻辑调整、普通属性/方法修改的场景,如果涉及类继承关系变更、方法签名/字段类型修改,可能会出现类加载冲突问题,出现该情况时建议清理
standalone/tmp、standalone/data目录下的对应部署缓存后再重启 - 开发环境下可以开启Wildfly的开发模式,将部署扫描器的
auto-deploy-exploded属性设置为true,此时你无需手动触发重启或触碰web.xml,扫描器检测到WEB-INF/classes下的.class文件变更后会自动重载应用,进一步提升开发效率
内容的提问来源于stack exchange,提问作者Jungle
相关产品推荐
相关产品推荐

