文章目录

  • 一、资料准备
    • 1. 官网链接
    • 2. 解压
    • 3. 依赖梳理
  • 二、spring集成cxf
    • 2.1.创建spring项目
    • 2.2. 创建接口
    • 2.3. impl
    • 2.4. spring-cxf.xml
    • 2.5. 客户端
    • 2.6. 开源项目
一、资料准备
1. 官网链接

http://cxf.apache.org/download.html

下载apache-cxf-3.4.5.zip

2. 解压

3. 依赖梳理
cd apache-cxf-3.4.5/lib

从bin目录下面,复制以下jar到一个单独的文件夹中

commons-logging-1.2.jar
cxf-core-3.4.5.jar
cxf-rt-bindings-soap-3.4.5.jar
cxf-rt-databinding-jaxb-3.4.5.jar
cxf-rt-frontend-jaxws-3.4.5.jar
cxf-rt-frontend-simple-3.4.5.jar
cxf-rt-transports-http-3.4.5.jar
cxf-rt-wsdl-3.4.5.jar
spring-aop-5.2.17.RELEASE.jar
spring-beans-5.2.17.RELEASE.jar
spring-context-5.2.17.RELEASE.jar
spring-core-5.2.17.RELEASE.jar
spring-expression-5.2.17.RELEASE.jar
spring-web-5.2.17.RELEASE.jar
stax2-api-4.2.1.jar
woodstox-core-6.2.6.jar
wsdl4j-1.6.3.jar
xmlschema-core-2.2.5.jar

二、spring集成cxf
2.1.创建spring项目


创建java和resources包路径

2.2. 创建接口

package com.gblfy.service;import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;@WebService(targetNamespace = "http://impl.service.gblfy.com/")
public interface IUserService {@WebMethodpublic String getCxf(@WebParam(name = "reqXml") String reqXml);
}
2.3. impl
package com.gblfy.service.impl;import com.gblfy.service.IUserService;import javax.jws.WebService;@WebService
public class UserServiceImpl implements IUserService {@Overridepublic String getCxf(String reqXml) {System.out.println("接收到的报文:" + reqXml);return "OK";}
}
2.4. spring-cxf.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context"xmlns:jaxws="http://cxf.apache.org/jaxws" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"><!-- cxf3以后,只需要引入这个配置文件即可 --><import resource="classpath:META-INF/cxf/cxf.xml" /><jaxws:endpoint id="userService"implementor="com.gblfy.service.impl.UserServiceImpl"address="/userWS"></jaxws:endpoint>
</beans>
2.5. 客户端
package com.gblfy.service.client;import org.apache.cxf.endpoint.Client;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;
import org.springframework.stereotype.Component;import javax.xml.namespace.QName;/*** cxf客户端调用(企业内部已封装)** @author gblfy* @date 2021-09-17*/
@Component
public class CxfClient {public static void main(String[] args) throws Exception {//-------------------------------- cxf webservice 服务端信息----------------------------------------// cxf webservice 服务地址//格式:http://IP地址/项目名称/拦截url/请求地址?wsdlString cxfUrl = "http://127.0.0.1:8080/spring_cxf_war/cxf/userWS?wsdl";// cxf webservice 命名空间//获取方式:从wsdl中复制targetNamespace标签中的内容String targetNamespace = "http://impl.service.gblfy.com/";// cxf webservice 方法名//获取方式1:由服务商提供//获取方式2:从wsdl中复制operation标签中name对应的指定的内容String method = "getCxf";//-------------------------------- cxf webservice 客户端请求报文----------------------------------------// cxf 模拟请求报文(根据实际需求而定)String reqXml = "cxf请求报文";//--------------------------------调用服务客户端任选一种即可----------------------------------------//调用服务 客户端1CxfClient.sendCxfReqClientHandle(cxfUrl, method, reqXml);//调用服务 客户端2CxfClient.sendCxfReqClientHandle2(cxfUrl, targetNamespace, method, reqXml);}/*** 单/多参调用工具类(Object类型)** @param cxfUrl url地址* @param method 调用方法名* @param reqXml 发送报文体* @return res 返回结果* @throws Exception 若有异常,在控制台输出异常,并将异常抛出*/public static String sendCxfReqClientHandle(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;}/*** 单/多参调用工具类(Object类型)** @param cxfUrl          url地址* @param targetNamespace 命名空间* @param method          调用方法名* @param reqXml          发送报文体* @return res 返回结果* @throws Exception 若有异常,在控制台输出异常,并将异常抛出*/public static String sendCxfReqClientHandle2(String cxfUrl, String targetNamespace, 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....);QName qName = new QName(targetNamespace, method);objects = client.invoke(qName, reqXml);res = objects[0].toString();System.out.println("返回数据:" + res);} catch (Exception e) {e.printStackTrace();throw e;}return res;}
}
2.6. 开源项目

https://gitee.com/gb_90/unified-access-center

spring5.x cxf3.4.x 服务端和客户端 非maven版本相关推荐

