Spring项目整合WebService服务遇到问题记录
项目是用SSM+Maven构建,在整合WebService时,将遇到问题解决方式记录如下:
基于WS风格使用方式
1、所需要类库:
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>3.2.4</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>3.2.4</version>
</dependency>
<dependency>
<groupId>org.codehaus.woodstox</groupId>
<artifactId>stax2-api</artifactId>
<version>3.1.4</version>
</dependency>
<dependency>
<groupId>org.codehaus.woodstox</groupId>
<artifactId>woodstox-core-asl</artifactId>
<version>4.4.1</version>
</dependency>
2、添加cxf.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jaxws="http://cxf.apache.org/jaxws"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd">
<!--
Spring整合CXF发布基于WS的服务配置文件:
address:服务地址
serviceClass:服务的接口
serviceBeans:服务实现类
访问地址:http://localhost:8080/ws/manuService/
-->
<bean id="mywsInterceptor" class="com.modules.webservice.interceptor.MyInterceptor"/>
<jaxws:server address="/manuService" serviceClass="com.modules.webservice.service.IManuService">
<jaxws:serviceBean>
<bean class="com.modules.webservice.service.impl.ManuServiceImpl"></bean>
</jaxws:serviceBean>
<jaxws:inInterceptors>
<ref bean="mywsInterceptor"></ref>
</jaxws:inInterceptors>
</jaxws:server>
</beans>
3、客户端动态调用wsdl文件
String operation = "方法名";//调用方法名称
JaxWsDynamicClientFactory clientFactory = JaxWsDynamicClientFactory.newInstance();
Client client = clientFactory.createClient("http://IP:端口/项目名ws/manuService?wsdl");
//解决服务端接口和实现文件目录不一致导致的No operation was found with the name异常
Endpoint endpoint = client.getEndpoint();
QName qname = new QName(endpoint.getService().getName().getNamespaceURI(),operation);
BindingInfo bindingInfo = endpoint.getEndpointInfo().getBinding();
if(bindingInfo.getOperation(qname) == null){
for(BindingOperationInfo operationInfo :bindingInfo.getOperations()){
if(operation.equals(operationInfo.getName().getLocalPart())){
qname = operationInfo.getName();
break;
}
}
}
Object[] result = client.invoke(qname,"入参,可为空");
System.out.println(result[0]);
4、遇到问题:
a、cxf的类库与stax2-api类库和woodstox-core-asl类库存在版本匹配问题,出现错误时:cxf-3.2.6,stax2-api-4.1,woodstox-core-asl-4.4.1。
问题现象是:本地Windows环境和虚拟器Centos环境均正常,部署到阿里云Centos出现wsdl无法访问,
访问wsdl,报500错误:java.lang.NoSuchMethodError:org/codehaus/stax2/ri/EmptyIterator。
对于客户端,错误提示信息是: javax.xml.ws.soap.SOAPFaultException: Cannot create a secure XMLInputFactory。
解决方案:
采用的cxf-3.2.4、stax2-api-3.1.4和woodstox-core-asl-4.4.1组合,可正常使用。
Spring项目整合WebService服务遇到问题记录相关推荐
- Guava Cache探索及spring项目整合GuavaCache实例
背景 对于高频访问但是低频更新的数据我们一般会做缓存,尤其是在并发量比较高的业务里,原始的手段我们可以使用HashMap或者ConcurrentHashMap来存储. 这样没什么毛病,但是会面临一个问 ...
- spring boot 整合RESTFUL服务
目录 1.自定义请求路径 2.自定义查询方法 3.隐藏方法 4.配置cors 5.其他配置 1.添加restful项目的pom文件 <dependency><groupId>o ...
- Eclipse+Maven+Spring+CXF 构建webservice 服务
一. 软件准备 Eclipse 4.2.1 Maven 2.2.1 Spring 3.2.6 CXF 3.0.2 软件下载和Eclipse 安装 maven插件等请參考其它文章. 二. 步骤 ...
- Spring Boot整合Security+Swagger2踩坑记录,Swagger2无法访问首页
问题: 访问不了Swagger的页面 有可能出现的原因: 1.Security将访问拦截掉了 2.给拦截器拦截了 3.Swagger返回的结果,被自己定义的拦截器or其他方式给篡改了数据,导致无法正常 ...
- mongodb java项目 源码_spring项目整合mongodb进行开发
spring项目整合mongodb进行开发: MongoDB的性能指标: 100个并发,插入550万条记录的平均吞吐量:大约4100条/秒 MONGODB实际上是一个内存数据库,先将数据保存到内存,然 ...
- Spring和CXF整合发布WebService(服务端、客户端)
参考Spring和CXF整合发布WebService(服务端.客户端) 转载于:https://www.cnblogs.com/timspace/p/11113576.html
- spring整合webservice
主要讲解点: WebServiceCXF介绍(了解) JAX-WS服务独立发布及测试.JAX-WS整合spring开发及测试(了解) JAX-RS服务独立发布及测试.JAX-RS整合spring开发及 ...
- Spring Cloud构建微服务架构:分布式服务跟踪(整合zipkin)【Dalston版】
通过上一篇<分布式服务跟踪(整合logstash)>,我们虽然已经能够利用ELK平台提供的收集.存储.搜索等强大功能,对跟踪信息的管理和使用已经变得非常便利.但是,在ELK平台中的数据分析 ...
- Spring Cloud构建微服务架构:分布式服务跟踪(整合logstash)【Dalston版】
通过之前的<入门示例>,我们已经为两个由SpringCloud构建的微服务项目 trace-1和 trace-2引入了Spring Cloud Sleuth的基础模块 spring-clo ...
最新文章
- python使用HanLP进行句法分析实战
- python请输入_不断提示用户输入Python
- jQuery的DOM操作之取值/赋值(1)
- 对某机构为“转移内部矛盾”而嫁祸于我们的事件之真相大起底
- NOIP2012模拟试题【奶牛晒衣服】
- access文本框如何分开_ACCESS 2007 如何在窗体中将一个文本框的内容复制给另外一个文本框?...
- sha256加密_有加密传输数据的需求?来试试stunnel
- 左传 —— 春秋左氏传
- Android XML解析之PULL及单元测试
- LeetCode 981.基于时间的键值存储(C++)
- Django 设置中文和中国时区
- 完美电脑主机一拖二,让你夫妻不再抢电脑,一台主机两人独立玩
- 大版本号跨越,AIDA64更新6.0版本:更新测试,支持Zen 2架构
- fluidsim元件库下载_FluidSIM
- 多视图几何三维重建实战系列之COLMAP
- 淘宝评论爬取 python pandas
- win7下笔记本电脑给手机开热点
- 分组交换比起电路交换快速的原因
- MAC_BOOKPRO苹果电脑系统常用快捷键大全
- c++/c 大整数乘法的分治与递归实现(string存储)
热门文章
- Windows操作系统优化
- 什么是公钥,,什么是密钥啊 ?有什么区别吗?
- 【交换篇】01. 配置线连接登录 ❀ C3750-E ❀ CISCO 交换机
- 深度篇——目标检测史(八) 细说 CornerNet-Lite 目标检测
- qtp软件测试网站实验报告,软件测试实验报告-QTP的使用
- 首席新媒体运营黎想教程:活动运营推广入门全攻略及进阶
- word不同页如何设置不同的页眉和页脚
- Java系列技术之SpringMVC5框架-钟洪发-专题视频课程
- 备战2022年春季面试Java基础面试题库《收藏》
- 机器学习-机器学习之集成学习(ensemble learning)