SpringBoot发布webService接口

1. 简介

WebService是一种跨编程语言和跨操作系统平台的远程调用技术。
所谓跨编程语言和跨操作平台,就是说服务端程序采用java编写,客户端程序则可以采用其他编程语言编写,反之亦然!跨操作系统平台则是指服务端程序和客户端程序可以在不同的操作系统上运行。
所谓远程调用,就是一台计算机a上 的一个程序可以调用到另外一台计算机b上的一个对象的方法,譬如,银联提供给商场的pos刷卡系统,商场的POS机转账调用的转账方法的代码其实是跑在银 行服务器上。再比如,amazon,天气预报系统,淘宝网,校内网,百度等把自己的系统服务以webservice服务的形式暴露出来,让第三方网站和程 序可以调用这些服务功能,这样扩展了自己系统的市场占有率,往大的概念上吹,就是所谓的SOA应用。

2. Springboot 发布 webservice 接口
2.1 导入webservice相关依赖
<!-- WebService start -->
<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-spring-boot-starter-jaxws</artifactId>
    <version>3.2.5</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web-services</artifactId>
</dependency>
<!-- WebService end -->
2.2 编写配置类

import javax.xml.ws.Endpoint;

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 com.adtec.didp.webservice.SynchInterface;
import com.adtec.didp.webservice.impl.SynchInterfaceImpl;

/**
 * 
 * @author
 *
 */
@Configuration
public class WebServiceConfig {
    @Autowired
    private SynchInterface synchInterface;
    @Autowired
    private Bus bus;
    
    @Bean(name = "cxfServlet") 
    public ServletRegistrationBean<CXFServlet> cxfServlet() {
        return new ServletRegistrationBean<CXFServlet>(new CXFServlet(), "/interface/*");
    }

    @Bean
    public SynchInterface SynchWebService() {
        return new SynchInterfaceImpl();
    }

    @Bean(name = Bus.DEFAULT_BUS_ID)
    public SpringBus springBus() {
        return new SpringBus();
    }

    @Bean
    public Endpoint endpoint() {
        // 参数二,是SEI实现类对象
        EndpointImpl endpoint = new EndpointImpl(bus,synchInterface);
        // 发布服务
        endpoint.publish("/Synch");
        return endpoint;
    }
}

// 注入servlet bean name不能dispatcherServlet ,否则会覆盖dispatcherServlet

@Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器。

2.3 创建webservice 接口
import javax.jws.WebMethod;
import javax.jws.WebService;

@WebService(targetNamespace = "http://webservice.didp.adtec.com")
public interface SynchInterface {
    @WebMethod
    public boolean DbSynch(String sql);
}
2.4 编写接口实现类
import javax.jws.WebService;

import org.springframework.stereotype.Component;

import com.adtec.didp.webservice.SynchInterface;
@WebService(serviceName = "SynchInterface",
        targetNamespace = "http://webservice.didp.adtec.com/",
        endpointInterface = "com.adtec.didp.webservice.SynchInterface")
@Component
public class SynchInterfaceImpl implements SynchInterface{

    @Override
    public boolean DbSynch(String sql) {
        System.out.println("1");
        return false;
    }
    
}

@component 标注一个类为Spring容器的Bean,(把普通pojo实例化到spring容器中,相当于配置文件中的)

@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注,标识为一个Bean。

2.5 项目启动,查看效果

XML接口

效果如上图所示说明你发布成功了,可以使用SoapUI,进行接口调试了.


  转载请注明: RRYF SpringBoot发布webService接口

  目录