SOAP with Attachments API for Java 介面
SOAP 傳訊提供一種經由網際網路,從 Java™ 程式設計模型傳送 XML 文件的標準方法,SOAP with Attachments API for Java (SAAJ) 介面便用來進行這個 SOAP 傳訊。 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 和 1.3 規格中的差異。
如何在 Web 服務中使用訊息?
Web 服務利用 XML 技術來交換訊息。 這些訊息符合 XML 綱目。 當開發 Web 服務應用程式時,只有有限的 XML API 可供使用,例如「文件物件模型 (DOM)」。 在執行時期操作 Java 物件及完成序列化和解除序列化,會更有效。
Web 服務利用 SOAP 訊息來代表用戶端和伺服器之間的遠端程序呼叫。 一般而言,SOAP 訊息會解除序列化成為一系列代表參數和回覆值的 Java 值類型商業物件。 此外,Java 程式設計模型也提供了 API,支援直接操作 SOAP 訊息的應用程式和處理程式。 由於這個程式設計模型只支援有限數目的 XML 綱目類型,規格提供了 SAAJ 資料模型,作為一項用來操作訊息的延伸。
如果要操作 XML 綱目類型,您必須利用自訂資料連結程式,將 XML 綱目類型對映至 Java 類型。
SAAJ 介面
SAAJ 相關類別是在 javax.xml.soap 套件中。 SAAJ 建置在介面和抽象類別之上,其中許多類別都是由呼叫 Factory 方法來開始建立 SOAPConnectionFactory 和 SOAPFactory 之類的 Factory。

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 服務技術,例如,WS-Addressing (WS-A)、WS-Atomic Transaction (WS-AT) 和 WS-Notification,您可以在啟用了 Java 安全性的任何 Web 服務應用程式中,忽略這個安全異常狀況。
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 標準。 在 SAAJ 模型中,SOAP 訊息是以 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 服務可能是通往另一個 Web 服務的導管。在這個情況下,只會轉遞 SOAP 訊息。
- Web 服務有可能利用不同的資料模型(例如,「服務資料物件 (SDO)」)來操作訊息。將訊息從 SAAJ DOM 轉換為另一種資料模型會比較容易。
- 處理程式(例如,數位簽章驗證處理程式)可能會想對訊息進行一般操作。
由於 SOAPElement 介面不一定是舊式系統的最佳替代方案,因此,您可能需要進一步對映 XML 綱目類型。 在這個情況下,您可能會想使用通用的程式設計模型(如 SDO),它會更適合以資料為中心的應用程式。
XML 綱目可以配置成包含自訂資料連結,使 SDO 或資料物件與 Java 物件組成配對。 例如,執行時期會將送入的 SOAP 訊息呈現在 SOAPElement 介面中,並將它傳給客戶資料連結程式來進行更多處理。 如果送入訊息包含 SDO,執行時期會辨識資料物件程式碼,查詢它的類型對映來尋找自訂連結程式,以及建置代表 SDO 程式碼的 SOAPElement 介面。 SOAPElement 會傳給 SDOCustomBinder。
請參閱自訂資料連結程式的相關資訊,以進一步瞭解利用 SOAPElement、SDO 和自訂連結程式來開發應用程式的程序。

上述傳回空值的行為與規格不符。
trns如需支援的標準和規格的完整清單,請參閱 Web 服務規格與 API 說明文件。