news 2026/6/13 6:47:56

`javax.xml.rpc.encoding` 是 **JAX-RPC 1.1(Java API for XML-based RPC)** 规范下的标准包,属于老式SOAP RPC风格Web服务的数

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
`javax.xml.rpc.encoding` 是 **JAX-RPC 1.1(Java API for XML-based RPC)** 规范下的标准包,属于老式SOAP RPC风格Web服务的数

一、包基础说明

javax.xml.rpc.encodingJAX-RPC 1.1(Java API for XML-based RPC)规范下的标准包,属于老式SOAP RPC风格Web服务的数据序列化/反序列化核心API,随J2EE 1.4引入,现已全面废弃

归属体系

  • 完整父层级:javax.xml.rpc.*
  • 定位:SOAP报文自定义类型编码、Java对象 ↔ XML Schema类型映射、序列化器注册

二、包内核心常用接口/类

1. 核心接口

  1. Serializer
    Java对象序列化为XML值,写入SOAP报文。
  2. Deserializer
    解析XML片段,反序列化为Java对象。
  3. TypeMapping
    维护「Java类型 ↔ XML Schema QName」双向映射表,注册自定义序列化器。
  4. TypeMappingRegistry
    全局类型映射注册表,支持多编码风格(SOAP-ENC、literal)。
  5. SerializableType
    标记自定义Java类型支持JAX-RPC编码序列化。

2. 异常类

  • EncodingException:序列化、反序列化过程抛出通用编码异常。

三、典型使用场景(老旧遗留代码)

用于自定义复杂Java Bean、枚举、集合在SOAP RPC中的XML编组,示例逻辑:

  1. 实现Serializer/Deserializer编写自定义编解码逻辑;
  2. 把Java类、XML命名空间+类型名绑定到TypeMapping
  3. 注册进TypeMappingRegistry,JAX-RPC运行时自动调用。

四、关键问题:为什么找不到这个包?

