spring5.x cxf3.4.x 服务端和客户端 非maven版本

文章目录

          • 一、资料准备
            • 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
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/516879.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2019年中国IaaS公有云市场排名及份额出炉

来源 | 艾瑞咨询随着政府、企业的数字化转型如火如荼地推进&#xff0c;云服务作为国家数字经济产业的“基座”&#xff0c;正日益彰显出其重要的战略意义。尽管基础算力和网络的供给已较为充分&#xff0c;但云服务正在使这些IT基础资源更加普惠化&#xff0c;让数字红利流向…

专有网络(VPC)的六大应用场景

专有网络&#xff08;VPC&#xff09;是完全隔离的网络环境&#xff0c;配置灵活&#xff0c;可满足不同的应用场景。 托管应用程序 您可以将对外提供服务的应用程序托管在VPC中&#xff0c;并且可以通过创建安全组规则、访问控制白名单等方式控制Internet访问。您也可以在应用…

应用配置管理ACM 使用场景快速入门

本文以一个例子介绍了如何使用 ACM 的命名空间&#xff08;Namespace&#xff09;功能&#xff0c;为应用在测试、预生产和生产环境下的同一个配置设置不同的值。 背景信息 在本示例任务中&#xff0c;我们将使用 ACM 的命名空间&#xff08;Namespace&#xff09;功能&#xf…

三本毕业!入职华为!年薪200万!他凭什么?

前几天&#xff0c;华为第二批“天才少年”入选名单更新了&#xff0c;随之登上知乎的是这样一个热搜&#xff1a;“如何看待武昌理工学院2009级本科生张霁入选华为“天才少年“计划并且年薪位于最高档&#xff1f;”从三本到年薪200万的高薪offer&#xff0c;张同学堪称是读书…

利用云数据库 MongoDB ,为你的业务创建单节点实例

本文以一个例子介绍了如何使用 ACM 的命名空间&#xff08;Namespace&#xff09;功能&#xff0c;为应用在测试、预生产和生产环境下的同一个配置设置不同的值。 背景信息 在本示例任务中&#xff0c;我们将使用 ACM 的命名空间&#xff08;Namespace&#xff09;功能&#xf…

互联网、电商及游戏行业实时BI分析方案

场景描述 本文以电商行业为例&#xff0c;将业务数据和日志数据同步到ADB&#xff0c;之后通过Quick BI做实时可视化分析。相对于传统的关系型数据库&#xff0c;阿里云分析型数据库MySQL版只需要几毫秒的时间&#xff0c;即可查询PB级数据并从中找到匹配信息。 解决问题 互联…

数据平台、大数据平台、数据中台……傻傻分不清?这次终于有人讲明白了!

来源 | 智领云科技造概念&#xff0c;在IT行业可不是一件陌生的事儿&#xff0c;中文博大精深&#xff0c;新名词、新概念往往简单准确&#xff0c;既可以被大众接受&#xff0c;又可以被专家把玩&#xff0c;真正做到雅俗共赏、各有趣味。近年来&#xff0c;数据中台之火爆&am…

Github 2023-12-25开源项目周报 Top15

根据Github Trendings的统计&#xff0c;本周(2023-12-25统计)共有15个项目上榜。根据开发语言中项目的数量&#xff0c;汇总情况如下&#xff1a; 开发语言项目数量Python项目7Go项目2非开发语言项目2Dart项目1TypeScript项目1Rust项目1Kotlin项目1 GPT-Engineer: 自然语言编…

如何通过云解析DNS,5步帮你实现邮箱解析

概述 邮箱解析是通过将域名指向邮箱的服务器地址&#xff0c;实现邮箱的收发邮件服务。 前提条件 联系您的邮箱提供商&#xff0c;获取邮箱需要配置的解析记录。 添加解析操作步骤 1 . 联系邮箱提供商&#xff0c;获取邮箱解析需要配置的解析记录。以阿里云邮箱做示意&…

wildfly-10.1.0.Final 禁用 cxf

在WEB-INF目录下&#xff0c;编辑jboss-deployment-structure.xml&#xff0c;添加一下内容 说明&#xff1a;如果没有此文件就新建 vim jboss-deployment-structure.xml<?xml version"1.0" encoding"utf-8"?><jboss-deployment-structure xmln…

