一、包基础说明
javax.xml.rpc.encoding是JAX-RPC 1.1(Java API for XML-based RPC)规范下的标准包,属于老式SOAP RPC风格Web服务的数据序列化/反序列化核心API,随J2EE 1.4引入,现已全面废弃。
归属体系
- 完整父层级:
javax.xml.rpc.* - 定位:SOAP报文自定义类型编码、Java对象 ↔ XML Schema类型映射、序列化器注册
二、包内核心常用接口/类
1. 核心接口
- Serializer
Java对象序列化为XML值,写入SOAP报文。 - Deserializer
解析XML片段,反序列化为Java对象。 - TypeMapping
维护「Java类型 ↔ XML Schema QName」双向映射表,注册自定义序列化器。 - TypeMappingRegistry
全局类型映射注册表,支持多编码风格(SOAP-ENC、literal)。 - SerializableType
标记自定义Java类型支持JAX-RPC编码序列化。
2. 异常类
EncodingException:序列化、反序列化过程抛出通用编码异常。
三、典型使用场景(老旧遗留代码)
用于自定义复杂Java Bean、枚举、集合在SOAP RPC中的XML编组,示例逻辑:
- 实现
Serializer/Deserializer编写自定义编解码逻辑; - 把Java类、XML命名空间+类型名绑定到
TypeMapping; - 注册进
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序列化:JAXB
javax.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体系。
六、迁移建议
- 不要新代码使用
javax.xml.rpc.encoding:规范淘汰、无维护、高安全风险; - 遗留Axis1.x老Web服务:
- 短期:补全JAX-RPC依赖勉强编译运行;
- 中长期:重构迁移至CXF/JAX-WS,或直接改为REST接口;
- 自定义类型编解码逻辑:全部改用JAXB注解(
@XmlRootElement、@XmlElement)自动映射,行数大幅缩减。
七、常见报错对应解决
package javax.xml.rpc.encoding does not exist
→ 未引入jax-rpc-api依赖,或JDK版本过高移除了该API;ClassNotFound TypeMappingRegistry
→ 仅引入API包不够,缺少Axis1等运行时实现jar包;SpringBoot3 / Jakarta EE 9+
包全面迁移到jakarta命名空间,连javax.xml.*旧包都不再兼容,只能重构Web服务。
Package javax.xml.rpc.encoding
Skip navigation linksOverview
Package
Class
Use
Tree
Deprecated
Index
HelpPrev Package
Next PackageFrames
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