springboot2.0集成webservice

1.什么是webservice

简单来说,webservice就是远程调用技术,也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。是:通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI进行注册。

XML:(Extensible Markup Language)扩展型可标记语言。面向短期的临时数据处理、面向万维网络,是Soap的基础。

Soap:(Simple Object Access Protocol)简单对象存取协议。是XML Web Service 的通信协议。当用户通过UDDI找到你的WSDL描述文档后,他通过可以SOAP调用你建立的Web服务中的一个或多个操作。SOAP是XML文档形式的调用方法的规范,它可以支持不同的底层接口,像HTTP(S)或者SMTP。

WSDL:(Web Services Description Language) WSDL 文件是一个 XML 文档,用于说明一组 SOAP 消息以及如何交换这些消息。大多数情况下由软件自动生成和使用。

2.springboot2.0集成webservice

由于springboot提供了webservice的starter组件,所以集成webservice相当简单

pom文件引入依赖

        
            org.springframework.boot
            spring-boot-starter-web-services
        

新建webservice接口

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
 
/**
 * @Title: WebServiceDemoService.java
 * @Description: TODO()
 * @Author: 爱飘de小子  上午9:39
 * @Date: 2018年10月26日 09点39分
 */
@WebService
public interface WebServiceDemoService {
 
    @WebMethod
    String hello(@WebParam(name = "name")String name);
    
}

接口的实现类

import org.springframework.stereotype.Service;
 
import javax.jws.WebService;
 
/**
 * @Title: WebServiceDemoServiceImpl.java
 * @Description: TODO()
 * @Author: 爱飘de小子  上午9:39
 * @Date: 2018年10月26日 09点39分
 */
@Service
@WebService(serviceName = "WebServiceDemoService", // 与接口中指定的name一致
        targetNamespace = "http://webservice.business.mixpay.com", // 与接口中的命名空间一致,一般是接口的包名倒
        endpointInterface = "com.mixpay.business.webservice.WebServiceDemoService" // 接口地址
)
public class WebServiceDemoServiceImpl implements WebServiceDemoService {
 
    @Override
    public String hello(String name) {
        return "hello"+name;
    }
 
 
}
 

新建webservice配置类WebServiceConfig

import com.mixpay.business.webservice.WebServiceDemoService;
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;
 
/**
 * @Title: WebServiceConfig.java
 * @Description: TODO(WebService配置)
 * @Author: 爱飘de小子  16:13
 * @Date: 2018年08月03日 16点13分
 */
@Configuration
public class WebServiceConfig {
 
    @Autowired
    private WebServiceDemoService webServiceDemoService;
 
    /**
     * 注入servlet  bean name不能dispatcherServlet 否则会覆盖dispatcherServlet
     * @return
     */
    @Bean(name = "cxfServlet")
    public ServletRegistrationBean cxfServlet() {
        return new ServletRegistrationBean(new CXFServlet(),"/webservice/*");
    }
 
 
    @Bean(name = Bus.DEFAULT_BUS_ID)
    public SpringBus springBus() {
        return new SpringBus();
    }
 
    /**
     * 注册WebServiceDemoService接口到webservice服务
     * @return
     */
    @Bean(name = "WebServiceDemoEndpoint")
    public Endpoint sweptPayEndpoint() {
        EndpointImpl endpoint = new EndpointImpl(springBus(), webServiceDemoService);
        endpoint.publish("/webservice");
        return endpoint;
    }
 
}

启动项目后,游览器访问 http://localhost:项目端口/CXFServlet注册地址 本例访问http://localhost:8500/webservice

image

点击红色部分查看wsdl服务描述文档


image

wsdl文档地址为: http://localhost:端口/CXFServlet注册地址/接口注册地址?wsdl

本例访问:http://localhost:8500/webservice/webservice?wsdl

至此,webservice服务提供已经完成,接下来,webservice接口的调用
在idea中右键点击项目 --> webservices --> Generate Java Code From Wsdl

image

点击ok,会在相应的包下生成。java文件和class文件

测试:


image

你可能感兴趣的:(springboot2.0集成webservice)