news 2026/6/13 6:47:53

`javax.xml.rpc.holders` 是 **JAX-RPC 1.1(Java XML RPC,旧版SOAP WebService规范)** 下的标准子包

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
`javax.xml.rpc.holders` 是 **JAX-RPC 1.1(Java XML RPC,旧版SOAP WebService规范)** 下的标准子包

一、包整体说明

javax.xml.rpc.holdersJAX-RPC 1.1(Java XML RPC,旧版SOAP WebService规范)下的标准子包,专门用于传引用输出参数(out/inout 参数),对应WSDL里的outinout类型参数场景。

注意:JAX-RPC 早已被 JAX-WS (javax.xml.ws) 全面淘汰,该包属于老旧Java EE遗留API,Java 8+高版本JDK默认不再内置。

二、核心作用

WebService接口方法默认只有返回值,无法同时返回多个输出参数;
WSDL支持out(仅输出)、inout(入参+出参)参数,Java层无法直接传基本类型/包装类修改实参,于是Holder持有者类做包装:

  1. 把要输出的值存入holder.value
  2. 服务端赋值后,客户端可从同一个Holder对象取出返回值;
  3. 兼容多返回参数的SOAP接口。

三、包内常用内置Holder类

都实现javax.xml.rpc.holders.Holder标记接口,全部是线程不安全的简单包装类:

类名包装类型
BooleanHolderBoolean
ByteHolderByte
ShortHolderShort
IntHolderInteger
LongHolderLong
FloatHolderFloat
DoubleHolderDouble
StringHolderString
BigIntegerHolderBigInteger
BigDecimalHolderBigDecimal
ObjectHolderObject(通用)

统一结构示例(IntHolder):

