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

  1. Springboot集成cxfwsa发布后会遇到一系列的ClassNotFound的问题,由于was容器中自带一些webservicejar包,应用中cxf的某些依赖包在加载时was会优先加载自己的同名的包,所以把自己的低版本的包加载到应用里而没有加载应用自带的jar包,因此会遇到许多ClassNotFound的问题。解决办法为建立共享库,把冲突的jar包加入共享库中,同时禁用wasJAX-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包
image.png

2、创建共享库
左侧导航栏 环境->共享库->新建
image.png

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

应用->保存
image.png

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

禁用server的JAX-WS服务

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

新建->输入
名称: com.ibm.websphere.webservices.DisableIBMJAXWSEngine
值: true
image.png
应用->保存
image.png

4、重启服务

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

修改MAINFEST.MF文件
image.png
添加DisableIBMJAXWSEngine: true
image.png
在WEB-INF\lib下删除刚刚添加在共享库中的那三个(或两个)jar包
image.png

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

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

image.png

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

(1)、共享库引用
image.png
image.png

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

选择要引用的共享库引用
image.png

确定->保存
image.png
再确定保存

(2)、设置类加载顺序
image.png

image.png

选择覆盖……,父类最后

应用->保存

5.启动测试

启动后测试webservice

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

正常显示了


————————————————
版权声明:本文为CSDN博主「weiwei1261559539」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weiwei1261559539/article/details/89422051