我目前面临一个有趣的问题,由于类加载问题,我们的应用程序无法在3/4节点上启动。
问题似乎是在b.jar之前加载a.jar。在进行了更多的故障排除后,我发现所有节点都以不同的顺序加载jars (通过控制台中的Classpath查看器),而工作节点可能只是一个侥幸。
WebSphere如何确定已安装的应用程序WEB/lib文件夹中的类加载顺序?
发布于 2016-11-04 14:47:29
加载jars的顺序在websphere中没有定义。为了解决你的问题,我可以建议你使用以下选项之一。
使用清单类路径设置,按顺序提及jar名称,如您希望如何加载jar名称。
或
您可以从a.jar中提取类并将其放到WEB-INF/classes目录中。然后从lib文件夹中删除a.jar。因为classes目录将在lib目录之前加载。
发布于 2016-11-04 16:23:08
可以在Websphere、PARENT_FIRST (默认)或PARENT_LAST中配置类加载器。Websphere中的类加载器是分层的,您可以把它想象成一棵树: Java类加载器、-> ext类加载器、->应用程序模块加载程序、-> web模块加载器
PARENT_FIRST将从“自顶向下”加载类,从Java类加载器开始,而PARENT_LAST将从“自下而上”加载类,从web模块类加载器开始。如果您使用的是与原装库冲突的开源库,我建议您使用PARENT_LAST。
要获得更多信息,请查看这些资源:
https://stackoverflow.com/questions/40424458
复制相似问题