WebSphere环境下配置EAR使用指定自定义类加载器的方法问询
可以实现,核心思路是切断B类加载器与目标EAR应用的类加载路径关联,具体可通过以下两种适配不同场景的方案操作:
方案1:调整共享库关联范围(B无需保留服务器级绑定场景)
如果你配置的A、B共享库当前都绑定在服务器级类加载器上,且B仅需要给部分应用使用,可通过此方案操作:
- 登录WebSphere管理控制台,进入环境 > 共享库,删除B共享库的服务器级绑定配置
- 进入应用程序 > 企业应用程序 > 目标EAR应用名称 > 共享库引用
- 选中EAR顶层模块(如果仅需要EAR下的特定子模块使用A,也可以单独选中对应子模块),点击「添加」,从可用共享库列表中选中A对应的共享库
- 保存配置后重启目标EAR应用即可,此时应用仅会加载A关联的类,不会加载B的类
- 如果其他应用需要使用B,可参考上述步骤将B单独绑定到对应需要的应用上即可
方案2:调整应用类加载器委托模式(B需保留服务器级绑定场景)
如果B共享库已经绑定到服务器级,且需要给服务器上其他应用提供支持,不能删除服务器级绑定,可通过类加载隔离实现:
- 进入应用程序 > 企业应用程序 > 目标EAR应用名称 > 类加载和更新检测
- 将类加载器委托顺序设置为
Parent Last(即先加载应用自身类加载器包含的类,再加载父类加载器的类) - 进入该应用的共享库引用配置页,将A共享库绑定到应用级
- 保存配置后重启应用,此时应用会优先加载自身绑定的A共享库的类,服务器级绑定的B共享库的类不会被该应用加载
配置完成后可通过WebSphere自带的类加载器查看器验证:进入故障诊断 > 类加载器查看器,选中目标EAR应用对应的类加载器,查看类路径列表,确认仅包含A共享库的路径、无B共享库路径即可。
内容的提问来源于stack exchange,提问作者Károly Neue
相关产品推荐
相关产品推荐

