ご使用のサーバー内の複数のアプリケーションに再使用可能なロジックを提供するための、サービス・コンポーネントを作成します。
始める前に
この作業では、複数のモジュールで使用できる処理がすでに作成され、特定されていることが前提になっています。
このタスクを使用する理由とその時期
複数のモジュールで 1 つのサービス・コンポーネントを使用することができます。サービス・コンポーネントをエクスポートすると、インターフェースを介してそのコンポーネントを参照するほかのモジュールが、そのサービス・コンポーネントを利用できるようになります。この作業では、ほかのモジュールがコンポーネントを使用できるように、そのサービス・コンポーネントを作成する方法を説明します。
注: 1 つのサービス・コンポーネントに、複数のインターフェースを設定することができます。
このタスクのステップ
- 呼び出し元とサービス・コンポーネントの間のデータの移動のためのデータ・オブジェクトを定義します。
データ・オブジェクトおよびそのタイプは、呼び出し元とサービス・コンポーネント間のインターフェースの一部となります。
- 呼び出し元がサービス・コンポーネントを参照するときに使用するインターフェースを定義します。
このインターフェース定義で、サービス・コンポーネントを指定し、サービス・コンポーネント内のすべての使用可能なメソッドをリストします。
- インプリメンテーションを定義するクラスを開発します。
- コンポーネントが長期にわたって実行される (非同期) 場合は、
ステップ 4 に進みます。
- コンポーネントが長期にわたって実行されるものでない (同期) 場合は、
ステップ 5 に進みます。
- 非同期インプリメンテーションを開発します。
重要: 非同期型コンポーネント・インターフェースでは、joinsTransaction プロパティーを true に設定できません。
- 同期型サービス・コンポーネントを示すインターフェースを定義します。
- サービス・コンポーネントのインプリメンテーションを定義します。
- ステップ 6 に進みます。
- 同期インプリメンテーションを開発します。
- 同期型サービス・コンポーネントを示すインターフェースを定義します。
- サービス・コンポーネントのインプリメンテーションを定義します。
- コンポーネントのインターフェース、およびインプリメンテーションを拡張子が .java のファイルに保管します。
- サービス・モジュールと必要なリソースを JAR ファイルにパッケージ化します。
ステップ 7 から 9 までの詳しい説明については、このインフォメーション・センターの"実動サーバーへのモジュールのデプロイ"のセクションを参照してください。
- serviceDeploy コマンドを実行して、アプリケーションを格納するインストール可能な EAR ファイルを作成します。
- サーバー・ノード上にアプリケーションをインストールします。
- オプション: ほかのサービス・モジュール内のサービス・コンポーネントを呼び出す場合は、呼び出し元とそれに対応するサービス・コンポーネント間のワイヤーを構成します。
このインフォメーション・センターの"管理"セクションに、ワイヤーの構成についての説明があります。
コンポーネントの開発例
コンポーネントの開発例
この例では、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);
}
次の作業
サービスを起動します。