SOAP with Attachments API for Java (SAAJ) インターフェースは、インターネットを介して XML 文書を Java プログラミング・モデルから送信する標準的な方法を提供している SOAP メッセージングに使用します。 SAAJ を使用して、適切なコンテキストへの SOAP メッセージを、そのメッセージがランタイム環境を全探索する際に操作します。
Java API for XML-Based RPC (JAX-RPC) プログラミング・モデルは XML を操作するための SAAJ 1.2 をサポートしています。
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 などのファクトリーを作成します。
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 オブジェクトによって表されます。
SOAPElement インターフェースが常にレガシー・システムの最良の代替インターフェースであるとは限らないため、 XML スキーマ・タイプをマップするために、その他のステップが必要になる場合があります。 そのような際には、データ中心のアプリケーションに、より適している、SDO などの汎用プログラミング・モデルを使用することもあります。
XML スキーマは、SDO またはデータ・オブジェクトを Java オブジェクトと対にする、カスタム・データ・バインディングを含むように構成できます。 例えば、ランタイムは着信 SOAP メッセージを SOAPElement インターフェースにレンダリングし、それをカスタム・データ・バインダーに渡してさらに処理します。 着信メッセージに SDO が含まれる場合、ランタイムはデータ・オブジェクト・コードを認識し、 そのタイプのマッピングを照会してカスタム・バインダーを探し、SDO コードを表す SOAPElement インターフェースをビルドします。 SOAPElement は SDOCustomBinder に渡されます。
SOAPElement、SDO、およびカスタム・バインダーを使用したアプリケーション開発のプロセスについて詳しくは、カスタム・データ・バインダーを参照してください。
API の完全なリストについては、API documentation を参照して ください。 また、Web サービス: 学習用リソースにある Web サービスの開発についての項目も検討します。