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的更多相关文章

  1. springboot整合WebService简单版

    一.什么是webservice 关于webservice的介绍摘自百度百科,上面的介绍很详细.(链接:https://baike.baidu.com/item/Web%20Service/121503 ...

  2. springboot整合webservice采用CXF技术

    转载自:https://blog.csdn.net/qq_31451081/article/details/80783220 强推:https://blog.csdn.net/chjskarl/art ...

  3. 很详细的SpringBoot整合UEditor教程

    很详细的SpringBoot整合UEditor教程 2017年04月10日 20:27:21 小宝2333 阅读数:21529    版权声明:本文为博主原创文章,未经博主允许不得转载. https: ...

  4. springboot 整合 CXF 版本异常 java.lang.NoClassDefFoundError:ServletRegistrationBean

    在使用SpringBoot 项目整合webservice组件 CXF的时候,在启动时,抛出异常如下,查阅资料初步判断为版本问题.升级到高版本后正常启动. cxf 刚开始使用版本  3.1.7 后更新为 ...

  5. idea使用springboot的webservice基于cxf

    SpringBoot整合CXF实例: 服务端构建 <dependency> <groupId>org.apache.cxf</groupId> <artifa ...

  6. SpringBoot整合Apache-CXF实践

    一.Apache CXF是什么? Apache CXF 是一个开源的 Services 框架,CXF 帮助您利用 Frontend 编程 API 来构建和开发 Services ,像 JAX-WS . ...

  7. Spring整合CXF步骤,Spring实现webService,spring整合WebService

    Spring整合CXF步骤 Spring实现webService, spring整合WebService >>>>>>>>>>>> ...

  8. spring-boot整合mybatis(1)

    sprig-boot是一个微服务架构,加快了spring工程快速开发,以及简便了配置.接下来开始spring-boot与mybatis的整合. 1.创建一个maven工程命名为spring-boot- ...

  9. SpringBoot整合Mybatis之项目结构、数据源

    已经有好些日子没有总结了,不是变懒了,而是我一直在奋力学习springboot的路上,现在也算是完成了第一阶段的学习,今天给各位总结总结. 之前在网上找过不少关于springboot的教程,都是一些比 ...

随机推荐

  1. Project Euler 52: Permuted multiples

    可以看到数字125874的两倍251748和它有着完全相同的数字,只是顺序不同而已.求一个最小的正整数\(x\),使得\(2x,3x,4x,5x,6x\)都有完全相同的数字. 分析:此题的思路比较直接 ...

  2. Linux基础指令--韩顺平老师课程笔记

    一.vi和vim编辑器 ①.三种模式 所有的 Linux 系统都会内建 vi 文本编辑器.vim 具有程序编辑的能力,可以看做是 vi 的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计. ...

  3. Cpython和Jython的对比介绍

    CPython 当我们从Python官方网站下载并安装好Python 3.x后,我们就直接获得了一个官方版本的解释器:CPython.这个解释器是用C语言开发的,所以叫CPython.在命令行下运行p ...

  4. Spring-Mybatis-SpringMVC三大框架整合

    我们直接切人正题,不多逼逼赖赖 第一步:依赖,一下的这些基本上是SSM整合的全部依赖 <!-- https://mvnrepository.com/artifact/org.springfram ...

  5. linux下安装opencv3.0

    查版本gcc --version 需>4.8python 2.7+cmake --version numpy 以上是必须的 linux下安装opencv3.0<pre>https:/ ...

  6. Ansible之系列命令详解

    ansible系列命令有:ansible.ansible-doc.ansible-playbook.ansible-vault.ansible-console.ansible-galaxy.ansib ...

  7. X-Admin&ABP框架开发-RBAC

    在业务系统需求规划过程中,通常对于诸如组织机构.用户和角色等这种基础功能,通常是将这部分功能规划到通用子域中,这也说明了,对于这部分功能来讲,是系统的基石,整个业务体系是建立于这部分基石之上的,当然, ...

  8. jstl-将List中的数据展示到表格中

    功能: 使用jstl将List中的数据动态展示到Jsp表格中,并实现隔行换色功能. 效果图: Jsp代码: <%@ page import="java.util.ArrayList&q ...

  9. 深入理解计算机系统 第十章 系统级I/O

    很多高级语言都提供了执行 I/O 的较高级别的函数.为什么我们还要学习 Unix I/O? 原因:1.由于 I/O 和其他系统概念之间有循环依赖关系,故了解 Unix I/O 将帮助我们理解其他的系统 ...

  10. spark集群搭建(三台虚拟机)——hadoop集群搭建(2)

    !!!该系列使用三台虚拟机搭建一个完整的spark集群,集群环境如下: virtualBox5.2.Ubuntu14.04.securecrt7.3.6_x64英文版(连接虚拟机) jdk1.7.0. ...