广告
返回顶部
首页 > 资讯 > 后端开发 > JAVA >SpringBoot集成webservice
  • 561
分享到

SpringBoot集成webservice

springbootjavaspring 2023-09-23 09:09:30 561人浏览 八月长安
摘要

前言 之前在工作中,有时候需要去对接第三方的医院,而很多医院的his系统用的都是老技术(WEBService)。一直在对接webservice接口,却不知道webservice接口是怎么实现的,这一次

前言

之前在工作中,有时候需要去对接第三方的医院,而很多医院的his系统用的都是老技术(WEBService)。一直在对接webservice接口,却不知道webservice接口是怎么实现的,这一次,我们来一探究竟。

这里吐槽一句,都什么年代了?还在用webservice?

WebService依赖什么?

跨语言和操作系统的远程调用技术。比如亚马逊,可以将自己的服务以webservice的服务形式暴露出来,我们就可以通过web调用这些,无论我们使用的语言是java还是c,这也是SOA应用一种表现形式。

WSDL(Web Service Description Language)将无论用何种语言书写的web service描述出来,比如其参数或返回值。WSDL是服务端和客户端都能解读的标准格式。客户端通过URL地址访问到WSDL文件,在调用服务端之前先访问WSDL文件。读取到WSDL后通过客户端的api类可以生成代理类,调用这些代理类就可以访问webservice服务。代理类将客户端的方法变为soap(Simple Object Access Protocal,可以理解为Http+xml)格式通过http发送,同时接受soap格式的返回值并解析。

依赖

<dependency>  <groupId>org.springframework.bootgroupId>   <artifactId>spring-boot-starter-webartifactId>dependency><dependency>   <groupId>org.apache.cxfgroupId>   <artifactId>cxf-spring-boot-starter-jaxwsartifactId>   <version>3.3.4version>dependency>

创建实体类

@Data@Builderpublic class UserDto {    private Long id;    private String name;    private Integer age;    private String address;}

创建WebService接口

public interface IUserServer {    default UserDto getUser(Long str) {        throw new RuntimeException("程序员正在马不停蹄地开发新功能");    }}

创建WebService接口的实现类

@Service@WebServicepublic class UserServerImpl implements IUserServer {    @Override    public UserDto getUser(Long id) {        return UserDto.builder()                .id(id)                .address("上海市浦东新区")                .age(25)                .name("laJi").build();    }}

这里用到了注解@WebService,我这就只在实现类上使用了。这里介绍一下,先来看下它的定义:

@Retention(RetentionPolicy.RUNTIME)@Target({ElementType.TYPE})public @interface WebService {    String name() default "";    String targetNamespace() default "";    String serviceName() default "";    String portName() default "";    String wsdlLocation() default "";    String endpointInterface() default "";}
  • name: 对应wsdl:portType标签,默认值为Java类或接口的名称;
  • targetNamespace: 命名空间,一般写为接口的包名倒序,默认值也是接口的包名倒序。对应wsd:definitions:targetNamespace 标签;
  • serviceName: WebService的服务名称,对应wsdl:service,默认值为WebService接口实现类的名称+“Service”,示例:UserServiceImplServicce
  • portName: 对应wsdl:port标签,默认值为:WebService接口实现类的名称+“Port”,示例:UserServiceImplPort
  • wsdlLocation: 指定用于定义WebService的WSDL文档的地址
  • endpoointInterfacce: WebService接口全路径

创建WebService配置类

@Configuration@RequiredArgsConstructorpublic class CxfConfig {    private final IUserServer userServer;        @Bean    public ServletReGIStrationBean cxfServlet() {        return new ServletRegistrationBean(new CXFServlet(), "/webservice/*");    }    @Bean(name = Bus.DEFAULT_BUS_ID)    public SpringBus springBus() {        return new SpringBus();    }    @Bean    public Endpoint endpoint() {        EndpointImpl endpoint = new EndpointImpl(springBus(), userServer);        endpoint.publish("/api");        return endpoint;    }}

启动服务:
在这里插入图片描述
进行访问:http://localhost:8080/webservice
在这里插入图片描述
然后点击url
在这里插入图片描述

客户端

public class WebserviceClient {    public static void main(String[] args) {        JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();        Client client = dcf.createClient("http://localhost:8080/webservice/api?wsdl");        final ObjectMapper mapper = new ObjectMapper();        try {            Object[] objects = client.invoke("getUser", 99L);            System.out.println(mapper.writeValueAsString(objects[0]));        } catch (Exception e) {            e.printStackTrace();;        }    }}

显示:

{"address":"上海市浦东新区","age":25,"id":99,"name":"laJi"}

来源地址:https://blog.csdn.net/qq_42582773/article/details/127917067

--结束END--

本文标题: SpringBoot集成webservice

