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的教程,都是一些比 ...
随机推荐
- go语言版本测试, 一段错误代码引发的血案
起因: 最近在学习手写docker,看到了一段会编译错误的代码. 过程: 最近在学习docker,看到一段示例代码,每次编译时会报错. 因此, 无法继续下去, 只好在网上搜索解决方案, 用了很多时间, ...
- js基础总结02--字符串操作
1.字符串中对单个字符位置的操作 indexOf(char); 从左往右查找,返回匹配到的第一个字符的位置,没有匹配则返回-1 lastiIndexOf(char); 从右往左查找,返回匹配到的第一个 ...
- 【Canvas真好玩】从黑客帝国开始
前言 笔者之前有一段时间一直在学习Canvas相关的技术知识点,通过参考网上的一些资料文章,学着利用简单的数学和物理知识点实现了一些比较有趣的动画效果,最近刚好翻看到以前的代码,所以这次将这些代码实践 ...
- 【自然语言处理】利用LDA对希拉里邮件进行主题分析
首先是读取数据集,并将csv中ExtractedBodyText为空的给去除掉 import pandas as pd import re import os dir_path=os.path.dir ...
- 致和我一样迷茫的Java程序员们
缘起 从事近7年Java开发之后,在2019年这个寒冷的冬天里,我终于迎来了人生中的第一次裁员. 啊,30岁之后的裁员真让人焦虑. 按照以往惯例,在面试心仪的公司之前,需要先面试一些不那么心仪的公司热 ...
- C# IV: 数据库基础操作2
需上一篇C# III:数据库基础操作 另外一个经常碰到的数据库操作是,单次执行多个SQL语句,譬如,一次性插入多条数据. 方法一,拼凑长SQL语句 拼凑长SQL语句实际上是String的操作.如下示例 ...
- java编程思想第四版第十一章习题
第一题 package net.mindview.holding.test1; import java.util.ArrayList; import java.util.List; /** * 沙鼠 ...
- 关于RAID 5的介绍与创建
一.简介 定义: RAID 5是RAID 0和RAID 1的折中方案.RAID 5具有和RAID0相近似的数据读取速度,只是多了一个奇偶校验信息,写入数据的速度比对单个磁盘进行写入操作稍慢.同时由于多 ...
- nyoj 833-取石子(七) (摆成一圈,取相邻)
833-取石子(七) 内存限制:64MB 时间限制:1000ms 特判: No 通过数:16 提交数:32 难度:1 题目描述: Yougth和Hrdv玩一个游戏,拿出n个石子摆成一圈,Yougth和 ...
- nyoj 114-某种序列 (python EOFError, List, append)
114-某种序列 内存限制:64MB 时间限制:3000ms 特判: No 通过数:6 提交数:13 难度:4 题目描述: 数列A满足An = An-1 + An-2 + An-3, n >= ...