带附件的 SOAP Java API 接口
带附件的 SOAP Java™ API (SAAJ) 接口用于 SOAP 消息传递,它提供标准方法以从 Java 编程模型通过因特网发送 XML 文档。SAAJ 用于在 SOAP 消息流经运行时环境时将它处理到适当的上下文上。

Java API for XML-Based RPC (JAX-RPC) 编程模型支持 SAAJ 1.2 并且可以处理 XML。
JAX-WS 编程模型支持 SAAJ 1.2 和 1.3。SAAJ 1.3 包含 SOAP 1.2 消息的支持。
可以在主题“SAAJ 版本之间的差别”中查看 SAAJ 1.2 与 SAAJ 1.3 规范之间的差别。
如何在 Web Service 中使用消息?
Web Service 使用 XML 技术来交换消息。这些消息符合 XML 模式。开发 Web Service 应用程序时,只有有限的 XML API 可供使用,例如文档对象模型 (DOM)。在运行时期间处理 Java 对象并完成序列化和反序列化将更有效。
Web Service 使用 SOAP 消息表示客户机和服务器之间的远程过程调用。SOAP 消息通常被反序列化成一系列 Java 值/类型业务对象,这些业务对象表示参数和返回值。另外,Java 编程模型提供支持应用程序和处理程序的 API 以直接处理 SOAP 消息。因为该编程模型仅支持有限数目的 XML 模式类型,所以,该规范提供 SAAJ 数据模型作为扩展用来处理消息。
要处理 XML 模式类型,需要使用定制数据绑定程序将 XML 模式类型映射至 Java 类型。
SAAJ 接口
与 SAAJ 相关的类位于 javax.xml.soap 包中。SAAJ 在接口和抽象类的基础上构建,并且许多类从调用工厂方法来创建工厂(如 SOAPConnectionFactory 和 SOAPFactory)开始。

Permission:
/opt/IBM/WebSphere/AppServer/java/jre/lib/jaxm.properties : access denied
(java.io.FilePermission /opt/IBM/WebSphere/AppServer/java/jre/lib/jaxm.properties
read)
Code:
com.ibm.ws.wsfvt.test.binding.addr1.binder.AddressBinder
in {file:/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/installedApps/
ahp6405Node01Cell/DataBinding.ear/address1.war/WEB-INF/lib
/addressbinder1.jar}
Stack Trace:
java.security.AccessControlException: access denied (java.io.FilePermission
/opt/IBM/WebSphere/AppServer/java/jre/lib/jaxm.properties read)
.
SOAPFactory 会忽略异常,并继续确定要装入的实现的下一种方法。因此,可以忽略此安全性异常的日志条目。
因为本产品使用 SOAPFactory 来支持其他 Web Service 技术(例如 WS-Addressing (WS-A)、WS-Atomic Transaction (WS-AT) 和 WS-Notification),所以在启用了 Java 安全性的任何应用程序中,您可以忽略此 SecurityException。
gotcha- SOAPMessage:包含消息,包括 XML 和非 XML 部分
- SOAPHeader:表示 SOAP 头 XML 元素
- SOAPBody:表示 SOAP 主体 XML 元素
- SOAPElement:表示 SOAP 消息中的其他元素
- MessageContext:包含 SOAP 消息和相关的属性
- AttachmentPart:表示二进制附件
- SOAPPart:表示消息的 XML 部分
- SOAPEnvelope:表示 SOAP 包络 XML 元素
- SOAPFault:表示 SOAP 故障 XML 元素
SAAJ 模型中的主要接口是 javax.xml.soap.SOAPElement(也称为 SOAPElement)。通过使用此模型,应用程序可以处理使用预先存在的 DOM 代码的 SAAJ 模型。将预存在的 DOM 对象转换为 SAAJ 对象也很容易。
使用 SAAJ 接口创建的消息遵循 SOAP 标准。SOAP 消息在 SAAJ 模型中表示为 javax.xml.soap.SOAPMessage 对象。消息的 XML 内容由 javax.xml.soap.SOAPPart 对象表示。每个 SOAP 部件有一个 SOAP 包络。此封包由 SAAJ javax.xml.SOAPEnvelope 对象表示。SOAP 规范定义驻留在 SOAP 包络中的各种元素;SAAJ 为 SOAP 包络中的各种元素定义对象。
SOAP 消息还可以包含称为附件的非 XML 数据。这些附件由可从 SOAPMessage 对象访问的 SAAJ AttachmentPart 对象表示。
- 一个 Web Service 可能是另一个 Web Service 的同步管道。在这种情况下,仅转发 SOAP 消息。
- Web Service 可使用不同的数据模型(例如服务数据对象 (SDO))来操控消息。将消息从 SAAJ DOM 转换为另一种数据模型是更容易的。
- 处理程序(例如,数字签名验证处理程序)可能要对消息进行一般处理。
由于 SOAPElement 接口并非始终都是旧系统的最佳替代者,因此,可能需要进一步映射 XML 模式类型。在这种情况下,您可能需要使用一个通用编程模型(例如,SDO),该模型更适合于以数据为中心的应用程序。
可以将 XML 模式配置为包含定制数据绑定,该数据绑定用来使 SDO 或数据对象与 Java 对象配对。例如,运行时将入局 SOAP 消息呈示到 SOAPElement 接口中,并将它传递给客户数据绑定程序以进行更多处理。如果入局消息包含 SDO,那么运行时识别数据对象代码,查询它的类型映射以查找定制绑定程序,并构建用来表示 SDO 代码的 SOAPElement 接口。SOAPElement 被传递给 SDOCustomBinder。
请参阅有关定制数据绑定程序的信息,以了解有关使用 SOAPElement、SDO 和定制绑定程序来开发应用程序的过程的更多信息。

先前返回空值的行为不符合规范。
trns有关受支持的标准和规范的完整列表,请参阅 Web Service 规范和 API 文档。