在开发过程中遇到了一些使用webservice开发的需求,后查阅资料学习,可上手开发。在学习过程中实现了个小demo,为了养成良好的总结习惯(我还没这”坏习惯“),特意写了个小呆萌,记录一下搭建过程。

  • 首先导入必需jar(pom.xml)

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><!--<version>2.1.2.RELEASE</version>--><version>2.0.1.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.demo</groupId><artifactId>springboot-cxf-demo</artifactId><version>0.0.1-SNAPSHOT</version><name>springboot-cxf-demo</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><!-- CXF webservice --><dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-spring-boot-starter-jaxws</artifactId><version>3.2.4</version></dependency><!-- CXF webservice --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
  • 新建测试服务

UserService.java

package com.demo.springbootcxfdemo.service;import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;//指定webservice命名空间
@WebService(targetNamespace = "http://service.springbootcxfdemo.demo.com")
public interface UserService {@WebMethod(operationName = "getHello")//在wsdl文档中显示的方法名,可不指定默认与方法相同;@WebMethod可不指定String getHello(@WebParam(name = "name") String name);}

UserServiceImpl.java

package com.demo.springbootcxfdemo.service.impl;import com.demo.springbootcxfdemo.service.UserService;
import org.springframework.stereotype.Component;/*** @Author Guixing* @Date 2019/1/17 14:00* @Description*/
@Component
public class UserServiceImpl implements UserService {@Overridepublic String getHello(String name) {return "hello "+name;}
}
  • 配置服务访问路径并发布服务

package com.demo.springbootcxfdemo.config;import com.demo.springbootcxfdemo.service.UserService;
import org.apache.cxf.Bus;
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;/*** @Author Guixing* @Date 2019/1/17 14:01* @Description*/
@Configuration
public class CXFConfig {@Autowiredprivate Bus bus;@Autowiredprivate UserService userService;/*** 此方法被注释后:wsdl访问地址为http://127.0.0.1:8080/services/user?wsdl* 去掉注释后:wsdl访问地址为:http://127.0.0.1:8080/soap/user?wsdl*/@Beanpublic ServletRegistrationBean dispatcherServlet(){return new ServletRegistrationBean(new CXFServlet(),"/soap/*");}/*** 发布服务* 指定访问url* @return*/@Beanpublic Endpoint userEndpoint(){EndpointImpl endpoint = new EndpointImpl(bus,userService);endpoint.publish("/user");return endpoint;}
}
  • 测试

浏览器中查看

可以在浏览器中输入http://localhost:8080/soap/user?wsdl来查看

红线圈出为可查看详情的url:http://localhost:8080/soap/user?wsdl=UserService.wsdl

java客户端访问

CXFClient.java

package com.demo.springbootcxfdemo.client;import com.demo.springbootcxfdemo.service.UserService;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;/*** @Author Guixing* @Date 2019/1/17 14:53* @Description*/
public class CXFClient {public static void main(String[] args) {try {// 接口地址String address = "http://127.0.0.1:8080/soap/user?wsdl";// 代理工厂JaxWsProxyFactoryBean jaxWsProxyFactoryBean = new JaxWsProxyFactoryBean();// 设置代理地址jaxWsProxyFactoryBean.setAddress(address);// 设置接口类型jaxWsProxyFactoryBean.setServiceClass(UserService.class);// 创建一个代理接口实现UserService us = (UserService) jaxWsProxyFactoryBean.create();// 数据准备String name = "zhang";// 调用代理接口的方法调用并返回结果String result = us.getHello(name);System.out.println("返回结果:" + result);} catch (Exception e) {e.printStackTrace();}}}

postman测试

请求中的name标签即为@WebParam中name指定的名称,下面为后端返回数据。

写在最后

到这里一个简单的springboot整合cxf框架开发webservice服务的demo就开发完了。

源码地址:https://github.com/zhangguixing/springboot-demo

学习使我快乐!?

SpringBoot整合CXF框架开发相关推荐

  1. SpringBoot使用cxf框架开发WebServices以及配置安全验证机制

    SpringBoot使用cxf框架开发WebServices以及配置安全验证机制 服务端工程 服务接口的实现 服务接口实现类 服务发布类 启动服务端 客户端工程 生成客户端代码 编写客户端代码 客户端 ...

