我目前面临一个有趣的问题,即由于类加载问题,我们的应用程序无法在3/4节点上启动。
问题似乎是WAS在a.jar之前加载b.jar。经过更多的故障排除后,我发现所有节点都以不同的顺序加载jar(通过控制台中的Classpath查看器),工作节点可能只是一个侥幸。
WebSphere如何确定已安装的应用程序WEB-INF / lib文件夹中的类加载顺序?
答案 0 :(得分:2)
在websphere中未定义加载jar的顺序。为了解决您的问题,我建议您使用以下选项之一。
使用清单类路径设置,方法是按照您希望加载的方式提及jar名称。
或强>
您可以从a.jar中提取类并将其放在WEB-INF/classes
目录中。然后从lib文件夹中删除a.jar。因为classes
目录将在lib
目录之前加载。
答案 1 :(得分:0)
您可以通过两种方式在Websphere,PARENT_FIRST(默认)或PARENT_LAST中配置类加载器。 Websphere中的类加载器是分层的,您可以将其视为您拥有的树: Java类加载器 - > ext类加载器 - > App模块类加载器 - > Web模块类加载器
PARENT_FIRST将从"自上而下"加载类。从Java类加载器开始,而PARENT_LAST将从"自下而上加载类#34;从Web模块类加载器开始。如果您使用的是与WAS发布的库冲突的开源库,我建议您使用PARENT_LAST。
请查看这些资源以获取更多信息: