升级jdk17过程中,原来的jdk8下的webservice客户端怎样处理

背景:之前jdk8环境下,使用的cxf框架,而且是动态加载解析作为客户端。大家一直相处的很愉快。但是最近升级jdk17,发现cxf不好用了。网上百度,大部分都是说升级cxf版本,并且添加jaxb的相关依赖就可以了。但是。。。我不还是解决不了啊。

本着快的解决不了,就仔细研究下看看想法,了解了下cxf动态解析的工作方式,发现了不对劲。

CXF动态调用WebService,一般包含以下步骤:

  1. 下载WSDL文件
  2. 将WSDL文件解析成Java代码模型
  3. 生成Java源码
  4. 编译源码->Class文件
  5. 创建ClassLoader
  6. 加载Class
  7. 创建数据绑定&类型初始化
  8. 使用这些Class完成WebService交互
  9. 废弃这些Class,等待JVM空闲时GC回收

原来如此,需要生成源码,需要加载class,问了提供WS的服务端,反馈说是jdk8提供的wsdl。莫非问题就在这个地方。

     如果是这样解决的思路就有两个了。一个是从源头解决问题,让服务端升级jdk,估计不现实。哈哈,搞不定。另一个思路就是不要使用动态解析了,静态的安排上。cxf,axis2,xfire等几个流行框架都可以通过wsdl来生成相应的java桩代码,然后大家又可以愉快的玩耍了。

      按照思路2来折腾,搞定收工,相关代码后续补充。

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

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

相关文章

在线接口测试工具fastmock使用

1、fastmock线上数据模拟器 在平时的项目测试中,尤其是前后端分离的时候,前端人员需要测试调用后端的接口,这个时候会出现测试不方便的情况。此时我们可以使用fastmock平台在线上模拟出一个可以调用的接口,方便前端人员进行数据测…

C/C++---------------LeetCode第2540. 最小公共值

最小公共值 题目及要求哈希算法双指针 题目及要求 给你两个整数数组 nums1 和 nums2 ,它们已经按非降序排序,请你返回两个数组的 最小公共整数 。如果两个数组 nums1 和 nums2 没有公共整数,请你返回 -1 。 如果一个整数在两个数组中都 至少…

categraf托管与自升级

categraf支持多种方式进行部署、托管,社区里部署和管理categraf也是五花八门,大家自己使用方便即可。 之前我们觉得大家通过ansible之类的工具批量下发/更新就能很简单地完成任务,最近很多用户咨询我们关于categraf有没有更方便的升级方式&am…

flink和机器学习模型的常用组合方式

背景 flink是一个低延迟高吞吐的系统,每秒处理的数据量高达数百万,而机器模型一般比较笨重,虽然功能强大,但是qps一般都比较低,日常工作中,我们一般是如何把flink和机器学习模型组合起来一起使用呢? fli…

数据结构与算法【B树】的Java实现+图解

目录 B树 特性 实现 节点准备 大体框架 实现分裂 实现新增 实现删除 完整代码 B树 也是一种自平衡的树形数据结构,主要用于管理磁盘上的数据管理(减少磁盘IO次数)。而之前说的AVL树与红黑树适合用于内存数据管理。存储一个100w的数…

python每日一题——2字母异位词分组

