springBoot如何快速发布webService接口?(含测试工具)

news2024/12/24 12:49:55

文章目录

  1. 引入maven依赖

org.apache.cxf cxf-rt-frontend-jaxws 3.4.5 org.apache.cxf cxf-rt-transports-http 3.4.5 org.apache.cxf cxf-spring-boot-starter-jaxws 3.4.5 ```
  1. 新建webService接口
    注意接口要添加注释@WebService,且要添加name和targetNamespace属性

    import javax.jws.WebMethod;
    import javax.jws.WebParam;
    import javax.jws.WebService;
    
    @WebService(name = "likuWmsWsService",targetNamespace = "http://impl.service.system.ruoyi.com/")
    public interface IWmsTestService {
    
        @WebMethod
        public String queryStock(@WebParam(name = "param") String param);
    }
    
  2. 增加接口实现类

    @WebService
    @Configuration
    public class WmsTestServiceImpl implements IWmsTestService {
    
        @Override
        public String queryStock(String param) {
            System.out.printf("接收的参数:"+param);
            Map<String, Object> returnMap = new HashMap<String, Object>();
            returnMap.put("data",new ArrayList<>());
            returnMap.put("MSGTY","S");
            returnMap.put("MSGTX","失败原因");
            return JSONObject.toJSONString(returnMap);
        }
    }
    
  3. 增加发布webService的类

    import com.ruoyi.system.service.IWmsTestService;
    import org.apache.cxf.Bus;
    import org.apache.cxf.bus.spring.SpringBus;
    import org.apache.cxf.jaxws.EndpointImpl;
    import org.apache.cxf.transport.servlet.CXFServlet;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.web.servlet.ServletRegistrationBean;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import javax.xml.ws.Endpoint;
    
    @Configuration
    public class WebServicePublish {
        @Autowired
        private Bus bus;
        @Autowired
        private IWmsTestService wmsTestServiceImpl;
    
        /**
         * 用于注册CXFServlet的
         * 地址/webservice/*
         * * 通配符 更上接口地址
         *
         */
        @Bean("cxfServletRegistration")
        public ServletRegistrationBean dispatcherServlet() {
            // 这里就是发布服务的跟路径,后面 * 是通配符,表示跟什么都行
            return new ServletRegistrationBean<>(new CXFServlet(), "/webservice/*");
        }
    
        @Bean(name = Bus.DEFAULT_BUS_ID)
        public SpringBus springBus() {
            return new SpringBus();
        }
    
        @Bean
        public Endpoint endpoint() {
            // 建立一个端点 ,第一个参数是 springBus 对象,第二个参数是刚才的接口实现类(因为在实现类中用了@service,所以这里可以自动注入)
            // PS: 要是有多个service,这个方法对象多写几个就行
            EndpointImpl endpoint = new EndpointImpl(bus, wmsTestServiceImpl);
            // 这里就是发布的这个接口的地址
            endpoint.publish("/wmsWs");
            return endpoint;
        }
    }
    
  4. 服务启动成功后,通过浏览器访问wsdl地址

    localhost:8083/webservice/wmsWs?wsdl

    <wsdl:definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://impl.service.system.ruoyi.com/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns1="http://schemas.xmlsoap.org/soap/http" name="WmsTestServiceImplService" targetNamespace="http://impl.service.system.ruoyi.com/">
    <wsdl:types>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://impl.service.system.ruoyi.com/" elementFormDefault="unqualified" targetNamespace="http://impl.service.system.ruoyi.com/" version="1.0">
    <xs:element name="queryStock" type="tns:queryStock"/>
    <xs:element name="queryStockResponse" type="tns:queryStockResponse"/>
    <xs:complexType name="queryStock">
    <xs:sequence>
    <xs:element minOccurs="0" name="param" type="xs:string"/>
    </xs:sequence>
    </xs:complexType>
    <xs:complexType name="queryStockResponse">
    <xs:sequence>
    <xs:element minOccurs="0" name="return" type="xs:string"/>
    </xs:sequence>
    </xs:complexType>
    </xs:schema>
    </wsdl:types>
    <wsdl:message name="queryStock">
    <wsdl:part element="tns:queryStock" name="parameters"> </wsdl:part>
    </wsdl:message>
    <wsdl:message name="queryStockResponse">
    <wsdl:part element="tns:queryStockResponse" name="parameters"> </wsdl:part>
    </wsdl:message>
    <wsdl:portType name="likuWmsWsService">
    <wsdl:operation name="queryStock">
    <wsdl:input message="tns:queryStock" name="queryStock"> </wsdl:input>
    <wsdl:output message="tns:queryStockResponse" name="queryStockResponse"> </wsdl:output>
    </wsdl:operation>
    </wsdl:portType>
    <wsdl:binding name="WmsTestServiceImplServiceSoapBinding" type="tns:likuWmsWsService">
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <wsdl:operation name="queryStock">
    <soap:operation soapAction="" style="document"/>
    <wsdl:input name="queryStock">
    <soap:body use="literal"/>
    </wsdl:input>
    <wsdl:output name="queryStockResponse">
    <soap:body use="literal"/>
    </wsdl:output>
    </wsdl:operation>
    </wsdl:binding>
    <wsdl:service name="WmsTestServiceImplService">
    <wsdl:port binding="tns:WmsTestServiceImplServiceSoapBinding" name="WmsTestServiceImplPort">
    <soap:address location="http://localhost:8083/webservice/wmsWs"/>
    </wsdl:port>
    </wsdl:service>
    </wsdl:definitions>
    
  5. 通过webServiceStudio工具进行调试

    工具下载地址:https://pan.baidu.com/s/1F5WgMPM3u4yY-xgYyskb8Q?pwd=yxao
    调用测试:
    在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1289249.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

「遮天」叶凡斩杀同等级,寻回丢失秘宝,暴打神桥境同等级强者

Hello,小伙伴们&#xff0c;我是拾荒君。 《遮天》国漫第34集已经更新了&#xff01;我的小伙伴们&#xff0c;包括拾荒君在内&#xff0c;都是迫不及待的去观看这一集。在这一集中&#xff0c;叶凡一直寻找的丢失的法器&#xff0c;被吴清风查出是被韩易水偷走的。这位韩长老…

Android audio环形缓冲队列

1、背景 在学习audio的过程中&#xff0c;看到了大神zyuanyun的博客&#xff0c;在博客的结尾&#xff0c;大神留下了这些问题&#xff1a; 但是大神没有出后续的博文来说明audio环形缓冲队列的具体实现&#xff0c;这勾起了我强烈的好奇心。经过一段时间的走读代码&#xff…

【日常总结】树莓派导致的公司无法上网 - 广播风暴

一、场景 二、问题 三、分析原因 四、解决方案 方案一&#xff1a;更换树莓派后ping路由器恢复正常 方案二&#xff1a;配置交换机 交换机广播风暴配置 也可以通过PPS来限速 查看配置 一、场景 宽带&#xff1a;公司3条500M光纤-联通 路由器&#xff1a;锐捷 在线用户…

Memory-augmented Deep Autoencoder for Unsupervised Anomaly Detection 论文阅读

Memorizing Normality to Detect Anomaly: Memory-augmented Deep Autoencoder for Unsupervised Anomaly Detection 摘要1.介绍2.相关工作异常检测Memory networks 3. Memory-augmented Autoencoder3.1概述3.2. Encoder and Decoder3.3. Memory Module with Attention-based S…

el-table全部选择和全部取消

el-table实现全部选择和全部取消 其实非常简单&#xff0c;el-table自带的都有方法toggleAllSelection()和clearSelection() 具体代码如下&#xff1a; <el-button typesuccess clickcheckAll sizesmall>全选</el-button> <el-button typesuccess clickcancel…

【往届见刊检索速度hin OK】 第五届计算机工程与应用国际学术会议 (ICCEA 2024)

第五届计算机工程与应用国际学术会议 (ICCEA 2024) 2024 5th International Conference on Computer Engineering and Application 2024年4月12-14日 中国-杭州 计算机工程与应用在人工智能、大数据、云计算、物联网、网络安全等领域发挥着重要作用&#xff0c;随着科技日…

docker 安装mysql 主从复制

一、搭建主服务器的mysql 1.1 先新建文件夹 mkdir -p /data/dockerData/mysql-master/conf 1.2 进入/data/dockerData/mysql-master/conf目录下新建my.config, [mysqld] ## 设置server_id&#xff0c;同一局域网中需要唯一 server_id101 ## 指定不需要同步的数据库名称 bin…

Redis7--基础篇7(哨兵sentinel)

1. 关于哨兵的介绍 1、监控redis运行状态&#xff0c;包括master和slave&#xff08;主从监控&#xff09; 2、哨兵可以将故障转移的结果发送给客户端&#xff08;消息通知&#xff09; 3、当master down机&#xff0c;能自动将slave切换成新master&#xff08;故障转移&#…

学生档案管理系统设计

摘要 随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对学生档案信息进行管理,具有着手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量…

20、pytest中的参数化

官方实例 # content of test_expectation.pyimport pytestpytest.mark.parametrize("test_input, expected",[("35",8),("24",6),("6*9",42)]) def test_eval(test_input, expected):assert eval(test_input) expected# content of …

Vmware虚拟机简介和安装

作者&#xff1a;余小小 常见的虚拟机 vmwarevirtualBox Vmware 运行在win系统上centos运行在Vm上 先安装vm&#xff0c;在安装centos系统 Vmware介绍 不用分区或者重开机&#xff0c;就可以在同一台pc上使用多种操作系统完全隔离&#xff0c;且保护不同的操作系统环境和文…

掌控安全 暖冬杯 CTF Writeup By AheadSec

本来结束时发到了学校AheadSec的群里面了的&#xff0c;觉得这比赛没啥好外发WP的&#xff0c;但是有些师傅来问了&#xff0c;所以还是发一下吧。 文章目录 Web签到&#xff1a;又一个计算题计算器PHP反序列化又一个PHP反序列化 Misc这是邹节伦的桌面背景图什么鬼&#xff1f;…

【分享】PDF文件不能编辑的3个原因

PDF文件具有很好的兼容性&#xff0c;可靠性&#xff0c;安全性&#xff0c;是很多人办公常用的电子文档格式。但有时候想要编辑PDF时&#xff0c;却发现不能编辑&#xff0c;是什么原因呢&#xff1f;下面小编来分享一下常见的3个原因。 原因1&#xff1a; PDF文件是扫描件&a…

035.Python面向对象_三大特性_封装、继承、多态

我 的 个 人 主 页&#xff1a;&#x1f449;&#x1f449; 失心疯的个人主页 &#x1f448;&#x1f448; 入 门 教 程 推 荐 &#xff1a;&#x1f449;&#x1f449; Python零基础入门教程合集 &#x1f448;&#x1f448; 虚 拟 环 境 搭 建 &#xff1a;&#x1f449;&…

Android studio中如何生成jar包?

文章目录 需求背景目录结构gradle结构makeJar的语法解析 执行makeJar 任务拿到jar包 需求背景 别部门做C语言开发的同学开发了一个库&#xff0c;需要给我们Android端去调用。 我们拿到源码&#xff0c;首先需要做的是通过CMake去把C源码编译链接成动态库。 当然静态库也行&am…

NDIS协议驱动开发指南

文章目录 NDIS协议驱动开发指南1. 技术概览2. NDIS协议驱动2.1 BindAdapterHandlerEx2.2 SendNetBufferListsCompleteHandler2.3 ReceiveNetBufferListsHandler2.4 ProtocolNetPnpEvent 3. NET_BUFFER_LIST4. ndisprot实例5. 总结 NDIS协议驱动开发指南 我们知道&#xff0c;在…

Could not resolve all files for configuration ‘:app:debugCompileClasspath‘.

修改前 修改后 maven {url https://developer.huawei.com/repo/}

3DSEE:AI驱动的3D模型语义搜索引擎

3DSEE &#xff08;3D SEmantic Engine&#xff09;是基于 AI 技术的 3D 模型语义搜索引擎&#xff0c;可以自动提取 3D 模型内涵的语义信息并存储入库&#xff0c;以帮助用户使用自然语言或关键字高效地检索 3D 模型。3DSEE 提供完善的二次开发 API&#xff0c;无论使用Java、…

键盘打字盲打练习系列之反复练习——3

一.欢迎来到我的酒馆 盲打&#xff0c;反复练习&#xff01; 目录 一.欢迎来到我的酒馆二.数字符号键位指法 二.数字符号键位指法 前面的一个章节重点介绍了主键盘区字母键位的指法&#xff1a;基准键位指法、QWERTY字母键位指法、ZXCVBNM字母键位指法。大概练习一天的时间&…

【力扣】240.搜索二维矩阵

题目意思是从该矩阵之中查找出是否有和target一样的值&#xff0c;若有则返回true&#xff0c;无则返回false。这里我用的是java。总共有三种方法&#xff0c;分别是暴力解题法&#xff08;能过&#xff09;&#xff0c;二分查找法&#xff08;就是将二维数组拆分成m个二维数组…