1.2.11. アグリゲーションサービスの開発

複数のWebサービスを束ねて、1つのWebサービスとして見せる「 アグリゲーションサービス」の構築について紹介します。

1.2.11.1. アグリゲーションサービスとは


図1.2.11.1-1

アグリゲーションサービスは、それ自身がユーザに提供するWebサービスのコンテンツを実現するために、 自分自身以外の複数のサービスを利用します。アグリゲーションサービス内部で動いているビジネスロジックでは、他のWebサービスのクライアントが複数動くことになります。アグリゲーションサービスを開発する時は、まず、アグリゲーションサービスから利用したいWebサービスのクライアントを作成し、それらを組み合わせたビジネスロジックを構築します。次に、通常のWebサービス作成手順で作成したビジネスロジックをWebサービス化します。

Memo
WebOTX Enterprise Service Bus(オプション製品)を使うと、複雑なコーディングをすることなく、アグリゲーションサービスを構築することができます。

1.2.11.2. アグリゲーションサービスの構築手順

ここでは、「aggregation」サンプルの作成方法を例に、アグリゲーションサービスの構築手順を説明します。
「aggregation」サンプルは、アグリゲーションサービスから2つのWebサービスにアクセスし、それによって得られた結果をクライアントに返すシンプルな構成です。2つのWebサービスは、文字列を受け取り、その文字列にWebサービス固有の文字列を付加して返す単純なものです。アグリゲーションサービスは、2つのWebサービスそれぞれのURLと、それぞれのWebサービスに渡す文字列を引数としてクライアントから受け取り、2つのWebサービスから返ってきた値を「Info」というJavaBeanに格納してクライアントに返却します。
ビジネスロジックの作成1
1つ目のWebサービスで動かすビジネスロジックを作成します。サンプルでは、「sample1」というプロジェクトで、1つ文字列を受け取り、それに文字列を付加してから返却するという処理が実装されています。また、結果として「sample1.jar」ファイルを作成しています。
ビジネスロジックの作成2
2つ目のWebサービスで動かすビジネスロジックを作成します。サンプルでは、「sample2」というプロジェクトで、1つ文字列を受け取り、それに文字列を付加してから返却するという処理が実装されています。また、結果として「sample2.jar」ファイルを作成しています。
Webサービスの作成1
Webサービス作成ウィザードで、1つ目のビジネスロジックをWebサービス化します。また、WARもしくはEJB-JAR形式のアーカイブを作成し、Webサービスを配備します。さらに、プロジェクトに生成されているクライアントをアグリゲーションサービスのビジネスロジックで利用するために、「src」フォルダ部分のみを指定してJARアーカイブを作成します。サンプルでは、「sampleservice1」プロジェクトに作成しており、結果として「sample1.war」と「sampleservice1.jar」を作成しています。
Webサービスの作成2
Webサービス作成ウィザードで、1つ目と同様に2つ目のビジネスロジックをWebサービス化します。サンプルでは、「sampleservice2」プロジェクトに作成しており、結果として「sample2.war」と「sampleservice2.jar」を作成しています。
アグリゲーションサービスのビジネスロジック作成
2つのWebサービスのクライアントを作成し、それらを呼び出して使用しながらアグリゲーションサービスのビジネスロジックを作成します。サンプルでは、「aggregation」プロジェクトに「sampleservice1」と「sampleservice2」を取り込んでそれらをマージするコードを作成しており、結果として「aggregation.jar」を作成しています。なお、アグリゲーションサービスのビジネスロジックを作るために作成するプロジェクトには、Webサービスのクライアントをコンパイル・実行するためのライブラリを追加してください。詳細は、[1.2.6. Webサービスクライアントの作成]を参照してください。
アグリゲーションサービスのWebサービス作成
Webサービス作成ウィザードで、アグリゲーションサービスのビジネスロジックをWebサービス化します。サンプルでは、「AggregationService」プロジェクトを作成しており、結果として「aggregation.war」を作成しています。
アグリゲーションサービスの配備とクライアントの実行
アグリゲーションサービスを配備し、アグリゲーションサービスのプロジェクトに生成されているクライアントを実行します。