• SpringBoot WebService服务端&客户端使用教程


    服务端:

    依赖

    
            
                org.springframework.boot
                spring-boot-starter-web-services
            
    
    
            
                org.apache.cxf
                cxf-rt-frontend-jaxws
                3.2.0
            
    
            
                org.apache.cxf
                cxf-rt-transports-http
                3.2.0
            
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    服务接口

    package com.example.demo.service;
    
    import javax.jws.WebMethod;
    import javax.jws.WebParam;
    import javax.jws.WebResult;
    import javax.jws.WebService;
    
    /**
     * @author: Yinlei
     * Package: com.example.demo.service
     * @date: 2023-10-18 8:40
     * @Description: webservice测试
     * @version: 1.0
     */
    @WebService(name = "HelloWebService",
    targetNamespace = "http://helloWebService.service.demo.example.com")
    public interface HelloWebService {
        @WebMethod
        @WebResult(name = "resultName")
        String get(@WebParam(name = "name") String name);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    服务接口实现类

    package com.example.demo.service.Impl;
    
    import com.example.demo.service.HelloWebService;
    import org.springframework.stereotype.Service;
    
    import javax.jws.WebMethod;
    import javax.jws.WebParam;
    import javax.jws.WebResult;
    import javax.jws.WebService;
    
    /**
     * @author: Yinlei
     * Package: com.example.demo.service.Impl
     * @date: 2023-10-18 8:46
     * @Description:
     * @version: 1.0
     */
    @Service
    @WebService(name = "HelloWebService",
            targetNamespace = "http://helloWebService.service.demo.example.com", //命名空间,一般是对应的路径反过来
            endpointInterface = "com.example.demo.service.HelloWebService")  //实现接口的地址
    public class HelloWebServiceImpl implements HelloWebService {
        @Override
        public String get( String name) {
            return name;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    cxf配置类

    package com.example.demo.config;
    
    import com.example.demo.service.HelloWebService;
    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;
    
    /**
     * @author: Yinlei
     * Package: com.example.demo.config
     * @date: 2023-10-18 10:09
     * @Description: Cxf配置类
     * @version: 1.0
     */
    @Configuration
    public class CxfConfig {
        @Autowired
        private HelloWebService helloWebService;
    
        @Bean
        public ServletRegistrationBean disServlet(){
            return new ServletRegistrationBean(new CXFServlet(),"/webService/*"); //webservice下的请求将有CXFServlet处理
        }
    
        @Bean(name = Bus.DEFAULT_BUS_ID)
        public SpringBus springBus(){
            return  new SpringBus();
        }
    
        @Bean
        public Endpoint endpoint(){
            EndpointImpl endpoint = new EndpointImpl(springBus(), helloWebService);
            endpoint.publish("/helloWebservice");
            return endpoint;
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44

    客户端

    @GetMapping("/get1")
    public String get1() throws MalformedURLException {
        //创建WSDL文件的URL,这个参数为暴露webervice的网址
        URL wsdlLocation = new URL("http://localhost:9000/webService/helloWebservice?wsdl");
        //创建服务名称:第一个参数为命名空间地址,第二个参数 为本地部分的命名 HelloWebServiceImplService  这个是对应的实现类名加上Service
        QName serviceName = new QName("http://helloWebService.service.demo.example.com", "HelloWebServiceImplService");
        Service service = Service.create(wsdlLocation, serviceName);
    
        //获取服务实现类  参数为对应的服务接口.class
        HelloWebService port = service.getPort(HelloWebService.class);
        //调用方法
        String asd = port.get("asd");
        return asd;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    Writed By -知识浅谈

  • 相关阅读:
    java学习二------锁
    JavaSE面试题04:成员变量与局部变量
    解决jmeter软件显示为英文、返回数据乱码、设置编码格式的问题
    2024年浙大MBA项目必报名的三个理由
    MySQL该使用哪种CPU架构服务器?
    电脑技巧:低配置的旧电脑也可以使用Win11系统了
    函数式接口
    mongodb备份还原指南
    RH850P1X芯片学习笔记-Generic Timer Module -ATOM
    【漏洞复现】锐捷 EG易网关 phpinfo.view.php 信息泄露漏洞
  • 原文地址:https://blog.csdn.net/qq_37699336/article/details/133901872