Springboot 集成CXF在Websphere8.5环境下jar包冲突解决

       项目中用到的cxf依赖为cxf-spring-boot-starter-jaxws 3.1.12版本,springboot版本为1.5.19。发布到was8.5之后报各种问题

       Springboot集成cxf在wsa发布后会遇到一系列的ClassNotFound的问题,由于was容器中自带一些webservice的jar包,应用中cxf的某些依赖包在加载时was会优先加载自己的同名的包,所以把自己的低版本的包加载到应用里而没有加载应用自带的jar包,因此会遇到许多ClassNotFound的问题。解决办法为建立共享库,把冲突的jar包加入共享库中,同时禁用was的JAX-WS引擎。

  • 建立共享库

Was8.5下冲突的jar包有三个,有validation-api-1.1.0.Final.jar、neethi-3.0.3.jar、xmlschema-core-2.2.2.jar。在was9.0下可能只有neethi-3.0.3.jar、xmlschema-core-2.2.2.jar。

将jar包放入共享库中,

  1. 在有权限的目录下新建目录存放冲突jar包

2、创建共享库

左侧导航栏 环境-》共享库-》新建

选择集群环境、填写类路径、选择“使用隔离的器装入”

 

应用-》保存

然后可以看到新建的共享库

 

3、禁用server的JAX-WS服务

服务器 > 服务器类型 > WebSphere 应用程序服务器server_name,然后在服务器基础结构下面单击 Java 和进程管理 > 进程定义 > Java 虚拟机 > 定制属性

新建-》输入

名称

com.ibm.websphere.webservices.DisableIBMJAXWSEngine

true

应用-》保存

4、重启服务

 

  • 在war包中需要配置DisableIBMJAXWSEngine: true,以及在jar包中删除相应的jar包

  1. 修改MAINFEST.MF文件

添加DisableIBMJAXWSEngine: true

  1. 在WEB-INF\lib下删除刚刚添加在共享库中的那三个(或两个)jar包

  1. 将修改后的war上传安装,安装应用时会多出一步为webservice模块选择数据源,手动添加之前创建好的数据源。然后跳过警告继续。

 

三、为应用添加共享库以及设定类加载顺序

选择对应的应用,点击进行设置

(1)、共享库引用

选择应用的application.xml,点击引用共享库

 

选择要引用的共享库引用

确定-》保存

再确定保存

(2)、设置类加载顺序

选择覆盖……,父类最后

应用-》保存

5.启动测试

启动后测试webservice

http://192.168.26.15:9080/test/webservice/cxfTestService?wsdl

正常显示了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值