题目 给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 示例 1: 输入: strs [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”] 输出: [[“bat”],[“nat”…

新的centos7.9安装jenkins—(一)

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 因为是用java8,所以还是要最后java8版本的jenkins,版本号是2.346.3,后…

【Python】批量将PDG合成PDF,以及根据SS号重命名秒传的文件

目录 说明批量zip2pdf批量zip2pdf下载SS号重命名源代码SS号重命名源代码下载附录,水文年鉴 说明 1、zip2pdf是一个开源软件,支持自动化解压压缩包成PDG,PDG合成PDF,笔者在其基础上做了部分修改,支持批量转换。 2、秒…

【追求卓越11】算法--二叉树

引导 接下来的几节我们开始介绍非线性的数据结构--树。树的内容比较多也比较复杂。本节,我们只需要了解关于树的一些基本概念。以及再进一步了解树的相关内容--搜索二叉树。该类型二叉树在工作中,是我们常接触的。该节我们介绍关于搜索二叉树的相关操作&…

【华为数通HCIP | 网络工程师】821-IGP高频题、易错题之OSPF(2)

个人名片: 🐼作者简介:一名大三在校生,喜欢AI编程🎋 🐻‍❄️个人主页🥇:落798. 🐼个人WeChat:hmmwx53 🕊️系列专栏:🖼️…

计算机中msvcr120.dll丢失怎样修复?亲测有效的5种方法分享

在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是“msvcr120.dll丢失”。这个错误通常会导致某些应用程序无法正常运行。那么,当我们遇到这个问题时,应该如何修复呢?本文将详细介绍msvcr120.dll丢失的解决…

人工智能今天能为你做什么?生成式人工智能如何改变技术文档领域

▲ 搜索“大龙谈智能内容”关注GongZongHao▲ 作者 | Fabrice Lacroix 大型语言模型(LLM)和生成式人工智能(GenAI),尤其是ChatGPT,这些是引领科技革新的新兴技术。它们不仅在科技界引起了轩然大波&#x…

Web 自动化神器 TestCafe(三)—用例编写篇

一、用例编写基本规范 1、 fixture 测试夹具 使用 TestCafe 编写测试用例,必须要先使用 fixture 声明一个测试夹具,然后在这个测试夹具下编写测试用例,在一个编写测试用例的 js 或 ts 文件中,可以声明多个测试夹具 fixture(测试…

【C++11】default、delete与Noncopyable

C11 oop中的default、delete与Noncopyable default 在C11标准中,可以使用default关键字来显式地声明默认的构造函数和析构函数。 使用default关键字可以用来显式声明默认的构造函数和析构函数。这样做可以让编译器自动生成默认实现 –>->->关于构造函数…

计数排序+桶排序+基数排序 详讲(思路+图解+代码详解)

文章目录 计数排序桶排序基数排序一、计数排序概念:写法一:写法二: 二、桶排序概念代码 三、基数排序概念1.LSD排序法(最低位优先法)2.MSD排序法(最高位优先法) 基数排序VS基数排序VS桶排序 计数…

内容营销频频出圈,这些品牌号做对了什么?

小红书拥有大量的年轻用户,通过运营品牌号既能降低投放成本,又能更好地连接消费者和品牌,在平台完成一站式闭环营销。 今天就借助几个成功案例,来分析下他们是如何搭建官方账号,通过内容运营吸引更多用户,实…

一款专为POS机设计的芯片解决方案

一、基本概述 HCM8003设计用于磁条读卡器系统。它会从F/2F恢复时钟和数据信号磁产生的数据流头HCM8003将用于数据速率从200到15000比特每秒。 二、典型电路 内部数据的采集和跟踪这个范围是自动的。可以应用于POS机终端设备、磁卡门禁系统、身份识别等场合。 三、引脚定义 四…

redis的主从复制,哨兵模式

1.主从复制 主从复制:主从复制是redis实现高可用的基础,哨兵模式和集群都是在主从复制的基础之上实现高可用 主从复制实现数据的多机备份,以及读写分离(主服务器负责写,从服务器只能读) 缺陷&#xff1a…

PyTorch基本操作和工作流程

1. PyTorch基础 张量(Tensors): 学习 PyTorch 中表示数据的基本单元。了解如何创建、操作和使用张量。 自动微分(Autograd): 了解 PyTorch 的自动微分机制,这是训练神经网络的核心。 模型定义…

Android registerForActivityResults使用详解以及实现原理

registerForActivityResult 使用用途是监听Activity结果。 以下是使用样例 //需要传递Request用于解析Intent和解析上个Activity返回的结果 val launchdata = registerForActivityResult<PickVisualMediaRequest, Uri?>(ActivityResultContracts.PickVisualMedia()) {…