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

类装入器顺序
websphere7.0 jar包冲突解决办法,类加载顺序_第1张图片
默认的是:类已装入并且是先使用父类装入器

另一个是:类已装入并且是先使用本地类装入器(父类最后)

(server1 类装入器策略为多个时,类装入方式默认也是 类已装入并且是先使用父类装入器,是灰色的,改不了,类装入器策略为单个是,可以修改)

 

应用程序--企业应用程序 > jartest_war > 管理模块 > jartest.war > 类装入器查看器

websphere7.0 jar包冲突解决办法,类加载顺序_第2张图片
 
第二种查看方式:

故障诊断--类装入器查看器
websphere7.0 jar包冲突解决办法,类加载顺序_第3张图片
 
websphere7.0 jar包冲突解决办法,类加载顺序_第4张图片
 

类已装入并且是先使用父类装入器 时

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

 

  • websphere7.0 jar包冲突解决办法,类加载顺序_第5张图片
  • 大小: 15.8 KB
  • websphere7.0 jar包冲突解决办法,类加载顺序_第6张图片
  • 大小: 29 KB
  • websphere7.0 jar包冲突解决办法,类加载顺序_第7张图片
  • 大小: 23.7 KB
  • websphere7.0 jar包冲突解决办法,类加载顺序_第8张图片
  • 大小: 33.3 KB
  • 查看图片附件

你可能感兴趣的:(websphere,jar包冲突,加载顺序)