SAAJ (SOAP with Attachments API for Java) インターフェース
SOAP with Attachments API for Java™ (SAAJ) インターフェースは、インターネットを介して XML 文書を Java プログラミング・モデルから送信する標準的な方法を提供している SOAP メッセージングに使用します。SAAJ を使用して、適切なコンテキストへの SOAP メッセージを、そのメッセージがランタイム環境を全探索する際に操作します。

Java API for XML-Based RPC (JAX-RPC) プログラミング・モデルは XML を操作するための SAAJ 1.2 をサポートしています。
JAX-WS プログラミング・モデルは SAAJ 1.2 および 1.3 をサポートしています。SAAJ 1.3 には、SOAP 1.2 メッセージのサポートが含まれています。
SAAJ 1.2 と SAAJ 1.3 仕様との違いは、トピック「SAAJ バージョンの違い」で確認できます。
Web サービスでのメッセージの使用方法
Web サービスは XML テクノロジーを使用してメッセージを交換します。これらのメッセージは XML スキーマに準拠しています。Web サービス・アプリケーションを開発する場合は、操作できる XML API が限定されます (例えば、Document Object Model (DOM))。Java オブジェクトを操作して実行時にシリアライゼーションおよびデシリアライゼーションを完了させる方がより効率的です。
Web サービスは SOAP メッセージを使用して、 クライアントとサーバー間のリモート・プロシージャー・コールを表します。 一般に、SOAP メッセージは、パラメーターおよび戻り値を表す一連の Java 値タイプのビジネス・オブジェクトにデシリアライズされます。さらに、Java プログラミング・モデルは、アプリケーションとハンドラーをサポートして SOAP メッセージを直接操作する API を提供します。 プログラミング・モデルによりサポートされる 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 サービス・テクノロジー (WS-Addressing (WS-A)、WS-Atomic Transaction (WS-AT)、WS-Notification など) を サポートするため、Java セキュリティーが使用可能になっている場合、 いずれの Web サービス・アプリケーションでもこの SecurityException は無視してかまいません。
gotcha- SOAPMessage: XML 部分および XML 以外の部分の両方のメッセージが含まれています
- SOAPHeader: SOAP ヘッダーの XML エレメントを表します
- SOAPBody: SOAP 本体の XML エレメントを表します
- SOAPElement: SOAP メッセージの他のエレメントを表します
- MessageContext: SOAP メッセージと関連プロパティーが含まれています
- AttachmentPart: バイナリー添付ファイルを表します
- SOAPPart: メッセージの XML 部分を表します
- SOAPEnvelope: SOAP エンベロープの XML エレメントを表します
- SOAPFault: SOAP fault 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 エンベロープが 1 つあります。 このエンベロープは、 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 文書を参照してください。