Springboot整合webservice
2019-12-10 16:34:42 星期二
WebService是什么
WebService是一种跨编程语言和跨操作系统平台的远程调用技术,服务之间的相互调用与开发语言无关
WebService平台技术
- XML+XSD
WebService采用HTTP协议传输数据,采用XML格式封装数据
- SOAP
WebService通过HTTP协议发送请求和接收结果时,发送的请求内容和结果内容都采用XML格式封装,并增加了一些特定的HTTP消息头,以说明HTTP消息的内容格式,这些特定的HTTP消息头和XML内容格式就是SOAP协议。SOAP提供了标准的RPC方法来调用Web Service。
- WSDL
基于XML的语言,用于描述Web Service及其函数、参数和返回值。它是WebService客户端和服务器端都能理解的标准格式
springboot整合WebService
1、Springboot中已经有配置的webservice的jar包,我们在开发时直接引入即可
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-spring-boot-starter-jaxws</artifactId>
<version>3.2.6</version>
</dependency>
项目中的Springboot父版本采用2.2.0
2、webservice服务接口
@Service
@WebService(name = "MasterDataService", //该名字可自定义
targetNamespace = "http://webservice/system.biz.medical.com" // 该URL一般为当前包名的倒序
)
public interface EmrWebService {
/**
* 服务调用
*
* @param data String
* @return String
*/
@WebMethod
String emrService(@WebParam String data);
}
3、接口实现
@Slf4j
@Service
@WebService(name = "MasterDataService", // 与接口中的name相同
targetNamespace = "http://webservice/system.biz.medical.com", // 一般为当前包名的倒序
endpointInterface = "com.medical.biz.system.webservice.EmrWebService" // 为接口类的包名
)
public class EmrWebServiceImpl implements EmrWebService {
private static final String RESPONSE = "<Response><Header><SourceSystem>%s</SourceSystem><MessageID>%s</MessageID></Header><Body><ResultCode>%s</ResultCode><ResultContent>%s</ResultContent></Body></Response>";
@Override
public String emrService(@WebParam String data) {
log.info("接收参数 => [ {} ]", data);
if (data.isEmpty()) {
return "传入的参数为空";
}
return String.format(RESPONSE, "01", "", "0", "成功");
}
}
4、配置cxf服务发布
注意下方代码中注释信息中的坑点
@Configuration
public class CxfConfig {
private Bus bus;
private EmrWebService emrWebService;
@Autowired
public CxfConfig(Bus bus, EmrWebService emrWebService) {
this.bus = bus;
this.emrWebService = emrWebService;
}
@Bean
public Endpoint endpoint() {
EndpointImpl endpoint = new EndpointImpl(bus, emrWebService);
endpoint.publish("/MasterDataService");
return endpoint;
}
/**
* 坑点:
* 1、方法名为dispatchServlet()
* 如果Springboot的主版本在2.0.X以下时,可以正常启动,此时在方法中配置的访问路径将会覆盖默认或者在application.properties文件中配置server.servlet.context-path=中的值
* 如果Springboot的主版本在2.0.X以上时,此时启动报错,不能正常启动
* 此时需要将方法名更改,不能用dispatchServlet(),在方法中配置webservice的访问路径,不会与项目配置的全局访问路径冲突,
*
* @return ServletRegistrationBean
*/
@SuppressWarnings("all")
@Bean
public ServletRegistrationBean disServlet() {
// 此处配置的是webservice接口的访问地址,类似 http://127.0.0.1:8001/emr
return new ServletRegistrationBean(new CXFServlet(), "/emr/*");
}
}
5、启动项目,访问
http://127.0.0.1:8001/emr,可以看到服务信息

推荐使用soapUI进行服务测试,结果如下:

