Menu Close

41.2.2. データ型

概要

これらは低レベルのオブジェクトであるため、Provider 実装はより高いレベルのコンシューマー API と同じ JAXB 生成の型を使用することはできません。Provider 実装は、以下の型のオブジェクトと連携します。

Source オブジェクトの使用

Provider 実装は、javax.xml.transform.Source インターフェースから派生するオブジェクトを受け入れ、返すことができます。Source オブジェクトは、XML ドキュメントを保持する低レベルのオブジェクトです。各 Source 実装は、保存された XML ドキュメントにアクセスし、そのコンテンツを操作する手段を提供します。以下のオブジェクトは Source インターフェースを実装しています。

DOMSource
Document Object Model (DOM) ツリーとして XML メッセージを保持します。XML メッセージは、getNode() メソッドを使用してアクセスされる Node オブジェクトのセットとして保存されます。ノードは、setNode() メソッドを使用して更新または DOM ツリーに追加できます。
SAXSource
Simple API for XML (SAX) オブジェクトとして XML メッセージを保持します。SAX オブジェクトには、未加工のデータを保持する InputSource オブジェクトと、未加工のデータを解析する XMLReader オブジェクトが含まれます。
StreamSource
データストリームとして XML メッセージを保持します。このデータストリームは、他のデータストリームと同じ様に操作できます。

汎用 Source オブジェクトを使用するように Provider オブジェクトを作成する場合、Apache CXF はメッセージを SAXSource オブジェクトとして返します。

この動作は、エンドポイントの source-preferred-format プロパティーを使用して変更できます。Apache CXF ランタイムの設定に関する詳細は、パートIV「Web サービスのエンドポイントの設定」を参照してください。

重要

Source オブジェクトを使用する場合、開発者は必要なバインディング固有のラッパーがすべてメッセージに追加されるようにする必要があります。たとえば、SOAP メッセージを期待するサービスとやり取りする場合、開発者は、必要な SOAP エンベロープが発信リクエストに追加されること、および SOAP エンベロープの内容が正しいことを確認する必要があります。

SOAPMessage オブジェクトの使用

以下の条件が満たされる場合、Provider 実装は javax.xml.soap.SOAPMessage オブジェクトを使用できます。

  • Provider 実装が SOAP バインディングを使用している
  • Provider 実装がメッセージモードを使用している

SOAPMessage オブジェクトは SOAP メッセージを保持します。これには、1 つの SOAPPart オブジェクトと 0 個以上の AttachmentPart オブジェクトが含まれます。SOAPPart オブジェクトには、SOAP メッセージの SOAP 固有部分が含まれます。これには、SOAP エンベロープ、SOAP ヘッダー、および SOAP メッセージボディーが含まれます。AttachmentPart オブジェクトには、アタッチメントとして渡されるバイナリーデータが含まれます。

DataSource オブジェクトの使用

以下の条件が満たされる場合、Provider 実装は javax.activation.DataSource インターフェースを実装するオブジェクトを使用できます。

  • 実装が HTTP バインディングを使用している
  • 実装がメッセージモードを使用している

DataSource オブジェクトは、URL、ファイル、および バイトアレイなどのさまざまなソースからの MIME 型のデータを操作するメカニズムを提供します。