WebSphere Application Server Version 6.1 Feature Pack for Web Services   
             オペレーティング・システム: AIX , HP-UX, i5/OS, Linux, Solaris, Windows, Windows Vista, z/OS

             目次と検索結果のパーソナライズ化

CustomBinder インターフェース

WebSphere Application Server では、特定の XML スキーマ・タイプの具象カスタム・データ・バインダーを提供するために実装可能な CustomBinder インターフェースを定義しています。

CustomBinder インターフェースには、deserialize および serialize メソッドのほかに、以下の 3 つのプロパティーがあります。 これらのプロパティーは、XML スキーマ・タイプの QName、QName 有効範囲、およびスキーマ・タイプがマップされる Java タイプです。 これらのプロパティーは、対応する getter メソッドを介してアクセス可能です。

getQName

getQName メソッドは、ターゲット XML スキーマ・タイプの QName を戻します。 カスタム・データ・バインダーは、ルート・レベルのスキーマ・タイプのみを扱います。

匿名の型の場合、getQName メソッドは、これらを含んでいるエレメントの QName を戻します。

名前付きの型の場合、getQName メソッドは、complexType または simpleType の QName を戻します。

getQNameScope

getQNameScope メソッドは、スキーマ・タイプが名前付きの型か、匿名の型かを示すバインダーの qnameScope プロパティーを戻します。 qnameScope プロパティー値は、<xsd:complexType> に対しては complexType<xsd:simpleType> に対しては simpleType、匿名の型を使用して定義された <xsd:element> に対しては element となります。

以下のスキーマでは、data1 が匿名の型を使用して定義されたエレメントです。 エレメント data2 は、名前付きの型 data2Type を使用して定義されています。
<xsd:element name="data1">
	<xsd:complexType>
		...
	</xsd:complexType>
</xsd:element>

<xsd:element name= "data2" type="data2Type"/>
<xsd:complexType name="data2Type">
	...
</xsd:complexType>
匿名の型である data1 には、element の qNameScope と data1 の qName があります。 型 data2Type には、complexType の qNameScope と data2Type の qName があります。

エレメント data2 は、カスタム・データ・バインダー内に示されていません。 カスタム・データ・バインダーは、型のみを処理し、エレメントは処理しません。

getJavaName

getJavaName メソッドは、名前付きの型または匿名の型にマップされた Java タイプの完全修飾されたクラス名を戻します。 このクラスは、インターフェースまたは具象クラスになります。 deserialize メソッドから戻されたオブジェクトには、getJavaName メソッドによって戻された Java タイプと互換性のあるタイプがあります。

serialize

serialize メソッドは、カスタム・データ・バインダーが Java オブジェクトから作成する SOAPElement を戻します。 この Java オブジェクトはランタイム・システムから渡され、getJavaName メソッドから戻されるものとの一致が期待されます。 SOAPElement パラメーターには子エレメントがありませんが、有効な QName があります。 このパラメーターは、バインダーが最終の SOAPElement を作成するための参照です。

ほとんどの場合、バインダー実装は、ルートの SOAPElement に子エレメントを追加します。 ランタイム・システムは、SOAPElement QName が正しいことを保証します。 このため、名前付きの型のカスタム・データ・バインダーは、ルート・エレメントの QName を保持します。これは、バインダーが外側のエレメントを認識していないためです。 匿名の型のバインダー実装では、定義されたスキーマ・タイプと一致する QName を、戻された SOAPElement に常に含める必要があります。 WebSphere Application Server は、CustomBindingContext パラメーター内に具象メソッドを持ちません。

deserialize

deserialize メソッドは、カスタム・データ・バインダーが、渡されたルート SOAPElement から作成する Java オブジェクトを戻します。 戻された Java オブジェクトのオブジェクト・タイプは、getJavaName メソッドから戻されたものと一致する必要があります。 パラメーターの serialize メソッドと異なり、渡された SOAPElement には、必要なネーム・スペース宣言と共に元の XML データが含まれています。

以下に SDO DataGraph バインダーの実装例を示します。ここでは、convertToSDO および convertToSAAJ ユーティリティー・メソッドが、SOAPElement と SDO オブジェクト間で変換されます。

package test.sdo.binder;

import javax.xml.namespace.QName;
import javax.xml.soap.SOAPElement;

import com.ibm.wsspi.webservices.binding.CustomBinder;
import com.ibm.wsspi.webservices.binding.CustomBindingContext;

public class DataGraphBinder implements CustomBinder {
	public QName getQName() {
		return new QName("commonj.sdo", "DataGraphyType");
}
public String getJavaName() {
	return CustomBinder.QNAME_SCOPE_COMPLEXTYPE;
}
public String getJavaName() {
	return commonj.sdo.DataGraph.class.getName();
}
public javax.xml.soap.SOAPElement serialize(
		Object bean,
		SOAPElement rootNode,
		CustomBindingContext context)
		throws javax,xml.soap.SOAPException {
	// convertToSAAJ is a utility method to convert
	// the SDO DataGraph to the SOAPElement
	return convertToSAAJ(bean, rootNode);

public Object deserialize(
		SOAPElement source,
		CustomBindingContext context)
		throws javax.xml.soap.SOAPException {
		// convertToSDO is a utility method to convert
		// the SOAPElement to the SDO DataGraph
		return convertToSDO(source);
	}
}

カスタム・データ・バインダーについて詳しくは、カスタム・データ・バインダー を参照してください。 開発のために、ご使用のカスタム・データ・バインダーを WSDL2Java コマンド行ツールにプラグインする方法については、カスタム・バインダー・プロバイダーを参照してください。

API および SPI で使用される文書については、参照: 生成 API 資料を参照してください。 API および SPI インターフェースについて説明するこのトピックの指示に従います。

Web サービスの開発で使用される標準および API については、仕様を確認することもできます。




関連概念
カスタム・データ・バインダー
カスタム・バインディング・プロバイダー
関連資料
カスタム・データ・バインダーをデプロイするための使用パターン
JAX-RPC アプリケーション用の WSDL2Java コマンド
Web サービス: 学習用リソース
参照トピック    

ご利用条件 | フィードバック

最終更新: Jan 21, 2008 4:10:06 PM EST
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.wsfep.multiplatform.doc/info/ae/ae/rwbs_custbindapi.html