JAX-RPC アプリケーションのカスタム・データ・バインダー

カスタム・データ・バインダー は、Java™ オブジェクトを持つ XML スキーマ・タイプをマップするために使用します。 カスタム・データ・バインダーは、現行の Java API for XML-based Remote Call Procedure (JAX-RPC) 仕様ではサポートされていない XML スキーマ・タイプに対するバインディングを提供します。

カスタム・データ・バインダーは、Java オブジェクトと SOAPElement インターフェース間で変換を行うためのシリアライズ・メソッドやデシリアライズ・メソッドを定義します。カスタム・データ・バインダーはランタイム・システムに追加され、SOAPElement を使用して Web サービス・ランタイムと対話をします。従来のデシリアライザーとは異なり、カスタム・データ・バインダーは、Java オブジェクト (Simple API for XML (SAX) など) の作成を、ランタイムの低水準解析イベントに依存しません。代わりに、ランタイムは着信 SOAP メッセージを SOAPElement にレンダリングすることにより、カスタム・データ・バインダーを作成します。 メッセージを含む SOAPElement は、顧客データ・バインダーに渡されます。 例えば、着信メッセージにサービス・データ・オブジェクト (SDO) データグラフが含まれている場合、ランタイム・システムは次のように処理を行います。
  1. ランタイム・システムは <sdo:Datagraph> コードを認識します。
  2. ランタイムはタイプ・マッピング・システムを照会し、データグラフ・データ (例えば、SDOCustomBinder) のカスタム・データ・バインダーを検索します。
  3. 着信 SDO データ・グラフを表す SOAPElement が作成されます。
  4. ランタイムは SOAPElement を SDOCustomBinder に渡します。
デシリアライズしたメソッド内で、SDOCustomBinder は SOAPElement のコンテンツを抽出し、 commonj.sdo.DataGraph 型を持つ具体的な DataGraph オブジェクトをビルドします。

カスタム・データ・バインダーを使用する Web サービス・ランタイム・フロー

Java オブジェクトがシリアライズされる場合、同様のプロセスが発生します。 ランタイムはカスタム・データ・バインダーを探し、Java オブジェクトを SOAPElement に変換します。ランタイムは SOAPElement を、出力ストリームに転送される未加工のメッセージにシリアライズします。

以下に、SDO 仕様で定義される XML スキーマの例を示します。
<xsd:schema
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns:sdo="commonj.sdo"
  targetNamespace="commonj.sdo">

  <xsd:element name="datagraph" type="sdo:DataGraphType"/>
  
  <xsd:complexType name="DataGraphType">
  <xsd:complexContent>
    <xsd:extension base="sdo:BaseDataGraphType">
      <xsd:sequence>
        <xsd:any minOccurs="0" maxOccurs="1"
                 namespace="##other" processContents="lax"/>
      </xsd:sequence>
    </xsd:extension>
  </xsd:complexContent>
  </xsd:complexType>

  <xsd:complexType name="BaseDataGraphType" abstract="true">
  <xsd:sequence>
    <xsd:element name="models" type="sdo:ModelsType" minOccurs="0"/>
    <xsd:element name="xsd" type="sdo:XSDType" minOccurs="0"/>
    <xsd:element name="changeSummary"
                 type="sdo:ChangeSummaryType" minOccurs="0"/>
   </xsd:sequence>
  <xsd:anyAttribute namespace="##other" processContents="lax"/>
  </xsd:complexType>
    
  <xsd:complexType name="ModelsType">
  <xsd:sequence>
    <xsd:any minOccurs="0" maxOccurs="unbounded"
             namespace="##other" processContents="lax"/>
  </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="XSDType">
  <xsd:sequence>
    <xsd:any minOccurs="0" maxOccurs="unbounded"
        namespace="http://www.w3.org/2001/XMLSchema" processContents="lax"/>
  </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="ChangeSummaryType">
  <xsd:sequence>
    <xsd:any minOccurs="0" maxOccurs="unbounded"
             namespace="##any" processContents="lax"/>
  </xsd:sequence>
  <xsd:attribute name="create" type="xsd:string"/>
  <xsd:attribute name="delete" type="xsd:string"/>
  </xsd:complexType>

</xsd:schema> 

WebSphere® Application Server は、特定の XML スキーマ・タイプに対して具体的なカスタム・バインディングを実装する CustomBinder インターフェースを定義します。

カスタム・バインディングをランタイムにインポートするには、カスタム・バインディング・プロバイダーを使用します。 カスタム・データ・バインダーを、開発用の WSDL2Java コマンド行ツールに組み込む方法については、『カスタム・バインディング・プロバイダー』を参照してください。さらに、『カスタム・データ・バインダーをデプロイするための使用パターン』を参照して、プロバイダー・パッケージをランタイムにデプロイする方法のほか、カスタム・バインディング・プロセスに関係するロールについても学習できます。


トピックのタイプを示すアイコン 概念トピック



タイム・スタンプ・アイコン 最終更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cwbs_custombinders
ファイル名:cwbs_custombinders.html