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) データグラフが含まれている場合、ランタイム・システムは次のように処理を行います。
- ランタイム・システムは <sdo:Datagraph> コードを認識します。
- ランタイムはタイプ・マッピング・システムを照会し、データグラフ・データ (例えば、SDOCustomBinder) のカスタム・データ・バインダーを検索します。
- 着信 SDO データ・グラフを表す SOAPElement が作成されます。
- ランタイムは SOAPElement を SDOCustomBinder に渡します。

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