SpringBoot2 整合 CXF 服务端和客户端
文章目录
- 一、CXF服务端
- 1. 导入依赖
- 2. 创建service接口
- 3. 接口实现类
- 4. cxf配置类
- 5. 查看wsdl结果
- 二、CXF客户端
- 2.1. 客户端
- 2.2. 断点调试
- 2.3. 发起调用服务
- 开源源码.
一、CXF服务端
1. 导入依赖
<properties><cxf.version>3.3.1</cxf.version></properties><!-- CXF webservice --><dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-rt-frontend-jaxws</artifactId><version>${cxf.version}</version></dependency><dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-rt-transports-http</artifactId><version>${cxf.version}</version></dependency><dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-spring-boot-starter-jaxws</artifactId><version>${cxf.version}</version></dependency><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-validator</artifactId><version>5.2.4.Final</version></dependency>
2. 创建service接口
注解 | 简介 |
---|---|
@WebService | 放在接口上用于标记为webService服务接口 |
targetNamespace | 命名空间 |
name | 服务接口的名字,可不写 |
@WebMethod | 标记为webService服务的方法 |
@WebParam | 标记为webService服务的方法入参 |
package com.gblfy.ws.service;import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;/*** cxf接口** @author gblfy* @date 2021-09-17*/
@WebService(targetNamespace = "http://service.ws.gblfy.com/", name = "ICxfService")
public interface ICxfService {@WebMethodpublic String sayhello(@WebParam(name = "request") String request);
}
3. 接口实现类
package com.gblfy.ws.service.impl;import com.gblfy.ws.service.ICxfService;
import org.springframework.stereotype.Component;import javax.jws.WebService;/*** cxf接口实现类** @author gblfy* @date 2021-09-17*/
@WebService(serviceName = "cxfServiceShell",//对外发布的服务名targetNamespace = "http://service.ws.gblfy.com/",//指定你想要的名称空间,通常使用使用包名反转endpointInterface = "com.gblfy.ws.service.ICxfService")
@Component
public class CxfServiceImpl implements ICxfService {@Overridepublic String sayhello(String request) {return "gblfy.com " + request;}
}
4. cxf配置类
package com.gblfy.ws.config;import com.gblfy.ws.service.ICxfService;
import com.gblfy.ws.service.impl.CxfServiceImpl;
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.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class CxfConfig {@Beanpublic ServletRegistrationBean cxfServlet() {return new ServletRegistrationBean(new CXFServlet(), "/cxf/*");}@Bean(name = Bus.DEFAULT_BUS_ID)public SpringBus springBus() {return new SpringBus();}@Beanpublic ICxfService cxfService() {return new CxfServiceImpl();}/*** 发布服务并指定访问URL** @return*/@Beanpublic EndpointImpl userEnpoint() {EndpointImpl endpoint = new EndpointImpl(springBus(), cxfService());endpoint.publish("/cxfServiceShell");return endpoint;}
}
5. 查看wsdl结果
(1)配置启动端口 server.port: 8080
(2)启动springBoot启动类 输入 localhost:8080/cxf 可以看到自己发布的服务
http://localhost:8080/cxf/cxfServiceShell?wsdl
二、CXF客户端
2.1. 客户端
package com.gblfy.ws.client;import org.apache.cxf.endpoint.Client;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;
import org.springframework.stereotype.Component;/*** cxf客户端调用(企业内部已封装)** @author gblfy* @date 2021-09-17*/
@Component
public class CxfClient {public static void main(String[] args) throws Exception {String cxfUrl = "http://127.0.0.1:8080/cxf/cxfServiceShell?wsdl";String method = "sayhello";String reqXml = "1";//调用服务CxfClient.cxfClientSingleParam(cxfUrl, method, reqXml);}/*** 单/多参调用工具类(Object类型)** @param cxfUrl url地址* @param method 调用方法名* @param reqXml 发送报文体* @return res 返回结果* @throws Exception 若有异常,在控制台输出异常,并将异常抛出*/public static String cxfClientSingleParam(String cxfUrl, String method, Object... reqXml) throws Exception {String res = null;// 创建动态客户端JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();Client client = dcf.createClient(cxfUrl);// 需要密码的情况需要加上用户名和密码// client.getOutInterceptors().add(new ClientLoginInterceptor(USER_NAME, PASS_WORD));Object[] objects = new Object[0];try {// 基本格式:invoke("方法名",参数1,参数2,参数3....);objects = client.invoke(method, reqXml);res = objects[0].toString();System.out.println("返回数据:" + res);} catch (java.lang.Exception e) {e.printStackTrace();throw e;}return res;}
}
2.2. 断点调试
2.3. 发起调用服务
开源源码.
https://gitee.com/gb_90/unified-access-center
SpringBoot2 整合 CXF 服务端和客户端相关推荐
- SpringBoot2 整合 AXIS2 服务端和客户端
文章目录 一.AXIS2服务端 1. 版本选型 2.导入依赖 3. services.xml 4.Axis2配置类 5.服务接口 6.服务接口实现类 7. FileCopyUtils工具类 8. 测试 ...
- SpringBoot2 整合 AXIS 服务端和客户端
文章目录 一.服务端 1. 版本选型 2.导入依赖 3. SERVLET 4. 接口 5.实现类 6. 配置工厂 7.启动类 8. WEB-INF目录1 8. WEB-INF目录2 9. /目录1 9 ...
- SpringBoot2 整合 XFIRE 服务端和客户端
文章目录 一.集成XFIRE 1. 版本选型 2. 导入依赖 3. 注入XFireSpringServlet 4. 创建一个xml文件 5. 使用@ImportResource注入xml 6. 创建@ ...
- Spring和CXF整合发布WebService(服务端、客户端)
参考Spring和CXF整合发布WebService(服务端.客户端) 转载于:https://www.cnblogs.com/timspace/p/11113576.html
- 【★更新★】高性能 Windows Socket 服务端与客户端组件(HP-Socket v2.0.1 源代码及测试用例下载)...
HP-Socket 以前为某大型通信项目开发了一套通用 Windows Socket TCP 底层通信组件,组件代号为 HP-Socket.现在把 HP-Socket 的所有代码向大众公开,希望能对大 ...
- C#创建TCP/IP服务端和客户端,含测试demo及源码
网上的TCP/IP创建服务端和客户端的方法鱼龙混杂,自己把在使用项目中的TCP服务端和客户端的代码抽了出来,做了demo,以供大家使用参考. 为了方便调用,我把一些基础方法都整合封装到了Reader. ...
- cxf 服务端soap报文_使用Apache CXF开发SOAP Web服务
cxf 服务端soap报文 在上一篇文章中,我逐步介绍了使用apache CXF开发简单的RESTFull服务的步骤. 在本文中,我将讨论使用CXF开发SOAP Web服务. 在继续前进之前,让我们先 ...
- axis idea 设置apache_利用IDEA创建Web Service服务端和客户端的详细过程
创建服务端 一.file–>new–>project 二.点击next后输入服务端名,点击finish,生成目录如下 三.在 HelloWorld.Java 文件中右击,选 WebServ ...
- 单点登录cas综述之cas4.2.7服务端+cas客户端+示例程序+环境搭建说明-陈杰
1环境搭建以及把示例程序跑起来 1.1 安装jdk1.8 1.2 下载tomcat8+cas4.2.7服务端war+cas客户端war 1.2.1下载经过配置的Tomcat8和本教程配套文件 1.2 ...
最新文章
- 基于注意力机制的lstm实现_一种基于注意力机制的自动标点引擎的测试体验
- 使用PYTHON操作Excel的工具
- Promise详解(一) ----基础用法
- BP神经网络-- C语言实现
- 第八周项目实践6 KMP算法(串的模式匹配)
- 这简历一看就是包装过的
- 前端之JQuery(一)
- sequelize模型关联_关于Sequelize连接查询时inlude中model和association的区别详解
- 《WF编程》系列之3 - 漫游工作流:Visual Studio 2005 扩展
- 如何快速REPAIR TABLE
- rnn神经网络模型_ICLR 2019 | 与胶囊网络异曲同工:Bengio等提出四元数循环神经网络...
- 所大学生都要学计算机基础吗,大学生计算机基础学期总结.docx
- fhq-treap模板
- 2017 4月20日下午
- OwnCloud 搭建
- 通过mac电脑将macos系统的dmg镜像转换为iso文件,供VMware安装mac系统
- 安捷伦温度测试仪 软件,安捷伦34970A数据采集器温度测试仪是德科技34970A+34901A模块...
- USDT暴涨背后:溢价、套利和竞合
- 计算机考研落榜了怎么办,如果,你考研落榜了怎么办?
- 全网疯传,阿里 P8 技术官的架构笔记外泄:微服务分布式架构实践手册