javax.xml.rpc.handler.soap是JAX-RPC 1.1Java XML RPC旧版SOAP WebService规范下的标准子包专门用于 SOAP 协议层面的处理器Handler拦截、报文处理。归属完整规范JSR 101、JSR 109现已彻底废弃。1. 核心作用对 SOAP 请求/响应报文做拦截处理获取、修改 SOAP Envelope、Header、Body读取/新增 SOAP Header 安全令牌、鉴权信息日志打印、报文加密解密、签名校验、异常拦截操作 SOAP 故障SOAP Fault二、包内关键类/接口1.SOAPHandler接口publicinterfaceSOAPHandlerextendsHandler继承顶层javax.xml.rpc.handler.Handler专为 SOAP 协议定制处理上下文绑定 SOAP 消息上下文。2.SOAPMessageContextSOAP 专属上下文对象getSOAPMessage()拿到完整javax.xml.soap.SOAPMessage直接操作XML报文节点区分入站请求、出站响应获取调用端点、操作名、HTTP头信息3. 配套上下文体系父包javax.xml.rpc.handler通用接口HandlerChain处理器链多个Handler串行执行HandlerInfo配置Handler执行顺序、参数三、完整执行流程客户端/服务端发起SOAP调用触发配置好的HandlerChain依次执行自定义SOAPHandler.handleRequest()返回true继续向后传递调用返回false中断调用直接构造返回SOAP响应服务端业务执行完毕后反向执行handleResponse()/handleFault()四、现状已淘汰替代方案1. 淘汰原因JAX-RPCRPC风格WebService老旧、笨重、兼容性差Java EE 后续改用JAX-WSJSR 224包路径整体重构。2. JAX-WS 对应新包推荐使用旧JAX-RPC 包路径JAX-WS 替代包javax.xml.rpc.handler.soapjavax.xml.ws.handler.soap核心对应类迁移旧javax.xml.rpc.handler.soap.SOAPHandler新javax.xml.ws.handler.soap.SOAPHandlerSOAPMessageContext上下文javax.xml.ws.handler.soap.SOAPMessageContext3. 典型新旧代码对比旧 JAX-RPC不再使用importjavax.xml.rpc.handler.soap.SOAPHandler;importjavax.xml.rpc.handler.soap.SOAPMessageContext;publicclassOldSoapHandlerimplementsSOAPHandler{publicbooleanhandleRequest(MessageContextctx){SOAPMessageContextsoapCtx(SOAPMessageContext)ctx;// 操作SOAP报文returntrue;}// 省略handleResponse、handleFault、getHeaders}新 JAX-WS 标准写法JDK自带importjavax.xml.ws.handler.soap.SOAPHandler;importjavax.xml.ws.handler.soap.SOAPMessageContext;importjavax.xml.soap.SOAPMessage;importjava.util.Set;publicclassNewSoapHandlerimplementsSOAPHandlerSOAPMessageContext{OverridepublicbooleanhandleMessage(SOAPMessageContextcontext){BooleanisOutbound(Boolean)context.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);SOAPMessagesoapMsgcontext.getMessage();// 自定义报文处理、加签、加Headerreturntrue;}OverridepublicSetQNamegetHeaders(){returnnull;}OverridepublicbooleanhandleFault(SOAPMessageContextcontext){returntrue;}Overridepublicvoidclose(MessageContextcontext){}}五、Maven 依赖仅老旧遗留项目现代JDK8内置JAX-WS无需额外依赖只有远古J2EE项目才需要引入JAX-RPC!-- 已废弃新项目禁止引入 --dependencygroupIdjavax.xml.rpc/groupIdartifactIdjavax.xml.rpc-api/artifactIdversion1.1/version/dependency六、常见问题编译找不到包JDK6移除了JAX-RPC内置包要么手动导入老旧API包要么直接迁移到JAX-WS。SpringBoot 项目如何注册SOAP HandlerJAX-WS端点发布时通过HandlerChain(filehandler-chain.xml)配置处理器链不再使用JAX-RPC的HandlerChain配置类。与javax.xml.soap区别javax.xml.soap纯粹SOAP报文XML解析工具包通用javax.xml.rpc.handler.soapRPC调用拦截器框架WebService调用链路专用Package javax.xml.rpc.handler.soapSkip navigation linksOverviewPackageClassUseTreeDeprecatedIndexHelpPrev PackageNext PackageFramesNo FramesPackage javax.xml.rpc.handler.soapThis package defines APIs for SOAP Message HandlersSee: DescriptionInterface Summary Interface Description SOAPMessageContext The interface javax.xml.rpc.soap.SOAPMessageContext provides access to the SOAP message for either RPC request or response.Package javax.xml.rpc.handler.soap DescriptionThis package defines APIs for SOAP Message HandlersSkip navigation linksOverview Package Class Use Tree Deprecated Index Help Prev Package Next Package Frames No Frames