WebSphere Enterprise Service Bus バージョン 6.2.0 オペレーティング・システム: AIX、HP-UX、i5/OS、Linux、Solaris、Windows


コンポーネントの呼び出し

モジュールを含むコンポーネントは、WebSphere® ESB クラスターの任意のノード上でコンポーネントを使用することができます。

始める前に

コンポーネントを呼び出す前に、WebSphere ESB に、コンポーネントを含むモジュールがインストールされていることを確認してください。

このタスクについて

コンポーネントは、コンポーネントの名前を使用し、コンポーネントに適したデータ型を渡すことによって、WebSphere ESB クラスター内で使用可能なすべてのサービス・コンポーネントを使用することができます。この環境内でコンポーネントを呼び出すには、必要なコンポーネントを見つけてから、そのコンポーネントへの参照を作成する操作が必要です。
注: モジュール内のコンポーネントは、同一のモジュール内のコンポーネントを呼び出すことができ、これはモジュール内呼び出しと呼ばれます。 提供側コンポーネント内のインターフェースをエクスポートし、呼び出し側コンポーネント内でインターフェースをインポートすることによって、外部呼び出し (モジュール内呼び出し) をインプリメントしてください。
重要: 呼び出し側モジュールが稼働するサーバーと異なるサーバー上に存在するコンポーネントを呼び出す場合は、サーバーへの追加構成を実行する必要があります。必要な構成は、コンポーネントが非同期に呼び出されるか、同期して呼び出されるかによって異なります。この場合のアプリケーション・サーバーの構成方法は、関連タスクで説明されています。
手順
  1. 呼び出し側モジュールに必要なコンポーネントを判別します。

    コンポーネント内のインターフェースの名前と、そのインターフェースに必要なデータ型を書き留めます。

  2. データ・オブジェクトを定義します。

    入力または戻りは Java™ クラスでかまいませんが、サービス・データ・オブジェクトが最適です。

  3. コンポーネントを探します。
    1. ServiceManager クラスを使用して、呼び出し側モジュールが使用できる参照を取得します。
    2. locateService() メソッドを使用して、コンポーネントを探します。

      インターフェースは、コンポーネントに応じて、Web サービス記述言語 (WSDL) ポート・タイプまたは Java インターフェースのいずれかを使用することができます。

  4. コンポーネントを同期式に呼び出します。

    Java インターフェースを使用してコンポーネントを呼び出すことも、 invoke() メソッドを使用してコンポーネントを動的に呼び出すこともできます。

  5. 戻り値を処理します。

    コンポーネントが例外を生成することがあるので、クライアントでは例外の処理が可能である必要があります。

コンポーネントの呼び出し例

次の例では、 ServiceManager クラスを作成します。
ServiceManager serviceManager = new ServiceManager();
以下の例は、 ServiceManager クラスを使用して、コンポーネントの参照を含んでいるファイルからコンポーネントのリストを取得します。
InputStream myReferences = new FileInputStream("MyReferences.references");
ServiceManager serviceManager = new ServiceManager(myReferences);
以下のコードは、StockQuote Java インターフェースをインプリメントするコンポーネントを探します。
StockQuote stockQuote = (StockQuote)serviceManager.locateService("stockQuote");
以下のコードは、Java または WSDL ポート・タイプ・インターフェースをインプリメントするコンポーネントを探します。呼び出し側モジュールは、Service インターフェースを使用して、コンポーネントと対話します。
ヒント: コンポーネントが Java インターフェースをインプリメントする場合は、 コンポーネントをインターフェースまたは invoke() メソッドのいずれかを使用して呼び出すことができます。
Service stockQuote = (Service)serviceManager.locateService("stockQuote");
次の例は、別のコンポーネントを呼び出すコード MyValue を示しています。
public class MyValueImpl implements MyValue {

	public float myValue throws MyValueException {
		
		ServiceManager serviceManager = new ServiceManager();

	    // variables
	        Customer customer = null;
	        float quote = 0;
	        float value = 0;

	    // invoke
	        CustomerInfo cInfo = 
						(CustomerInfo)serviceManager.locateService("customerInfo");
	        customer = cInfo.getCustomerInfo(customerID);

	    if (customer.getErrorMsg().equals("")) {

	        // invoke
	    		StockQuote sQuote = 
						(StockQuote)serviceManager.locateService("stockQuote");
	    		Ticket ticket =  sQuote.getQuote(customer.getSymbol());
				// … do something else …
	    		quote =  sQuote.getQuoteResponse(ticket, Service.WAIT);

	        // assign
	        	value = quote * customer.getNumShares();
	    } else {

	        // throw
	       	throw new MyValueException(customer.getErrorMsg()); 
	    }
	    // reply
	        return value;
	}
}

次のタスク

呼び出し側モジュールの参照とコンポーネントのインターフェースの間のワイヤーを構成します。

task タスク・トピック

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


タイムスタンプ・アイコン 最終更新: 2010/07/05


http://publib.boulder.ibm.com/infocenter/dmndhelp/v6r2mx/topic//com.ibm.websphere.wesb620.doc/doc/tdev_devclientcomps.html
Copyright IBM Corporation 2005, 2010. All Rights Reserved.
このインフォメーション・センターでは Eclipse テクノロジーが採用されています (http://www.eclipse.org)。