1. API生命周期

  • JAX-RPC 1.1:J2EE 1.4、Java EE 5时代标准;
  • Java EE 6+ 正式废弃JAX-RPC,被JAX-WS 2.x(javax.xml.ws完整替代;
  • JDK 1.6及以上JDK内置不再默认携带javax.xml.rpc系列包。

2. Maven依赖(仅兼容老项目)

如需编译遗留老代码,手动引入JAX-RPC API:

<!-- JAX-RPC 1.1 API --><dependency><groupId>javax.xml.rpc</groupId><artifactId>javax.xml.rpc-api</artifactId><version>1.1</version></dependency>

运行期还需要老旧JAX-RPC实现(Axis 1.x、JBoss old runtime等),现代容器(Tomcat9+/WildFly、SpringBoot)不再支持。

五、现代替代方案(必看)

方案1:JAX-WS(官方标准替代)

包路径切换为:

  • 服务端点:javax.xml.ws.*
  • 对象XML序列化:JAXBjavax.xml.bind.*
    JAXB内置自动Bean序列化,无需手动编写Serializer/Deserializer,对应SOAP 1.1/1.2 document/literal规范,工业主流。

方案2:Spring WebService / Apache CXF / Apache Axis2

  • Axis2:抛弃了Axis1.x的JAX-RPC,原生JAX-WS;
  • CXF、Spring WS:基于JAX-WS + JAXB,零手动编码自定义序列化。

方案3:RESTful替代

新项目直接改用HTTP+JSON(Jackson/FastJSON),彻底脱离SOAP、XML RPC体系。

六、迁移建议

  1. 不要新代码使用javax.xml.rpc.encoding:规范淘汰、无维护、高安全风险;
  2. 遗留Axis1.x老Web服务:
    • 短期:补全JAX-RPC依赖勉强编译运行;
    • 中长期:重构迁移至CXF/JAX-WS,或直接改为REST接口;
  3. 自定义类型编解码逻辑:全部改用JAXB注解(@XmlRootElement@XmlElement)自动映射,行数大幅缩减。

七、常见报错对应解决

  1. package javax.xml.rpc.encoding does not exist
    → 未引入jax-rpc-api依赖,或JDK版本过高移除了该API;

  2. ClassNotFound TypeMappingRegistry
    → 仅引入API包不够,缺少Axis1等运行时实现jar包;

  3. SpringBoot3 / Jakarta EE 9+
    包全面迁移到jakarta命名空间,连javax.xml.*旧包都不再兼容,只能重构Web服务。
    Package javax.xml.rpc.encoding
    Skip navigation links

    Overview
    Package
    Class
    Use
    Tree
    Deprecated
    Index
    Help

    Prev Package
    Next Package

    Frames
    No Frames

Package javax.xml.rpc.encoding
This package defines APIs for the extensible type mapping framework.

See: Description

Interface Summary Interface Description DeserializationContext The javax.xml.rpc.encoding.DeserializationContext interface is implemented by the JAX-RPC runtime system in an XML processing mechanism specific manner. Deserializer The javax.xml.rpc.encoding.Deserializer interface defines a base interface for deserializers. DeserializerFactory The javax.xml.rpc.encoding.DeserializerFactory is a factory of deserializers. SerializationContext The javax.xml.rpc.encoding.SerializationContext interface is implemented by the JAX-RPC runtime system in an XML processing mechanism specific manner. Serializer The javax.xml.rpc.encoding.Serializer interface defines the base interface for serializers. SerializerFactory The javax.xml.rpc.encoding.SerializerFactory is a factory of the serializers. TypeMapping The javax.xml.rpc.encoding.TypeMapping is the base interface for the representation of a type mapping. TypeMappingRegistry The interface javax.xml.rpc.encoding.TypeMappingRegistry defines a registry of TypeMapping instances for various encoding styles. Class Summary Class Description XMLType Constants for common XML Schema and SOAP 1.1 types.

Package javax.xml.rpc.encoding Description
This package defines APIs for the extensible type mapping framework.
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:47:08

第十八:Pytest中的yield操作退出清理数据

一.项目目录二.yield关键字 1.它不是单独存在&#xff0c;要写在fixtrue标记的固件中。2.在声明的固件fixture中加入yield关键字&#xff0c;在它下面写测试用例&#xff0c;其他有关于固件的使用没有任何差别。3.fixture里面的teardown用yield来唤醒teardown的执行。4.如果测试…

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

Python量化分析的终极武器:MOOTDX通达信数据接口完全指南

Python量化分析的终极武器&#xff1a;MOOTDX通达信数据接口完全指南 【免费下载链接】mootdx 通达信数据读取的一个简便使用封装 项目地址: https://gitcode.com/GitHub_Trending/mo/mootdx 在量化投资领域&#xff0c;数据获取往往是开发者面临的第一道难关。MOOTDX作…

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

Uboot机制详细理解分析(5):Uboot重定位相关内容

Uboot机制详细理解分析(5):Uboot重定位相关内容 一、为什么要重定位? 1.1 重定义的位置 1.2 编译支持 二、重定位的意义 三、介绍一些重定位相关的表项结构(节): 四、uboot的重定位过程: U-BOOT的初始化阶段即将自身复制到另一个地址的操作,这个操作被称为重定位, r…

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

LM3S102芯片上uCOS-II在IAR环境下的完整移植工程包

本文还有配套的精品资源&#xff0c;点击获取 简介&#xff1a;面向Cortex-M3内核的LM3S系列微控制器&#xff08;特别是LM3S102型号&#xff09;&#xff0c;提供一套开箱即用的uCOS-II实时操作系统移植方案。资料包含两份技术文档&#xff1a;一份详解LM3S102平台上的启动…

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

ColabFold:如何在10分钟内免费预测蛋白质三维结构?

ColabFold&#xff1a;如何在10分钟内免费预测蛋白质三维结构&#xff1f; 【免费下载链接】ColabFold Making Protein folding accessible to all! 项目地址: https://gitcode.com/gh_mirrors/co/ColabFold 你知道吗&#xff1f;曾经需要数万美元设备和数月时间的蛋白质…

作者头像 李华