springboot webservice接口调用_springboot整合CXF webservice技术过程

作者 | 黄昏夕阳

来源 | urlify.cn/ZVzIFz

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

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

0c294f5be7146eec56d184e59fe19e90.png

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

1ac36caa4155fe80038796fa73f53052.png
    org.apache.cxf    cxf-spring-boot-starter-jaxws    3.3.1

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

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

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

14e1101efc0eb20fde2611a3f8d4f75b.png

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

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

cebaeddfe12983271cee7df01048bc22.png
@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")//接口地址@Componentpublic 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.建立服务配置类,统一的发布相应的接口服务

db74e77f9b69480aaa3c01759b62c339.png
@Configurationpublic 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.建立测试类,测试服务端和客户端能否通信

1a09e048ae5bd7701d719f21605ae139.png

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值