カスタム・バインディング・プロバイダー は、宣言メタデータ・ファイルを持つカスタム・データ・バインダー・クラスのパッケージです。 カスタム・バインディング・プロバイダーの主要な目的は、関連するカスタム・データ・バインダーを総計して特定のユーザー・シナリオをサポートすることです。 カスタム・バインディング・プロバイダーは、カスタム・データ・バインダーをエミッター・ツールや ランタイム・システムに接続するために使用します。そうすることで、エミッター・ツールは適切な成果物を生成することができ、 ランタイム・システムは既存タイプのマッピング・システムを拡大し、適用されたカスタム・データ・バインダーを反映して 呼び出すことができます。
カスタム・バインディング・プロバイダーが特定の XML スキーマ・タイプを処理するのに対して、 アプリケーションにはいくつかの関連する XML スキーマ・タイプが含まれます。 完全なバインディング・ソリューションを提供するには、さまざまなカスタム・データ・バインダーをまとめ、 宣言するメカニズムが必要です。 カスタム・バインディング・プロバイダーの概念は、カスタム・データ・バインダーのセットを エミッター・ツールまたはランタイム・システムに接続するために使用できる宣言モデルを定義します。
カスタム・データ・バインダーの情報を検討して、 カスタム・データ・バインダーおよび CustomBinder インターフェース (WebSphere Application Server に含まれている、 カスタム・データ・バインダーを定義するための API) について詳しく知ることができます。 これらの項目を検討したら、カスタム・バインダー・パッケージをデプロイする準備が整います。 このパッケージのデプロイ方法について学習するには、カスタム・データ・バインダーをデプロイするための使用パターンを参照してください。
宣言メタデータ・ファイル CustomBindingProvider.xml は、 単一の Java アーカイブ (JAR) ファイルのカスタム・プロバイダー・クラスを使用してパッケージ化された XML ファイルであり、/META-INF/services/directory にあります。 プロバイダーの JAR ファイルがパッケージ化されると、JAR ファイル内にあるバイナリー情報とメタデータ・ファイルを WSDL2Java コマンド行ツールおよびランタイム・システムが使用できるようになります。
<?xml version="1.0" encoding="UTF-8"?> <xsd:schema targetNamespace= "http://www.ibm.com/webservices/customdatabinding/2004/06" xmlns:customdatabinding= "http://www.ibm.com/webservices/customdatabinding/2004/06" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="qualified"> <xsd:element name="provider" type="customdatabinding:providerType"/> <xsd:complexType name="providerType"> <xsd:sequence> <xsd:element name="description" type="xsd:string" minOccurs="0"/> <xsd:element name="mapping" minOccurs="0" maxOccurs="unbounded"> <xsd:complexType> <xsd:sequence> <xsd:element name="description" type="xsd:string" minOccurs="0"/> <xsd:element name="xmlQName" type="xsd:QName"/> <xsd:element name="javaName" type="xsd:string"/> <xsd:element name="qnameScope" type="customdatabinding:qnameScopeType"/> <xsd:element name="binder" type="xsd:string"/> </xsd:sequence> /xsd:complexType> </xsd:element> <xsd:attribute name="scope" type="customdatabinding:ProviderScopeType" default="module"/> </xsd:sequence> </xsd:complexType <xsd:simpleType name="qnameScopeType"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="simpleType"/> <xsd:enumeration value="complexType"/> <xsd:enumeration value="element"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="ProviderScopeType"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="server"/> <xsd:enumeration value="application"/> <xsd:enumeration value="module"/> </xsd:restriction> </xsd:simpleType> </xsd:schema>
<cdb:provider xmlns:cdb="http://www.ibm.com/webservices/customdatabinding/2004/06" xmlns:sdo="commonj.sdo"> <cdb:mapping> <cdb:xmlQName>sdo:DataGraphType</cdb:xmlQName> <cdb:javaName>commonj.sdo.DataGraph</cdb:javaName> <cdb:qnameScope>complexType</cdb:qnameScope> <cdb:binder>test.sdo.SDODataGraphBinder</cdb:binder> </cdb:mapping> </cdb:provider>
開発のために、カスタム・データ・バインダーを WSDL2Java コマンド行ツールにインポートする必要があります。 カスタム・データ・バインダーは、Service Endpoint Interface および JSR 109 マッピング・データを含む開発の成果物が Web サービス記述言語 (WSDL) ファイルから生成される方法に影響を与えます。 WSDL2Java コマンド行ツールは WebSphere Application Server に同梱されており、カスタム・バインダー Java アーカイブ・ファイルまたはカスタム・バインダー・パッケージを使用してこれらの開発の成果物を生成します。
<?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions targetNamespace="http://sdo.test" xmlns:impl="http://sdo.test" xmlns:intf="http://sdo.test" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sdo="commonj.sdo"> <wsdl:types> <schema elementFormDefault="qualified" targetNamespace="http://sdo.test" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:sdo="commonj.sdo"> <import namespace="commonj.sdo" schemaLocation="sdo.xsd"/> </schema> </wsdl:types> <wsdl:message name="echoResponse"> <wsdl:part element="sdo:datagraph" name="return"/> </wsdl:message> <wsdl:message name="echoRequest"> <wsdl:part element="sdo:datagraph" name="parameter"/> </wsdl:message> <wsdl:portType name="EchoService"> <wsdl:operation name="echo"> <wsdl:input message="impl:echoRequest" name="echoRequest"/> <wsdl:output message="impl:echoResponse" name="echoResponse"/> </wsdl:operation> </wsdl:portType> <wsdl:binding name="EchoServiceSoapBinding" type="impl:EchoService"> <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="echo"> <wsdlsoap:operation soapAction=""/> <wsdl:input name="echoRequest"> <wsdlsoap:body use="literal"/> </wsdl:input> <wsdl:output name="echoResponse"> <wsdlsoap:body use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="EchoServiceService"> <wsdl:port binding="impl:EchoServiceSoapBinding" name="EchoService"> <wsdlsoap:address location="http://<uri>"/> </wsdl:port> </wsdl:service> </wsdl:definitions>カスタム・データ・バインディング・パッケージを使用せずに WSDL2Java コマンドを実行すると、 JAX-RPC 仕様で指示されているパラメーター・タイプを持つ、次のサービス・エンドポイント・インターフェースが生成されます。
public interface EchoService extends java.rmi.Remote { public javax.xml.soap.SOAPElement echo(javax.xml.soap.SOAPElement parameter) throws java.rmi.RemoteException; }カスタム・データ・バインディング・パッケージを使用して WSDL2Java コマンドを実行すると、パラメーター・タイプを生成するのにカスタム・データ・バインダーが使用されます。 カスタム・データ・バインダーを適用するには、WSDL2Java ツールで -classpath オプションを使用します。 このツールはクラスパスを検索して、/META-INF/services/CustomBindingProvider.xml と同じファイル・パスを持つすべてのファイルを特定します。 以下は、パラメーター・タイプ commonj.sdo.Datagraph を持つサービス・エンドポイント・インターフェースを生成するためのコマンドの使用法の例です。
WSDL2Java -role develop-server -container web classpath sdobinder.jar echo.wsdl生成されるサービス・エンドポイント・インターフェースは、次のようになります。
public interface EchoService extends java.rmi.Remote { public commonj.sdo.DataGraph echo(commonj.sdo.DataGraph parameter) throws java.rmi.RemoteException; }カスタム・バインダーによりパッケージ化された JAR ファイルは、実行時に使用可能にして、 Web サービス・クライアントが、スタブ・ベースのクライアントまたは動的 起動インターフェース (DII) クライアントのいずれであるかにかかわらず、呼び出されることを確認する必要があります。 これは、サービスについても該当します。
API および SPI で使用される資料を検討するには、参照: 生成 API 資料を参照してください。 このトピックの説明に従って、API および SPI インターフェースを読み進めてください。
Web サービスの開発に使用する規格および API については、specifications を検討することもできます。