websphere7.0 jar包冲突解决办法,类加载顺序
本文以windows版websphere为样例
本文主要解决的是同一个web模块(web项目)下,有两个jar包里含有相同的包名类名的类,造成加载的类错误的问题(其他的也可以解决)
(附件中提供,查看类加载于哪的jsp)
其实解决这种问题最简单的办法就是,把想优先使用的jar包,解压成class,优先加载class。
websphere一个web模块下jar包加载的顺序,只能看,不能改,似乎可以尝试改jar名的方式调整jar包加载顺序,
websphere linux和windows版,不同补丁版本,加载的顺序可能是不同的,有的是乱序的,有的是按文件名排序的。乱序的是真够烂的。
一、查看类加载顺序
was控制台
企业应用程序 > jartest_war > 管理模块 > jartest.war
类装入器顺序
默认的是:类已装入并且是先使用父类装入器
另一个是:类已装入并且是先使用本地类装入器(父类最后)
(server1 类装入器策略为多个时,类装入方式默认也是 类已装入并且是先使用父类装入器,是灰色的,改不了,类装入器策略为单个是,可以修改)
应用程序--企业应用程序 > jartest_war > 管理模块 > jartest.war > 类装入器查看器
第二种查看方式:
故障诊断--类装入器查看器
类已装入并且是先使用父类装入器 时
1.jdk扩展,最先加载
可以把jar包放到这个下
D:/Program Files/IBM/WebSphere/AppServer/java/jre/lib/ext/
这样影响比较大,
我曾经放过hibernate-jpa-2.0-api-1.0.1.Final.jar到这个目录下
5.server1上使用共享库会影响这个
6.应用程序ear上使用共享库会影响这个
7.web模块war加载的类和jar包的顺序 web模块上使用共享库似乎没什么效果
在这可以看到jar包的加载顺序,有的版本加载的是乱序的,有的是按文件名顺序加载,顺序只能看改不了,
似乎可以通过改jar包名尝试调整顺序。
能用ear共享库解决的问题,就不用再server1上解决了
创建共享库
websphere7.0 创建共享库,引用共享库
http://happyqing.iteye.com/blog/2323338
WebSphere类加载问题的错误诊断
http://www.blogjava.net/jjshcc/archive/2014/05/13/413618.html