spring整合cxf,xfire遇到的jar包冲突问题

spring整合cxf,xfire遇到的jar包冲突问题

前言:

最近做一个第三方webservice接口对接时,遇到了一系列问题,我方需要去调用第3方的webservice接口,而且我方需要提供两个回调接口供第三方调用。

问题一:

由于第三方的webservice接口是用xfire框架发布的,所以我方需要用xfire去调用第三方的webservice接口;而我方需要提供两个webservice回调接口供第三方调用,本来想用xfire框架去发布这两个接口服务,后来发现我项目用的spring版本是4.2.4,由于xfire框架比较老了,依赖的spring版本比较低,所以spring4.x与xfire整合会出现一个问题,就是xfire配置文件xfire.xml中的singleton="true"这个属性在dtd中没有这个约束,而是scope=“singleton”,后来将dtd文件改了之后,发现创建bean不行,最后看了官方文档才发现,spring3.2.x时候,xfire和spring还是能整合的,spring4.x与xfire整合是无法创建bean的,而我项目用的spring版本4.2.4不能随意更改,所以只好放弃用xfire去发布webservice接口服务。

问题二:

上个问题中提到,就是不能用xfire去发布webservice接口服务,最后就采用了cxf去发布webservice接口服务,这时候又遇到了一个问题:xfire框架依赖的XmlSchema.1.1.1jar和cxf框架依赖的xmlschema-core.2.2.1.jar有冲突,本来xmlschema-core.2.2.1.jar是XmlSchema.1.1.1jar的更新版本,但是xfire比较老,没有更新这个依赖包的版本,所以不能只用xmlschema-core.2.2.1.jar,或者只用XmlSchema.1.1.1jar,如果只用xmlschema-core.2.2.1.jar,在用xfire调用第三方接口时会报org.apache.ws.commons.schema.XmlSchemaComplexType.getAttributes()方法找不到,如果只用XmlSchema.1.1.1jar时,在用cxf发布webservice接口时会失败,会报
org.apache.ws.commons.schema.XmlSchemaComplexType.read()方法找不到,所以就很棘手。

解决方法:

最后想到了一个方法,就是直接将XmlSchema.1.1.1.jar和xfire-all1.2.6.jar包分别拆开,将XmlSchema.1.1.1.jar包里面的包名改成org.apache.ws.commons.schema.cxf,然后将xfire-all1.2.6.jar里面关于引用XmlSchema.1.1.1.jar的引用改掉就可以了,主要改了 org.codehaus.xfire.wsdl11.parser.SchemaInfo
org.codehaus.xfire.wsdl11.parser.WSDLServiceBuilder
org.codehaus.xfire.wsdl11.parser.WSDLServiceConfigurator
org.codehaus.xfire.wsdl11.parser.XmlSchemaURIResolver
这四个引用,改完之后重新编译打包,至于怎么编译打包,这里就不一一赘述了,网上都有教程。

资源:

至于重新编译打包的jar包可以去https://download.csdn.net/download/qq_40021053/10856038下载。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值