  1. ROS 创建msg和srv 编写发布者和订阅者节点 编写服务端和客户端节点(python版本)

    ROS 创建msg和srv 编写发布者和订阅者节点 编写服务端和客户端节点-python版本 rosed msg和srv 创建msg 使用rosmsg 创建srv 使用rossrv 重新make一下软 ...

  2. springboot实现SSE服务端主动向客户端推送数据,java服务端向客户端推送数据,kotlin模拟客户端向服务端推送数据

    SSE服务端推送 服务器向浏览器推送信息,除了 WebSocket,还有一种方法:Server-Sent Events(以下简称 SSE).本文介绍它的用法. 在很多业务场景中,会涉及到服务端向客户端 ...

  3. Java Websocket实例【服务端与客户端实现全双工通讯】

    Java Websocket实例[服务端与客户端实现全双工通讯] 现很多网站为了实现即时通讯,所用的技术都是轮询(polling).轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发 出HTTP ...

  4. java sslsocket程序_JAVA与C++进行sslsocket通信,JAVA做服务端或客户端

    前几天有位网友问我关于Unity3D里面使用Protobuf的方法,一时有事拖到现在才写这篇文章,不好意思哈. 本文测试环境: 系统:WINDOWS 7(第3.6步).OS X 10.9(第4步) 软 ...

  5. [企业化NET]Window Server 2008 R2[3]-SVN 服务端 和 客户端 基本使用

    1.  服务器基本安装即问题解决记录      √ 2.  SVN环境搭建和客户端使用 2.1  服务端 和 客户端 安装    √ 2.2  项目建立与基本使用     √ 2.3  基本冲突解决, ...

  6. 【★更新★】高性能 Windows Socket 服务端与客户端组件(HP-Socket v2.0.1 源代码及测试用例下载)...

    HP-Socket 以前为某大型通信项目开发了一套通用 Windows Socket TCP 底层通信组件,组件代号为 HP-Socket.现在把 HP-Socket 的所有代码向大众公开,希望能对大 ...

  7. 使用C++的Socket实现从客户端到服务端,服务端到客户端传输文件

    使用: (1)首先运行服务端,待服务端运行起来: (2)最后运行客户端,输入要传输文件到哪个目标机器的IP地址: (3)输入传输文件的路径及文件(完成的路径),其中包含文件的类型,也就是后缀需要包含( ...

  8. C#创建TCP/IP服务端和客户端,含测试demo及源码

    网上的TCP/IP创建服务端和客户端的方法鱼龙混杂,自己把在使用项目中的TCP服务端和客户端的代码抽了出来,做了demo,以供大家使用参考. 为了方便调用,我把一些基础方法都整合封装到了Reader. ...

  9. 使用HTML5的WebSocket实现服务端和客户端数据通信(有演示和源码)

    WebSocket协议是基于TCP的一种新的网络协议.WebSocket是HTML5开始提供的一种浏览器与服务器间进行全双工通讯的网络技术.依靠这种技术可以实现客户端和服务器端的长连接,双向实时通信. ...

最新文章

  1. Boost boost_1_63_0安装 gcc4.8 gcc5.4
  2. 2018北京大学计算机考研分数线,2018年北京大学考研复试分数线已公布
  3. WORD如何取消文字下方花花绿绿的波浪线?
  4. python float 精度_改变Float的精度并在Python中存储
  5. 浏览器中加载CNN进行手写数字识别,并部署到Gitee Page
  6. StringUtil.isNotEmpty
  7. Oracle imp 导入dmp文件到数据库
  8. Python爬虫教程:包图网免费付费素材爬取【附源码】
  9. Cortex-A7中断系统
  10. 耳机基本知识及评判指标
  11. 锐捷服务器虚拟化技术_打造数字新基建 | 锐捷5G云小站助力行业数字化转型
  12. 盐城工业职业技术学院计算机没用过,2020年江苏软考盐城工业职业技术学院考点参考人数266人...
  13. 软件推荐 scrcpy
  14. 垃圾收集 (Garbage Collection,GC)
  15. Vue项目webpack打包部署到服务器
  16. Runtime.getRuntime().availableProcessors()
  17. .net笔试题(二)
  18. RSA解密-提供enc和pem文件类
  19. 奇瑞a3中控按键图解_奇瑞A3使用说明
  20. AS BottomNavigation does not have a NavController set

热门文章

  1. 最佳约会策略及其证明
  2. 统计vs机器学习,数据领域的“少林和武当”!
  3. 【转载保存】hadoop三个配置文件的参数含义说明core-site.xml、hdfs-site.xml、...
  4. hdu3527spy(STL,map)
  5. 并发编程实践之公平有界阻塞队列实现
  6. 汽车产业云上多地域高可用消息系统构建
  7. DataWorks百问百答01:数据同步该用什么资源组
  8. 用AI说再见!“辣眼睛”的买家秀
  9. 双11期间,请关爱程序员!
  10. 有赞九周年,打造技术生态,与开发者一起投身新零售浪潮