Web サービスを使用する : 実社会の例

以下のトピックでは、架空の会社が直面する問題について説明し、Web サービス ソリューションの概略を示します。

シナリオ

銀行や金融会社のような他のクライアントのために、クレジットの申し込みを評価する会社に勤務していると想定してみましょう。クライアントは、申込者のクレジット履歴と信用価値を評価するように、その会社に依頼します。会社では、申込者の信用価値を調査および評価した後、クライアントに信用価値のスコアを返します。その結果、クライアントは申込者へクレジットを与えるかどうかを決定します。

クレジットの評価プロセスには 3 段階あります。最初に、社内の破産情報データベースで申込者をチェックします。このデータベースは会社で保持しているもので、会社のイントラネットからアクセスできます。2 番目に、申込者のクレジット履歴を外部のベンダから取得します。外部のベンダは、申込者のクレジット カード情報(所持カード数、カードごとの利用限度額など)を提供する Web サービスを構築しています。最後に、2 番目までの段階で取得された情報が、クレジットを評価する式に渡されます。この式は、申込者の信用リスクの大きさを示すクレジット スコアを返します。この例の場合、式は、他のソフトウェア アプリケーションに組み込まれた EJB(エンタープライズ JavaBean)として既に実装されている操作です。

問題

上記の問題のシナリオには、以下の 3 つのリソースが含まれています。

  1. 破産データを提供する社内データベース

  2. クレジット カード履歴を提供する別の Web サービス

  3. クレジットの評価式

評価プロセスに一貫性を持たせて自動化するため、この会社では、外部および内部で使用可能な関連リソースのすべてを結び付けるクレジット評価プロセスを構築しようとしています。WebLogic Workshop は以下の 2 つの点で優れているため、この問題に対応するための理想的なツールです。(1) Workshop を使用すると、さまざまな外部リソースにアクセスして単一の Web サービスに簡単に統合できます。(2) Workshop では、他のユーザやソフトウェア アプリケーションに向けて、Web サービスをネットワーク上で簡単に公開できます。前述の特定の問題に取り組む場合、Web サービス開発者は WebLogic Workshop を使用して以下のようなソリューションを構築できます。

ソリューション

Web サービス開発者はまず、Web サービスのどのような操作を外部に公開するかを決定します。この例の場合、特定のクレジット申込者の情報を収集および評価することが目的なので、開発者は Web サービスの単一の操作を公開することを決定した上で、申込者の社会保障番号をパラメータとして取り、申込者の信用価値のスコアを返す単一のメソッドを作成します。次に、開発者は Web サービスと外部リソースの間の接続を確立します。

コントロール

リソース間の接続を確立するために、開発者は WebLogic Workshop のコントロールというツールを使用します。このツールでは Web サービスと外部リソース間の接続を管理します。開発者は 3 つの別々のコントロールを作成します。1 つは企業内データベースからデータを取得するコントロール、もう 1 つはクレジット カード履歴を提供する Web サービスからデータを取得するコントロール、さらに信用価値のスコアを算出する EJB へアクセスするコントロールです。これらのコントロールを配置したら、開発者は Java コードを記述して 3 つのコントロールを調整し、最終的なクレジットのスコアを会社のクライアントに渡します。

ユーザ インタフェース

一般的に Web サービスには高度なユーザ インタフェースは必要ないため、開発者はユーザ インタフェースの開発に時間をかける必要はありません。通常、Web サービスでは、人が直接アクセスするのではなく、他のソフトウェア アプリケーションが Web サービスにアクセスするために設計された、簡単なユーザ インタフェースを備えています。前述の特定の Web サービスの場合、Web サービスとユーザ(人)の間にインタフェースを提供する高度な GUI はありません。代わりに、Web サービスのクライアントでは、Web サービスへアクセスするためのユーザ インタフェースの作成を担当します。

ネットワーク レイテンシ

Web サービスはネットワーク経由のデータ転送に関連しているため、Web サービス開発者はネットワーク レイテンシの問題に対応する必要があります。レイテンシとは、要求が処理されてネットワーク経由で返信されるまで、クライアントが待機しなければならない時間のことです。ネットワーク レイテンシはさまざまな要因に左右されますネットワークは 1 日のある時間帯にトラフィックが増大することがあり、その結果ネットワーク レイテンシが大きくなります。また、Web サービスでは、人が介在してデータを入力したりプロセス中のある手順を許可したりするまで、プロセスが完了しない場合もあります。

Web サービス開発者は、非同期 Web サービスを構築することで、ネットワーク レイテンシに対処できます。非同期 Web サービスでは、Web サービスが処理を行い要求されたデータを返すまで、クライアント アプリケーションが停止および待機する必要がありません。代わりに、非同期 Web サービスは、要求を受信したという単純な確認応答をクライアントにすぐに返します。その後、Web サービスは完全な応答を含むコールバックをクライアントに送信します。非同期 Web サービスの詳細については、非同期性を利用して長期間の処理を実現するを参照してください。

クライアント アプリケーション

開発者は Web サービスにアクセスするクライアント アプリケーションについても考慮する必要があります。Web サービスを呼び出すクライアント アプリケーションには、JSP ページ、Java アプリケーション、VisualBasic アプリケーション、他の Web サービス、または XML メッセージを使用して通信できる何らかのソフトウェア アプリケーションが考えられます。前述の Web サービスの場合、開発者は、Web サービスを呼び出す可能性のあるクライアントの種類や、その機能を考慮する必要があります。Web サービスのクライアントがコールバックをサポートしない場合、開発者はポーリング インタフェースを用意して、そのようなクライアントが Web サービスにアクセスできるようにします。ポーリング インタフェースは、Web サービスがクライアントへの応答を完了するまで、クライアントが定期的に Web サービスを呼び出すものです。Web サービスが応答を完了すると、応答はコールバックとしてではなく、戻り値としてクライアントに返されます。ポーリング インタフェースの詳細については、コールバックの代わりにポーリングを使用するを参照してください。コールバックの詳細については、コールバックを使用してイベントのクライアントに通知するを参照してください。

以上のような Web サービスを構築するための段階的な手順については、チュートリアル : 初めての Web サービスを参照してください。