本文链接: https://www.lsjlt.com/news/416309.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SpringBoot集成webservice
    前言 之前在工作中,有时候需要去对接第三方的医院,而很多医院的his系统用的都是老技术(WebService)。一直在对接webservice接口,却不知道webservice接口是怎么实现的,这一次...
    99+
    2023-09-23
    spring boot java spring
  • Spring集成XFire开发WebService
    Spring集成XFire开发WebService的步骤如下:1. 添加XFire的依赖在Maven项目中,可以在pom.xml文件...
    99+
    2023-09-12
    Spring
  • springboot集成Ldap
    一、什么是Ldap 轻型目录访问协议(英文:Lightweight Directory Access Protocol,缩写:LDAP,/ˈɛldæp/)是一个开放的,中立的,工业标准的应用协议,通过...
    99+
    2023-09-13
    spring boot 服务器 后端
  • Springboot集成GraphicsMagick
    目录以什么方式集成?项目集成1、将gm命令行工具引入到项目中2、在项目启动的时候自动初始化环境3、gm进程池化性能初测写在最后以什么方式集成? JNI / 命令行(im4java)...
    99+
    2022-11-12
  • Springboot集成Neo4j
    一、概述  1.为什么图形数据库?         生活在一个互联的世界中,大多数领域需要处理丰富的连接集以了解真正发生的事情。通常,我们发现项目之间的联系与项目本身一样重要。         虽然现有的关系数据库可以存储这些关...
    99+
    2023-09-05
    spring boot java spring
  • springboot集成websocket
    springboot集成websocket 1. 前言 ​ 这里我们使用springboot搭建一个轻量级的websocket服务,同时提供4个入参。使用websocket服务可以轻松和微信小程序、支付宝小程序、网页就行双向通讯,非常实用方...
    99+
    2023-08-16
    spring boot websocket java 支付宝小程序
  • SpringBoot集成 ElasticSearch
    Spring Boot 集成 ElasticSearch 对于ElasticSearch比较陌生的小伙伴可以先看看ElasticSearch的概述ElasticSearch安装、启动、操作及概念简介 好的开始啦~ 1、基础操作 1.1、导入...
    99+
    2023-08-18
    elasticsearch spring boot java maven intellij-idea
  • SpringBoot随笔-SpringBoot集成Druid
    1.Druid是什么     Druid是Java语言中最好的数据库连接池之一,Druid能够提供强大的监控和扩展功能。 2.Druid连接池的优点: 强大的监控特性,通过Druid提供的监控功能,可以清楚知道连接池和SQ...
    99+
    2014-09-25
    SpringBoot随笔-SpringBoot集成Druid
  • springBoot(11):集成Mybatis
    一、添加依赖<!--mybatis--> <dependency>    <groupId>org.mybatis.spring.boot&...
    99+
    2022-10-18
  • springBoot(12):集成Druid
    一、添加依赖<!--mybatis-开始--> <dependency>    <groupId>org.mybatis.spring.bo...
    99+
    2022-10-18
  • springBoot(22):集成mongodb
    一、添加依赖<!-- mongodb --> <dependency>    <groupId>org.springfr...
    99+
    2022-10-18
  • springboot集成redis lettuce
    目前java操作redis的客户端有jedis跟Lettuce。在springboot1.x系列中,其中使用的是jedis,但是到了springboot2.x其中使用的是Lettuc...
    99+
    2022-11-12
  • springboot如何集成shiro
    这篇文章主要介绍了springboot如何集成shiro,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、项目整体介绍:项目整体的结构如下图所示,项目整体采用 springb...
    99+
    2023-06-15
  • SpringBoot如何集成RabbitMQ
    这篇文章主要介绍“SpringBoot如何集成RabbitMQ”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SpringBoot如何集成RabbitMQ”文章能帮助大家解决问题。一、RabbitMQ...
    99+
    2023-06-30
  • SpringBoot怎样集成redis
    这篇文章给大家分享的是有关SpringBoot怎样集成redis的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。定义REmote DIctionary Server(Redis) ...
    99+
    2022-10-18
  • SpringBoot 集成Redis 过程
    Redis 介绍: Redis 服务 Redis (REmote Dictionary Server) 是一个由Salvatore Sanfilippo 完成的key-value存储...
    99+
    2022-11-12
  • springboot如何集成websocket
    这篇文章主要介绍了springboot如何集成websocket,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1. 原生注解pom.xml<dependency>...
    99+
    2023-06-22
  • SpringBoot如何集成swagger
    小编给大家分享一下SpringBoot如何集成swagger,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Swagger 是一款RESTFUL接口的文档在线自动生成+功能测试功能软件。本文简单介绍了在项目中集成swagge...
    99+
    2023-05-30
    spring boot swagger
  • Springboot如何集成Elasticsearch
    小编给大家分享一下Springboot如何集成Elasticsearch,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!集成配置步骤步骤1:加入 Maven 相关依...
    99+
    2023-06-22
  • SpringBoot如何集成Swagger3
    这篇文章主要介绍SpringBoot如何集成Swagger3,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一,什么是swagger1,  Swagger 是一个规范和完整的文档框架,   ...
    99+
    2023-06-22
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作