`
阅读更多
本次做web service开发,遇到了一些问题,最终解决了,在此把过程总结一下

服务器上的jar包是cxf2.0.13,jdk版本是jdk6。不过由于cxf2.0.13能够找到的资料不多了,所以就想用cxf2.5.2来开发。

这个工作很顺利就完成了,然后将代码提交到服务器上,并用cxf2.5.2.jar替换了cxf2.0.13.jar,结果报了以下异常

java.lang.IncompatibleClassChangeError: Implementing class

感觉是jar包冲突,这下悲剧了,服务器上有100多个jar包,只好逐一排查,最后发现是由于cxf依赖的包版本不一致造成的

cxf2.0.13依赖的是neethi-2.0.4以及XmlSchema-1.4.5,而cxf2.5.2依赖的是neethi-3.0.1以及xmlschema-core-2.0.1

用neethi-3.0.1和xmlschema-core-2.0.1替换之后,服务发布成功啦!

本以为搞定了,结果跑了一下冒烟测试,又悲剧了,系统里原来的一个基本功能挂了,跟进去一看,是系统原来的代码跟cxf2.5不兼容

这下就有2个方案,一个是修改已有的代码,使之兼容cxf2.5;或者基于cxf2.0,重新写我们的web service

第一个方案风险太大,因为老代码涉及很广,而且我们都不太熟悉,所以就决定用低版本的cxf包重写我们的web service

但是cxf2.0的资料实在是很少,官网都不提供了,所以我们稍微升了一点,用cxf2.1

替换试了一下,发现cxf2.1和cxf2.0一样,也是依赖neethi-2.0.4以及XmlSchema-1.4.5,只是额外依赖一些别的jar包,这样就直接用cxf2.1替换了cxf2.0.13

然后验了一下刚才失败的基本特性,发现可以,看来老代码和cxf2.1是兼容的,这样就没有后顾之忧了

这个时候,我们的web service倒是能发布,但是调用失败

调用的时候报以下异常:

java.lang.IllegalArgumentException: object is not an instance of declaring class

不管怎么试,都是这个结果

一筹莫展了很长时间,因为这个时候不知道咋改了,代码没有动过,用cxf2.5.2就OK,用cxf2.1就是不行

最后才发现,原来是cxf2.5.2和cxf2.1的配置文件写法不一样

cxf2.5.2的写法:
<jaxws:endpoint id="remedy"
		implementorClass="com.huawei.remedy.webservice.impl.RemedyWebServiceCMImpl"
		address="/RemedyWebService" />

cxf2.1的写法:
<jaxws:endpoint id="remedy"
		implementor="com.huawei.remedy.webservice.impl.RemedyWebServiceCMImpl"
		address="/RemedyWebService" />

区别非常小,就是implementorClass和implementor的区别。。所以很难发现

最后获得了圆满的结果,使用cxf2.1,neethi-2.0.4,XmlSchema-1.4.5,兼容了老代码,新开发的web service也发布调用成功了

总结:

1、cxf早期版本依赖的jar包很多,要用cxf就要引一大堆jar包,新版本基本没这个问题了

2、各版本cxf核心jar包的组合:

cxf-2.0.13.jar
neethi-2.0.4.jar
XmlSchema-1.4.5.jar

cxf-2.5.2.jar
neethi-3.0.1.jar
xmlschema-core-2.0.1.jar

3、不同版本cxf的配置文件的写法有细微的差别
分享到:
评论

相关推荐

    websphere下部署CXF项目jar包冲突问题解决方式

    在websphere8.5 下部署含有CXFwebservice的war包无法正常启动,...归根结底原因不是找不到类,而是发布后war下的jar与websphere自身平台下的jar冲突了,要解决此问题就要通过在websphere下建立共享库来根除,可参考附件

    xfire和cxf jar包冲突

     因与cxf包xmlschema-core-*.jar 冲突  故重新打包 XmlSchema-1.1.jar 源码修改原类径的方法来重新打包避免冲突  org.codehaus.xfire.wsdl11.parser.SchemaInfo  org.codehaus.xfire.wsdl11.parser....

    webservice axis2 cxf jar包及简单实例

    假设你已经下载了一个名为`webservice`的压缩包,里面可能包含了Axis2和CXF的相关jar包,以及示例代码或者配置文件。要创建一个基本的Web服务,你需要按照以下步骤操作: 1. **创建服务接口**:定义一个Java接口,...

    cxf和xfire的jar包冲突解决

    这个问题在标题“cxf和xfire的jar包冲突解决”中得到了明确指出。 Apache CXF是一个全面的服务开发框架,它支持SOAP、RESTful Web服务,以及多种协议和绑定。而XFire是CXF的前身,也是一个强大的Web服务框架,但它...

    xfire与cxf包冲突解决方案

    因与cxf包xmlschema-core-*.jar 冲突 故重新打包 XmlSchema-1.1.jar 源码修改原类径的方法来重新打包避免冲突 源码放在javas.rar文件夹中 org.codehaus.xfire.wsdl11.parser.SchemaInfo org.codehaus.xfire....

    xfire与cxf包冲突解决方法

    因与cxf包xmlschema-core-*.jar 冲突 故重新打包 XmlSchema-1.1.jar 源码修改原类径的方法来重新打包避免冲突 源码放在javas.rar文件夹中 org.codehaus.xfire.wsdl11.parser.SchemaInfo org.codehaus.xfire....

    apache-cxf-3.1.6所有jar包

    在实际开发中,根据项目需求,可以选择性地引入这些jar包,或者通过Maven或Gradle等构建工具来管理依赖,以减小项目的体积并避免类冲突问题。 总的来说,Apache CXF 3.1.6是一个强大且灵活的Web服务框架,提供了...

    cxf-3.2.1.jar

    cxf-3.2.1.jar 核心包,解决webservice开发的jar的冲突问题。

    cxf2.1jar包

    CXF 2.1 JAR 包是一款用于...总之,使用CXF 2.1 JAR包时,需要充分理解其核心概念,关注兼容性,合理配置安全性和性能,并利用好社区资源来解决问题。在升级或选择其他版本时,也要综合考虑项目的需求和现有的技术栈。

    webService的CXF框架jar包

    WebService的CXF框架是一个广泛使用的开源项目,用于构建和消费Web服务。...如果只导入部分jar包,可能会出现类找不到或冲突的问题。因此,"尽量全部导入"的建议是非常重要的,以保证CXF框架能够正确地工作。

    springMVC整合cxf所需的jar包

    - 确保所有jar包版本兼容:Spring和CXF的版本可能需要匹配才能避免冲突。 - 避免类加载问题:如果在同一应用中同时使用Tomcat和其他服务器,可能需要调整类加载顺序,避免类冲突。 - 测试和调试:在整合过程中,...

    spring整合cxf全jar包 一个都不能少和一个都不能多

    "spring整合cxf全jar包 一个都不能少和一个都不能多"这个主题表明了在配置Spring和CXF时,正确选择和包含所有必要的JAR文件至关重要,因为缺少任何一个都可能导致项目运行失败或者功能缺失。 首先,让我们深入理解...

    xfire与cxf包解决jar包444-.zip

    因与cxf包xmlschema-core-*.jar 冲突 故重新打包 XmlSchema-1.1.jar 源码修改原类径的方法来重新打包避免冲突 源码放在javas.rar文件夹中 org.codehaus.xfire.wsdl11.parser.SchemaInfo org.codehaus.xfire....

    cxfWebservice客户端全部jar包及极简调用方法.rar

    cxf-core-3.0.0.jar,cxf-rt-bindings-soap-3.0.0.jar,cxf-rt-databinding-jaxb-3.0.0.jar,cxf-rt-frontend-jaxws-3.0.0.jar,cxf-rt-frontend-simple-3.0.0.jar,cxf-rt-transports-http-3.0.0.jar,cxf-rt-...

    spring3+cxf2.7 整合jar包

    在开发环境中,正确导入和管理这些jar包对于避免版本冲突、确保功能正常运行至关重要。 综上所述,"spring3+cxf2.7 整合jar包"的压缩文件可能是开发者快速搭建SpringMVC+CXF环境的重要资源。它简化了依赖管理,使得...

    cxf webservice所需jar包

    开发者需要根据项目需求选择相应的jar包进行引用,以避免版本冲突或缺失必要的功能。 在实际开发中,为了简化依赖管理,许多开发者会选择使用Maven或Gradle等构建工具,通过指定CXF的依赖项,让这些工具自动下载并...

Global site tag (gtag.js) - Google Analytics