Springboot整合webservice的更多相关文章
- springboot整合WebService简单版
一.什么是webservice 关于webservice的介绍摘自百度百科,上面的介绍很详细.(链接:https://baike.baidu.com/item/Web%20Service/121503 ...
- springboot整合webservice采用CXF技术
转载自:https://blog.csdn.net/qq_31451081/article/details/80783220 强推:https://blog.csdn.net/chjskarl/art ...
- 很详细的SpringBoot整合UEditor教程
很详细的SpringBoot整合UEditor教程 2017年04月10日 20:27:21 小宝2333 阅读数:21529 版权声明:本文为博主原创文章,未经博主允许不得转载. https: ...
- springboot 整合 CXF 版本异常 java.lang.NoClassDefFoundError:ServletRegistrationBean
在使用SpringBoot 项目整合webservice组件 CXF的时候,在启动时,抛出异常如下,查阅资料初步判断为版本问题.升级到高版本后正常启动. cxf 刚开始使用版本 3.1.7 后更新为 ...
- idea使用springboot的webservice基于cxf
SpringBoot整合CXF实例: 服务端构建 <dependency> <groupId>org.apache.cxf</groupId> <artifa ...
- SpringBoot整合Apache-CXF实践
一.Apache CXF是什么? Apache CXF 是一个开源的 Services 框架,CXF 帮助您利用 Frontend 编程 API 来构建和开发 Services ,像 JAX-WS . ...
- Spring整合CXF步骤,Spring实现webService,spring整合WebService
Spring整合CXF步骤 Spring实现webService, spring整合WebService >>>>>>>>>>>> ...
- spring-boot整合mybatis(1)
sprig-boot是一个微服务架构,加快了spring工程快速开发,以及简便了配置.接下来开始spring-boot与mybatis的整合. 1.创建一个maven工程命名为spring-boot- ...
- SpringBoot整合Mybatis之项目结构、数据源
已经有好些日子没有总结了,不是变懒了,而是我一直在奋力学习springboot的路上,现在也算是完成了第一阶段的学习,今天给各位总结总结. 之前在网上找过不少关于springboot的教程,都是一些比 ...
随机推荐
- 【IOS开发—视图控制器】
一.UIViewController 视图控制器是UIViewController类或者其子类对象,每个视图控制器都负责管理一个视图层次结构.在UIViewController中有一个重要的UIVie ...
- My Android 学习之旅--开始
其实,很早就想写写博客了,一直懒到现在. 学习android也不是今天才开始的,大概在2月份过完年之后就开始了,买了我认为还可以的书<Android从入门到精通>,花了不到一个月的时间,把 ...
- PHP压缩文件夹的方法
PHP压缩文件夹的方法<pre> public function addFileToZip($path, $zip) { $handler = opendir($path); //打开当前 ...
- php windows与linux下的路径区别
php windows与linux下的路径区别windows用的是"\",linux用的是"/"这一点要特别清楚,, ps:在PHP windows也可以用/表 ...
- jquery正确获取iframe里元素的方法
<iframe id="_ae_frame" width="100%" height="100%" frameborder=" ...
- 篇六:项目使用Dubbo
导语:Dubbo是阿里巴巴的一个分布式服务的开源框架,致力于提供高性能和透明化的RPC远程服务调用方案,是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000 ...
- JavaScript 运行原理
i{margin-right:4px;margin-top:-0.2em}.like_comment_tips .weui-icon-success{background:transparent ur ...
- Windows下mysql的下载和安装
下载: 1.下载地址:https://www.mysql.com/downloads/ 2.选择社区版:MySQL Community (GPL) Downloads » 3.MySQL Commun ...
- [java笔记] 最近学的一些笔记
1.@Override的用法 2.父类的返回值类型的范围,与子类返回值类型的返回的大小关系: 3.子类方法的权限修饰符,与子类方法的权限修饰符: 4.如果p1是一个对象,p2也是个对象,那么代码p1= ...
- poj 1001 求高精度幂(Java, BigDecimal, pow, hasNext, stripTrailingZeros, toPlainString)
求高精度幂 Time Limit: 500MS Memory Limit: 10000K Total Submissions: 180325 Accepted: 43460 Descripti ...