开发者

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

开发者 https://www.devze.com 2023-11-09 14:07 出处:网络 作者: 知识浅谈
目录服务端:依赖服务接口服务接口实现类cxf配置类客户端服务端: 依赖 <!--webservice相关依赖-->
目录
  • 服务端:
    • 依赖
    • 服务接口
    • 服务接口实现类
    • cxf配置类
  • 客户端

    服务端:

    依赖

    <!--        webservice相关依赖-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web-services</artifactId>
            </dependency>
            <dependency>
                <groupId>org.apache.cxf</groupId>
                <artifactId>cxf-rt-frontend-jaxws</artifactId>
                <version>3.2.0</version>
            </dependency>
            <dependency>
                <groupId>org.apache.cxf</groupId>
                <artifactId>cxf-rt-transports-http</artifactId>
                <version>3.2.0</version&gpythont;
            </dependency>

    服务接口

    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);
    }

    服务接口实现类

    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:android46
     * @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;
        }
    }

    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.ServletRegi编程客栈strationBean;
    import org.springframework.context.annotation.Bean;
    import org.springframework.javascriptcontext.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;
        }
    }

    客户端

    @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;
    }

    到此这篇关于SpringBoot WebService服务端&amp;客户端使用教程的文章就介绍到这了,更多相关SpythonpringBoot WebService服务端内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    关注公众号