25 张图读懂「文件系统」

作者 | 小林coding来源 | 小林coding&#xff08;CodingLin&#xff09;文件系统的基本组成文件系统是操作系统中负责管理持久数据的子系统&#xff0c;说简单点&#xff0c;就是负责把用户的文件存到磁盘硬件中&#xff0c;因为即使计算机断电了&#xff0c;磁盘里的数据并不会…

Vue Bootstrap OSS 实现文件上传

公司实现文件上传技术选型采用后端SpringBoot/Cloud&#xff0c;前端vue Bootstrap &#xff0c;阿里云OSS作为文件存储&#xff0c;文件上传功能单独抽取封装文件上传组件&#xff0c;可供所有的文件的操作。 后端框架版本SpringBoot2.5.6Spring-Cloud2020.0.4mysql8.0.26page…

使用Kubernetes容器服务在云上搭建AI推理环境

场景描述 本方案适用于使用GPU进行AI在线推理的场景。在推理之前&#xff0c;模型已经训练完成。例如,刷脸支付中&#xff0c;我们在刷脸的时候&#xff0c;就是推理的一个过程。再比如图像分类&#xff0c;目标检测&#xff0c;语音识别&#xff0c;语义分析等返回结果的过程…

美国 AI 博士:什么都不会怎么学 Python?

我见过市面上很多的 Python 讲解教程和书籍&#xff0c;他们大都这样讲 Python 的&#xff1a;先从 Python 的发展历史开始&#xff0c;介绍 Python 的基本语法规则&#xff0c;Python 的 list, dict, tuple 等数据结构&#xff0c;然后再介绍字符串处理和正则表达式&#xff0…

Vue Bootstrap OSS 实现文件追加上传、断点续传、极速秒传

公司实现文件上传技术选型采用后端SpringBoot/Cloud&#xff0c;前端vue Bootstrap &#xff0c;阿里云OSS作为文件存储&#xff0c;大文件上传功能单独抽取封装大文件上传组件&#xff0c;可供所有的大文件的操作。 后端框架版本SpringBoot2.5.6Spring-Cloud2020.0.4mysql8.0.…

使用容器服务支持开发者快速搭建小程序后端服务

场景描述 小程序作为一种新的开放能力被广泛应用于各业务场景&#xff0c;开发者可以快速地开发一个小程序&#xff0c;在微信可便捷地获取和传播&#xff0c;同时依赖微信平台原生能力获取出色的使用体验。 阿里云容器服务结合阿里云云原生能力帮助客户快速构建小程序的后端服…

利用对象存储多种方式 保障OSS数据安全

本文介绍如何通过对象存储OSS提供的加密、访问控制、日志与监控及数据保护等多种方式来保障OSS的数据安全性。 加密 OSS提供服务器端加密、客户端加密以及数据传输加密三种数据加密方式。 服务器端加密 OSS通过服务器端加密机制&#xff0c;提供静态数据保护。适合于对于文件…

征战云时代,为什么安全是关键命题?

从左到右&#xff1a;李亮&#xff08;主持人&#xff09;、张美波、蒋涛、韦青扫描上方二维码直达精彩回顾整理 | 伍杏玲出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;全球数字化转型浪潮不断推进下&#xff0c;企业上云步伐加快&#xff0c;在这个过程中不少企…

Vue Bootstrap 静态服务器 实现文件追加上传、断点续传、极速秒传

公司实现文件上传技术选型采用后端SpringBoot/Cloud&#xff0c;前端vue Bootstrap &#xff0c;阿里云OSS作为文件存储&#xff0c;大文件上传功能单独抽取封装大文件上传组件&#xff0c;可供所有的大文件的操作。 后端框架版本SpringBoot2.5.6Spring-Cloud2020.0.4mysql8.0.…

如何调用API管理您的云上资源

欢迎您选择云服务器&#xff08;Elastic Compute Service&#xff0c;ECS&#xff09;&#xff0c;如果您熟悉网络服务协议和一种以上编程语言&#xff0c;推荐您调用API管理您的云上资源和开发自己的应用程序。 使用限制 根据您使用云服务器ECS的情况而变化&#xff0c;您能…