Spring boot 2.x基于cxf发布webservice服务

早过忘川 提交于 2020-01-13 16:57:46

一. pom.xml添加相关依赖

<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-spring-boot-starter-jaxws</artifactId>
    <version>3.2.5</version>
</dependency>

二 开发WebService接口类和接口对应的实现类

添加interface

package com.dhcens.platform.service;


import org.springframework.stereotype.Component;

import javax.jws.WebMethod;
import javax.jws.WebService;

/**
 * @author zhibao
 */
@WebService(name = "QueryWebService", // 暴露服务名称
        targetNamespace = "http://dhcens.com.cn/"// 命名空间,一般是接口的包名倒序
)
@Component
public interface QueryDataService {
    @WebMethod
    public String queryData(String paramters);

}

添加实现类

package com.dhcens.platform.service.impl;

import com.dhcens.platform.service.QueryDataService;
import org.springframework.stereotype.Service;

import javax.jws.WebService;

/**
 *
 * @author zhibao
 */
@WebService(name = "QueryWebService", // 暴露服务名称
        targetNamespace = "http://dhcens.com.cn/"// 命名空间,一般是接口的包名倒序
)
@Service
public class QueryDataServiceImpl implements QueryDataService {
    @Override
    public String queryData(String paramters) {
        return "this is a webservice";
    }
}

三 Webservice服务发布配置

发布服务对外提供接口

package com.dhcens.platform.configuration;


import com.dhcens.platform.service.QueryDataService;
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 WebServiceConfig {

    @Bean(name = "cxfServlet")
    public ServletRegistrationBean dispatcherServlet() {
        return new ServletRegistrationBean(new CXFServlet(), "/ws/*");
    }
    @Bean(name = Bus.DEFAULT_BUS_ID)
    public SpringBus springBus() {
        return new SpringBus();
    }
    @Autowired
    public QueryDataService queryDataService;

    @Bean
    public Endpoint queryDataService() {
        EndpointImpl endpoint = new EndpointImpl(springBus(),queryDataService);
        endpoint.publish("/QueryWebService");
        return endpoint;
    }
}

四 服务调试

测试接口

浏览器打开服务地址http://127.0.0.1:9092/platform/ws/QueryWebService?wsdl

 

 

 如果是这样就没问题,我们用SoapUI测试下我们得接口

 

 

 关于方法参数名称得指定只需要在接口类中添加

@WebParam(name="XXX")

一个简单的WebService服务就搭建完成了

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!