weblogic9.2中jar包冲突报错javax.jws.webservice.portName()

在做项目中一个咨询服务的时候,由于服务端是用webservice写的,我们这边也相应的运用xfire写了一个调用webservcie的客户端,在tomcat上开发测试一切ok,但是当将服务部署到webLogic9.2上的时候,就出现了

java.lang.noSuchmethodError:javax.jws.webservice.portName()Ljava/lang/String.

这样一个错误的提示,实在是想不通为什么会找不到方法呢,然后在客户端的代码中找到调用这个方法的类,在eclipse中F3找到抽象类,然后发现引用的包竟然是javeee.jar,并没有用到xfire-jsr181-api-1.0-M1.jar这个包中的类,怀疑编译的时候引入错的包了,而weblogic环境中没有javaee.jar,所以找不到了?后来一想不是的,noSuchmethodError这个提示说明找到对应的类,但是没有找到对应的方法,后来经过查询发现的确是找到了类,但是找的类是weblogic.jar中的类,这一点让我很郁闷。因为这就是传说中的jar包冲突了吧。

在网上查找问题,找到了如下的解决方法:

第一种:

修改/bea/weblogic92/common/bin下面的commEnv.sh这个文件中的WEBLOGIC_CLASSPATH,

将xfire-jsr181-api-1.0-M1.jar添加到weblogic.jar前面

WEBLOGIC_CLASSPATH=”${PATCH_CLASSPATH}${CLASSPATHSEP}${JAVA_HOME}/lib/tools.jar${CLASSPATHSEP}${WL_HOME}/server/lib/weblogic_sp.jar${CLASSPATHSEP}${WL_HOME}/server/lib/xfire-jsr181-api-1.0-M1.jar${CLASSPATHSEP}${WL_HOME}/server/lib/weblogic.jar${CLASSPATHSEP}${WL_HOME}/server/lib/webservices.jar”

第二种,同样的原理,修改starweblogic中classpath

set CLASSPATH_lvxf=D:/Ibp/WEB-INF/lib/xfire-jsr181-api-1.0-M1.jar 

set CLASSPATH=%CLASSPATH_lvxf%;%CLASSPATH%;%MEDREC_WEBLOGIC_CLASSPATH%

 

第三种 ,修改weblogic.xml:

通过配置文件来修改加载顺序,使得lib目录中的类得到优先调用,在weblogic.xml中加入下面的代码段:
<container-descriptor>
<prefer-web-inf-classes>true</prefer-web-inf-classes> 
</container-descriptor>

ps:这种方式按理说应该是最方便的方式了,但是我在weblogic9.2中使用此方法不起作用。

不知道是不是weblogic是破解的原因导致weblogic.xml中的修改不起作用

 

第四种 修改文件 weblogic-application.xml :

<wls:weblogic-application>

<wls:prefer-application-packages>

<wls:package-name>com.ctc.wstx.*</wls:package-name>
<wls:package-name>javax.xml.*</wls:package-name>
<wls:package-name>org.apache.*</wls:package-name>

</wls:prefer-application-packages>

</wls:weblogic-application>

 

目前本人的解决方式是第一种,但是这样做会有个巨大的缺点是,你修改的是整个weblogic的环境,可能会影响weblogic下面所有的domain。

 

张贴在未分类

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注