springboot整合CXF webservice技术过程

java1234

共 3392字,需浏览 7分钟

 ·

2020-10-26 09:20

点击上方蓝色字体,选择“标星公众号”

优质文章,第一时间送达

  作者 |  黄昏夕阳 

来源 |  urlify.cn/ZVzIFz

66套java从入门到精通实战课程分享

因为最近公司需要对接外部接口,外部接口有webservice和restful两种风格,在这里仅分享下springboot整合CXF webservice的过程(之前没有做过webservice,以下内容仅供参考)

1.创建springboot项目(webserviceidea工具开发过程),一路next

aaef7bca66b86923600ca66186b275c8.webp

2.整合webservice所需依赖(打开项目的pom文件,加入CXF依赖)

449cf7018a713c92c436bfa5ff91c25e.webp



    org.apache.cxf
    cxf-spring-boot-starter-jaxws
    3.3.1

3.在项目中创建相应的包以及配置文件中的配置

3.1在新建的项目中建立相应的包

3.2可以设置项目端口号以及服务地址的前缀,默认为/services/**

3361133db943fe4c6f1fc43ce974cad4.webp

4.创建接口服务以及实现类

4.1创建服务接口以及实现类

558420f9caa8005be65cde43fdc6e368.webp

@WebService(name = "InOrderService", // 与接口中指定的name一致
        targetNamespace = "http://service.omswmswebservice.zhqc.com/")
public interface InOrderService {
   /**
    * @param requestBody
    * @return
    */
   @WebMethod
    @WebResult(name = "String",targetNamespace = "")
   public String inOrderService(@WebParam(name = "requestBody") String requestBody);
}


@WebService(serviceName = "InOrderService", // 与接口中指定的name一致
        targetNamespace = "http://service.omswmswebservice.zhqc.com/",//与接口中的命名空间一致,一般是接口的包名倒
        endpointInterface = "com.zhqc.omswmswebservice.service.InOrderService")//接口地址
@Component
public class InOrderServiceImpl implements InOrderService {

    /**
     * 入库订单
     * @param requestBody
     * @return
     */
    @Override
    public String inOrderService(String requestBody) {
        InOrderReq req = null;
        try {
            req = XmlUtil.xmlToBean(requestBody, InOrderReq.class);

            //业务处理

            if (req != null){
                //响应对象封装-测试数据
                InOrderResp resp = new InOrderResp();
                InOrderTcpContRespDto tcp = new InOrderTcpContRespDto();
                InOrderResponseRespDto response = new InOrderResponseRespDto();
                response.setRspCode("200");
                response.setRspDesc("成功");
                response.setRspType("入库订单类型");
                tcp.setReqTime("20201020152500");
                tcp.setResponse(response);
                InOrderSvcContRespDto svc = new InOrderSvcContRespDto();
                svc.setOrderCode("1111111");
                InOrderContractRootRespDto contractRoot= new InOrderContractRootRespDto();
                contractRoot.setTcpCont(tcp);
                contractRoot.setSvcCont(svc);
                resp.setContractRoot(contractRoot);
                return XmlUtil.toXml(resp);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "";
    }

}

5.建立服务配置类,统一的发布相应的接口服务

4a9958fc26d5f9f52cf3a6c6b7fc03e9.webp

@Configuration
public class WebserviceConfig {

    /**
     * CXF默认的服务路径
     * @return
     */
    @Bean
    public ServletRegistrationBean dispatcherServletForWebservice(){
        return new ServletRegistrationBean(new CXFServlet(),"/services/*");
    }

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

    /**
     * @return
     */
    @Bean
    public InOrderService inOrder(){
        return new InOrderServiceImpl();
    }

    /**
     * 访问地址 http://127.0.0.1:8080/services/inOrderService?wsdl
     * @return
     */
    @Bean
    public Endpoint endpoint(){
        EndpointImpl endpoint = new EndpointImpl(springBus(),inOrder());
        endpoint.publish("/inOrderService");
        return endpoint;
    }

}

6.发布接口服务

直接启动程序入口

7.检测接口服务是否成功

访问:

http://127.0.0.1:8080/services/InOrderService?wsdl
注意:后缀一定要加?wsdl

8.建立测试类,测试服务端和客户端能否通信

5646aaa356fb603ed1b79efe954d5410.webp

 

根据你的接口文档的请求参数和响应参数来创建测试数据,可以检查接口的数据格式和接口是否相符了,开始你的webservice之旅!




粉丝福利:实战springboot+CAS单点登录系统视频教程免费领取

???

?长按上方微信二维码 2 秒即可获取资料



感谢点赞支持下哈 71aac7fe6355c0653b7162aceb033918.webp

浏览 49
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报