サービス・コンポーネントの開発

ご使用のサーバー内の複数のアプリケーションに再使用可能なロジックを提供するための、サービス・コンポーネントを作成します。

始める前に

この作業では、複数のモジュールで使用できる処理がすでに作成され、特定されていることが前提になっています。

このタスクを使用する理由とその時期

複数のモジュールで 1 つのサービス・コンポーネントを使用することができます。サービス・コンポーネントをエクスポートすると、インターフェースを介してそのコンポーネントを参照するほかのモジュールが、そのサービス・コンポーネントを利用できるようになります。この作業では、ほかのモジュールがコンポーネントを使用できるように、そのサービス・コンポーネントを作成する方法を説明します。
注: 1 つのサービス・コンポーネントに、複数のインターフェースを設定することができます。

このタスクのステップ

  1. 呼び出し元とサービス・コンポーネントの間のデータの移動のためのデータ・オブジェクトを定義します。

    データ・オブジェクトおよびそのタイプは、呼び出し元とサービス・コンポーネント間のインターフェースの一部となります。

  2. 呼び出し元がサービス・コンポーネントを参照するときに使用するインターフェースを定義します。

    このインターフェース定義で、サービス・コンポーネントを指定し、サービス・コンポーネント内のすべての使用可能なメソッドをリストします。

  3. インプリメンテーションを定義するクラスを開発します。
    • コンポーネントが長期にわたって実行される (非同期) 場合は、 ステップ 4 に進みます。
    • コンポーネントが長期にわたって実行されるものでない (同期) 場合は、 ステップ 5 に進みます。
  4. 非同期インプリメンテーションを開発します。
    重要: 非同期型コンポーネント・インターフェースでは、joinsTransaction プロパティーを true に設定できません。
    1. 同期型サービス・コンポーネントを示すインターフェースを定義します。
    2. サービス・コンポーネントのインプリメンテーションを定義します。
    3. ステップ 6 に進みます。
  5. 同期インプリメンテーションを開発します。
    1. 同期型サービス・コンポーネントを示すインターフェースを定義します。
    2. サービス・コンポーネントのインプリメンテーションを定義します。
  6. コンポーネントのインターフェース、およびインプリメンテーションを拡張子が .java のファイルに保管します。
  7. サービス・モジュールと必要なリソースを JAR ファイルにパッケージ化します。

    ステップ 7 から 9 までの詳しい説明については、このインフォメーション・センターの"実動サーバーへのモジュールのデプロイ"のセクションを参照してください。

  8. serviceDeploy コマンドを実行して、アプリケーションを格納するインストール可能な EAR ファイルを作成します。
  9. サーバー・ノード上にアプリケーションをインストールします。
  10. オプション: ほかのサービス・モジュール内のサービス・コンポーネントを呼び出す場合は、呼び出し元とそれに対応するサービス・コンポーネント間のワイヤーを構成します。

    このインフォメーション・センターの"管理"セクションに、ワイヤーの構成についての説明があります。

コンポーネントの開発例

コンポーネントの開発例

この例では、1 つのメソッド CustomerInfo をインプリメントする同期型サービス・コンポーネントを示しています。 最初のセクションでは、getCustomerInfo というメソッドをインプリメントするサービス・コンポーネントに対するインターフェースを定義しています。
public interface CustomerInfo {
	public Customer getCustomerInfo(String customerID);
}
以下のコード・ブロックで、サービス・コンポーネントをインプリメントします。
public class CustomerInfoImpl implements CustomerInfo {
	public Customer getCustomerInfo(String customerID) {
		Customer cust = new Customer();

		cust.setCustNo(customerID);
		cust.setFirstName("Victor");
		cust.setLastName("Hugo");
		cust.setSymbol("IBM");
		cust.setNumShares(100);
		cust.setPostalCode(10589);
		cust.setErrorMsg("");

		return cust;
	}
}
この例では、非同期型サービス・コンポーネントを作成します。 コードの最初のセクションでは、getQuote というメソッドをインプリメントするサービス・コンポーネントに対するインターフェースを定義しています。
public interface StockQuote {

	public float getQuote(String symbol);
}
以下のセクションは、StockQuote に関連したクラスのインプリメンテーションです。
public class StockQuoteImpl implements StockQuote {
	
	public float getQuote(String symbol) {


	    return 100.0f;
	}
}
以下のコード・セクションは、非同期インターフェース StockQuoteAsync をインプリメントします。
public interface StockQuoteAsync {
	
	// deferred response
	public Ticket getQuoteAsync(String symbol);
	public float getQuoteResponse(Ticket ticket, long timeout);

	// callback
	public Ticket getQuoteAsync(String symbol, StockQuoteCallback callback);
}
以下のセクションは、onGetQuoteResponse メソッドを定義するインターフェース StockQuoteCallback です。
public interface StockQuoteCallback {

	public void onGetQuoteResponse(Ticket ticket, float quote);
}

次の作業

サービスを起動します。

(c) Copyright IBM Corporation 2005, 2006. All rights reserved.
(c) Copyright IBM Japan 2006
このインフォメーション・センターでは、Eclipse テクノロジー (http://www.eclipse.org) が採用されています。