当前位置: 代码迷 >> Web前端 >> Weblogic8.1部署基于XFire的WebService应用出现Qname.class冲突有关问题
  详细解决方案

Weblogic8.1部署基于XFire的WebService应用出现Qname.class冲突有关问题

热度:767   发布时间:2012-11-19 10:18:51.0
Weblogic8.1部署基于XFire的WebService应用出现Qname.class冲突问题


【关键词:WebService XFire Weblogic】转自http://hi.baidu.com/eredlab/blog/item/40dfecf9983ea451252df289.html
写在最前面
XFire(最新版为CFX)是一个Java环境下开发Webservice的傻瓜式框架。而且Spring对其提供了完美代理。可以完全按照Spring哲学很优雅的将其集成到基于Spring的应用中来。但是由于Xfire需要的Qname版本比Weblogic.jar自带的版本要新,所以当Xfire在发布到Weblogic8.1版本的服务器中时候会出现Qname命名冲突的问题。现提供3中解决方案来解决此问题,如下:

方案一、温柔优雅点的方式

(1)、先下载Qname.jar,将其放入Web-inf/lib中。
(2)、修改weblogic.xml,在文件中加入以下内容(表示优先加载web-inf/lib中的jar)
<weblogic-web-app>
<container-descriptor>
<prefer-web-inf-classes>true</prefer-web-inf-classes>
</container-descriptor>
</weblogic-web-app>
说明:此种方法理论上可以解决问题,但其改变了weblogic默认的加载jar的顺序。大部分时候可能带来更多的版本不兼容问题。所以如果此方法中看不中用的话再用下面的方法解决。

方案二、暴力点的方式

(1)、将下载来的Qname.jar中的Qname.class释放出来直接替换覆盖weblogic.jar里的Qname.class重启服务器即可。

方案三、备选的方式(偶也没试过,理论上可以)

(1)、打开weblogci的公共启动环境变量配置文件。\bea\weblogic81\common\bin路径下的commEnv.cmd(commEnv.sh<unix>)文件。
(2)、将Qname.jar拷贝到\bea\weblogic81\server\lib路径下。
(3)、修改环境配置文件如下:
set WEBLOGIC_CLASSPATH=%PATCH_CLASSPATH%;%JAVA_HOME%\lib\tools.jar;%WL_HOME%\server\lib\Qname.jar;%WL_HOME%\server\lib\weblogic_sp.jar;%WL_HOME%\server\lib\weblogic.jar
说明:一定要在加载weblogic.jar之前加载Qname.jar就可。

?

  相关解决方案