SpringBoot整合CXF框架开发
在开发过程中遇到了一些使用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框架开发相关推荐
- SpringBoot使用cxf框架开发WebServices以及配置安全验证机制
SpringBoot使用cxf框架开发WebServices以及配置安全验证机制 服务端工程 服务接口的实现 服务接口实现类 服务发布类 启动服务端 客户端工程 生成客户端代码 编写客户端代码 客户端 ...
- springboot+cxf框架开发SOAP接口
什么是SOAP SOAP是 simple object access protocol(简单对象访问协议)的缩写.这个协议是用http的post请求实现的,跟一般的post请求不同的是,在请求的hea ...
- SpringBoot整合Web框架
SpringBoot整合Web框架 Spring Boot可以轻松创建独立的.基于Spring的生产级应用程序 它可以让你"运行即可". 大多数Spring Boot应用程序只需要 ...
- 详解SpringBoot整合Mybatis框架
文章目录 前言 一.创建SpringBoot项目 二.配置Mybatis 1. 在pom.xml文件中添加jar包依赖 2. SpringBoot整合Mybatis配置文件 三.创建Mapper接口 ...
- 2023新版图文详解SpringBoot整合SSM框架(附源码)
版权声明 本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 教程概述 本教程以图文形式详细讲解SpringBoot整合SSM框架的流程以及具体步骤及其注意 ...
- SpringBoot整合微信支付开发在线教育视频网站(完整版)
目录 ├─code.zip ├─第 1 章项目介绍和前期准备 │ ├─1-1 SpringBoot整合微信支付开发在线教育视频站点介绍.TS │ ├─1-2 中大型公司里面项目开发流程讲解.TS ...
- idea中springboot整合Axis2框架一
idea中springboot整合Axis2框架一 1.Axis2框架所需要的maven坐标: 2.编写webservice服务类 3.在WEB-INF/services/webService/MET ...
- SpringBoot整合RPC框架---Thrift
文章目录 什么是Thrift 架构 支持的通讯协议 支持的传输协议 支持的服务模型 Thrift的优点 SpringBoot整合Thrift 为什么会出现RPC框架 常见的RPC框架集成套路 开撸 官 ...
- Java开发微信公众号之整合weixin-java-tools框架开发微信公众号
微信开发者接入文档 : https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421135319 微信公众平台测试账号申请: http ...
最新文章
- c语言课程设计坦克大战,funcodec++课程设计_坦克大战
- mysql安装文档_mysql安装文档
- go语言1.4版本将支持面向android开发,[翻译]Go语言1.4版本将支持面向Android开发
- 几分钟学会归并排序和快速排序
- 2018.09.18 while循环
- linux部署的java应用,浏览器访问时,报域名解析错误
- ES6 深拷贝_你别自以为是:ES6误区 之 Object.assign()、const
- Java基础-String、StringBuffer、StringBuilder的区别
- Debian系linux系统常用配置软件源
- 唏嘘!知名音乐站再传倒闭:官网、App挂掉,“留下了时代的眼泪...”
- 在MongoDB的MapReduce上踩过的坑
- 了解计算机PS,PS教程:你应该了解的PS基础绘图工具
- 6 RFID的ISOIEC标准
- java编写自动化脚本生成apk_批处理脚本实现android应用程序自动化测试
- python+FTP 批量上传文件
- Cocos2dx中Lua游戏性能优化指南
- 基于 FPGA 的高级数字电路设计(7)单口 RAM、同步 FIFO、异步 FIFO 设计
- Thinkpad X61 安装 Mac Snow Leopard
- VSCode使用chrom调试
- linux中jdk环境配置,安装MySQL,配置Hadoop伪分布式,配置hive环境