Weblogic 11g下部署java 项目出现QName问题的解决

Weblogic 11g下部署Java 项目真是问题多多啊,我指的是在eclipse或者myeclipse下开发的Java项目,而后打包成war或者ear部署到weblogic 11g下。html

 

加载顺序:java

weblogic 11g和以前部署的不同,首先是,他先加载本身的jar包,而后才是你部署到什么程序的war包。web

 

更改加载顺序:apache

从网上找的的方法是,在你开发的Java项目下的web-inf下,先写一个weblogic.xml的配置,这里的内容是:oracle

 app

 

“<prefer-web-inf-classes>true</prefer-web-inf-classes>”这里说明:优先加载咱们的jar包。这个xml能够解决大多数因为先加载weblogic本身jar所引发的问题。eclipse

 

 

 

QName错误:jsp

因为我这个项目是要连接一样部署到weblogic下面的webservice,因此个人java程序要有连接这个webservice的方法,url

代码以下:spa

 

 

这里是简单说明:具体操做能够从网上搜。

 

一切就绪后,部署到weblogic没问题。

 

可是,当启动程序的时候,运行到调用webservice接口的时候,就出现问题了,具体错误是:

 

Error processing remote invocation: java.lang.LinkageError: loader constraint violation: loader (instance of weblogic/utils/classloaders/Change

AwareClassLoader) previously initiated loading for a different type with name "javax/xml/namespace/QName"

 

这是因为调用webservice接口时,引用了QName方法引发的,并且,在weblogic下,存在许多包含QName的jar包,因此就引发了调用QName方法失败。

从网上找了不少方法,有一种是更改webservice接口部署的:http://forums.oracle.com/forums/thread.jspa?threadID=876154

这种方法的缺点是,若是不是部署本身开发的webservice接口,那么,就会存在沟通的问题。

 

第二种方法:这种方法比较强悍,属于暴力的方法,但确实有效,也是从网上找的思路,可是,具体问题要具体分析,刚开始我就烦了这个错误,才会失败,耽误了几天后,就解决了,这种方法是,直接删除你项目下jar包中包含QName的方法,方法是,用rar打开jar包,直接用rar删除jar包中包含QName的文件。

 

切忌,我这里的QName的路径是javax/xml/namespace/QName,因此,我只要删除相同路径的QName就ok了!!其余包含QName的jar无论!!!