  2. springboot+cxf框架开发SOAP接口

    什么是SOAP SOAP是 simple object access protocol(简单对象访问协议)的缩写.这个协议是用http的post请求实现的,跟一般的post请求不同的是,在请求的hea ...

  3. SpringBoot整合Web框架

    SpringBoot整合Web框架 Spring Boot可以轻松创建独立的.基于Spring的生产级应用程序 它可以让你"运行即可". 大多数Spring Boot应用程序只需要 ...

  4. 详解SpringBoot整合Mybatis框架

    文章目录 前言 一.创建SpringBoot项目 二.配置Mybatis 1. 在pom.xml文件中添加jar包依赖 2. SpringBoot整合Mybatis配置文件 三.创建Mapper接口 ...

  5. 2023新版图文详解SpringBoot整合SSM框架(附源码)

    版权声明 本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 教程概述 本教程以图文形式详细讲解SpringBoot整合SSM框架的流程以及具体步骤及其注意 ...

  6. SpringBoot整合微信支付开发在线教育视频网站(完整版)

    目录 ├─code.zip ├─第 1 章项目介绍和前期准备 │  ├─1-1 SpringBoot整合微信支付开发在线教育视频站点介绍.TS │  ├─1-2 中大型公司里面项目开发流程讲解.TS ...

  7. idea中springboot整合Axis2框架一

    idea中springboot整合Axis2框架一 1.Axis2框架所需要的maven坐标: 2.编写webservice服务类 3.在WEB-INF/services/webService/MET ...

  8. SpringBoot整合RPC框架---Thrift

    文章目录 什么是Thrift 架构 支持的通讯协议 支持的传输协议 支持的服务模型 Thrift的优点 SpringBoot整合Thrift 为什么会出现RPC框架 常见的RPC框架集成套路 开撸 官 ...

  9. Java开发微信公众号之整合weixin-java-tools框架开发微信公众号

    微信开发者接入文档 : https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421135319 微信公众平台测试账号申请: http ...

最新文章

  1. c语言课程设计坦克大战,funcodec++课程设计_坦克大战
  2. mysql安装文档_mysql安装文档
  3. go语言1.4版本将支持面向android开发,[翻译]Go语言1.4版本将支持面向Android开发
  4. 几分钟学会归并排序和快速排序
  5. 2018.09.18 while循环
  6. linux部署的java应用,浏览器访问时,报域名解析错误
  7. ES6 深拷贝_你别自以为是:ES6误区 之 Object.assign()、const
  8. Java基础-String、StringBuffer、StringBuilder的区别
  9. Debian系linux系统常用配置软件源
  10. 唏嘘!知名音乐站再传倒闭:官网、App挂掉,“留下了时代的眼泪...”
  11. 在MongoDB的MapReduce上踩过的坑
  12. 了解计算机PS,PS教程:你应该了解的PS基础绘图工具
  13. 6 RFID的ISOIEC标准
  14. java编写自动化脚本生成apk_批处理脚本实现android应用程序自动化测试
  15. python+FTP 批量上传文件
  16. Cocos2dx中Lua游戏性能优化指南
  17. 基于 FPGA 的高级数字电路设计(7)单口 RAM、同步 FIFO、异步 FIFO 设计
  18. Thinkpad X61 安装 Mac Snow Leopard
  19. VSCode使用chrom调试
  20. linux中jdk环境配置,安装MySQL,配置Hadoop伪分布式,配置hive环境

热门文章

  1. 【20230314】【每日一题】打家劫舍III
  2. ArcPy DataDrivenPages
  3. PHP 亚洲常用时区编码
  4. AutoCAD:解决填充显示填充密度不一样的问题
  5. 计算机原理第四章答案,计算机组成原理习题答案第四章
  6. 北信源DeviceRegister.exe的卸载方法 【转】
  7. Python查询中国城市天气
  8. 深度调研前端框架Vue、React、Angular、jQuery,附参考模板!
  9. Windows内核编程(三)-内核驱动运行与调试
  10. Docker3 - Dockerfile 配置文件