websphere6.1中
“D:\IBM\WebSphere\AppServer1\derby”
已经存在10.1的derby.jar文件 但是在我们自己的app.war中,WEB-INFO下的bin目录中也有derby.jar
而且是10.4的版本 现在运行中发现,websphere使用的包是IBM自己带的derby文件。 如何使websphere只加载我们自己的derby包? 谢谢
“D:\IBM\WebSphere\AppServer1\derby”
已经存在10.1的derby.jar文件 但是在我们自己的app.war中,WEB-INFO下的bin目录中也有derby.jar
而且是10.4的版本 现在运行中发现,websphere使用的包是IBM自己带的derby文件。 如何使websphere只加载我们自己的derby包? 谢谢
websphere的类加载机制应该是不同的我们自己war包内的WEB-INF\lib下的jar会不会被加载?如果会,那么怎么让他最新加载,并首先被利用。
比如,其中一个webap.war用了websphere自己的derby
接着又加了一个xxx.war文件,xxx.war的web-info\lib下也有derby.jar文件,而且是不同版本的,这样就会出问题。就向1楼所说的,类加载首先使用webap应用中的类,有一点道理的,websphere的类加载机制中是可以做到的。但是我试了就是不行。看了下xxx.war的web-info\lib的derby.jar感觉没有被加载。
String s = classname.replace('.','/')+".class";
java.net.URL url = Class.forName(classname).getResource("/" + s);
你可以找一个类去看看到底加载了哪个包
并看看Class.forName(classname).getClassLoader()是否为null,
如果为null则表示由bootstrap 加载(你可以大致认为就是通过set CLASSPATH或者java -cp 中指定)
http://www.ibm.com/developerworks/cn/websphere/library/techarticles/haoaili/0512/