publicclassIntHolderimplementsHolder{publicIntegervalue;// 公共字段直接读写publicIntHolder(){}publicIntHolder(Integerinitial){this.value=initial;}}

四、典型代码示例(inout参数)

1. 接口定义(JAX-RPC)

importjavax.xml.rpc.holders.IntHolder;// in:a,b;inout:sum;out:productpublicinterfaceCalcService{voidcalc(inta,intb,IntHoldersum,IntHolderproduct);}

2. 客户端调用

CalcServiceservice=getStub();IntHoldersumHolder=newIntHolder();IntHoldermulHolder=newIntHolder();service.calc(3,5,sumHolder,mulHolder);// 从Holder取出输出结果System.out.println("和:"+sumHolder.value);System.out.println("积:"+mulHolder.value);

五、Maven依赖(JDK默认不带,必须手动引入)

JAX-RPC 规范包+实现包:

<!-- JAX-RPC API 核心 --><dependency><groupId>javax.xml.rpc</groupId><artifactId>javax.xml.rpc-api</artifactId><version>1.1</version></dependency><!-- 常用实现:Apache Axis1(经典JAX-RPC实现) --><dependency><groupId>org.apache.axis</groupId><artifactId>axis</artifactId><version>1.4</version></dependency>

六、淘汰原因 & 现代替代方案

1. 被淘汰原因

  1. JAX-RPC 老旧笨重、只支持SOAP1.1,不支持注解;
  2. Holder手动包装样板代码极多,开发繁琐;
  3. Java EE 6起正式主推JAX-WS 2.x (javax.xml.ws)

2. JAX-WS 替代方案

JAX-WS 不再需要Holder类:

  • 方案1:自定义POJO实体类封装多返回字段,作为方法返回值;
  • 方案2:使用javax.xml.ws.Holder<T>泛型持有者(通用一个类,不再分每种基础类型单独类)。

JAX-WS 泛型Holder示例:

importjavax.xml.ws.Holder;publicinterfaceCalcWs{voidcalc(inta,intb,Holder<Integer>sum,Holder<Integer>product);}

七、常见报错解决方案

报错:package javax.xml.rpc.holders does not exist

  1. JDK9+模块化JDK移除了Java EE包,无法直接引用;
  2. 解决方案:
    • Maven添加上面javax.xml.rpc-api依赖;
    • 老旧Axis1项目建议升级到JAX-WS(JDK内置,无需额外依赖);
    • 不要在SpringBoot3、Jakarta EE9+新项目继续使用该API。

八、总结

  1. javax.xml.rpc.holders= JAX-RPC 专属输出参数包装工具包,仅Axis1等老SOAP框架使用;

  2. 每种基础类型对应独立Holder类,通过value公共字段存取返回值;

  3. 新项目禁止使用,全部迁移至JAX-WS泛型javax.xml.ws.Holder或自定义返回实体;

  4. JDK高版本无内置,必须额外引入RPC API依赖。
    Package javax.xml.rpc.holders
    Skip navigation links

    Overview
    Package
    Class
    Use
    Tree
    Deprecated
    Index
    Help

    Prev Package
    Next Package

    Frames
    No Frames

Package javax.xml.rpc.holders
This package contains the standard Java Holder classes.

See: Description

Interface Summary Interface Description Holder The java.xml.rpc.holders.Holder interface represents the base interface for both standard and generated Holder classes. Class Summary Class Description BigDecimalHolder BigIntegerHolder BooleanHolder BooleanWrapperHolder ByteArrayHolder ByteHolder ByteWrapperHolder CalendarHolder DoubleHolder DoubleWrapperHolder FloatHolder FloatWrapperHolder IntegerWrapperHolder IntHolder LongHolder LongWrapperHolder ObjectHolder QNameHolder ShortHolder ShortWrapperHolder StringHolder

Package javax.xml.rpc.holders Description
This package contains the standard Java Holder classes.
Skip navigation links

Overview Package Class Use Tree Deprecated Index Help Prev Package Next Package Frames No Frames

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/13 6:41:51

如何3步实现LaTeX公式转图片:免费在线工具终极指南

如何3步实现LaTeX公式转图片&#xff1a;免费在线工具终极指南 【免费下载链接】latex2image-web LaTeX to image converter with web UI using Node.js / Docker 项目地址: https://gitcode.com/gh_mirrors/la/latex2image-web LaTeX公式转图片工具让复杂的数学公式可视…

作者头像 李华
网站建设 2026/6/13 6:39:55

AI-Only社交网络:语义共振与可执行知识单元的工程实践

1. 项目概述&#xff1a;这不是另一个“AI社交App”&#xff0c;而是一次对社交底层逻辑的重写Moltbook 这个名字乍听有点陌生&#xff0c;但如果你最近在技术圈、产品社区或早期AI爱好者群里刷到过它&#xff0c;大概率会看到类似这样的描述&#xff1a;“一个不用真人发帖、不…

作者头像 李华
网站建设 2026/6/13 6:39:53

MCP协议:让大模型从‘会说话’到‘能动手’的工程化标准

1. 项目概述&#xff1a;当大模型“会动手”比“会说话”更重要你有没有遇到过这样的场景&#xff1a;花大价钱部署了GPT-4或Claude 3级别的大模型&#xff0c;结果在实际业务中——比如自动处理客户工单、同步CRM数据、调取内部知识库、甚至只是查一下会议室今天是否空闲——它…

作者头像 李华
网站建设 2026/6/13 6:39:13

vLLM依赖管理终极指南:如何为你的LLM推理选择正确配置

vLLM依赖管理终极指南&#xff1a;如何为你的LLM推理选择正确配置 【免费下载链接】vllm A high-throughput and memory-efficient inference and serving engine for LLMs 项目地址: https://gitcode.com/GitHub_Trending/vl/vllm 你是否在为部署大语言模型&#xff08…

作者头像 李华
网站建设 2026/6/13 6:39:12

深入解析JPEXS Free Flash Decompiler:Flash逆向工程的终极利器

深入解析JPEXS Free Flash Decompiler&#xff1a;Flash逆向工程的终极利器 【免费下载链接】jpexs-decompiler JPEXS Free Flash Decompiler 项目地址: https://gitcode.com/gh_mirrors/jp/jpexs-decompiler 在Flash技术逐渐退出历史舞台的今天&#xff0c;如何有效处理…

作者头像 李华
网站建设 2026/6/13 6:34:51

单目相机标定C++代码记录

一、基于棋盘格#include <iostream> #include <fstream> #include <string> #include <opencv2/opencv.hpp> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc.hpp> #include &…

作者头像 李华