典型的な非分散ソフトウェア アプリケーションでは、アプリケーション コンポーネント間で同期メソッドを使用します。同期メソッドの呼び出し側は、メソッドが復帰するまでそれ以降の実行がブロックされます。ただし、Web サービスはネットワークをまたがって動作します。Web サービスを使用するアプリケーションの分散的性質は、ときに非常に長時間に及ぶ予期できないレイテンシを生じさせます。つまり、特定の処理では時間がかかる可能性があるのです。Web サービスで表される一部のビジネス プロセスは、バックエンドで人間の対話を要する場合があるので、処理に数日かかることがあります。すべての Web サービスの対話が同期的だとしたら、未処理の処理がある各クライアントは許容できないほど長い時間そのホスト システムのリソースを消費することになります。
WebLogic Workshop は、非同期の Web サービスを構築しやすくする機能を備えてします。それらの機能を使用すると、結果を待つ間にクライアントで実行をブロックする必要のない Web サービスを設計できます。Web サービスのクライアントに結果を返す方法を複数の中から選ぶことができます。
この節に含まれるトピック
非同期 Web サービス
クライアントでリクエストを送信し、後で結果が準備できたときに Web サービスから通知を受けることができる Web サービスを構築できます。この場合は、コールバックを使用します。コールバックを受け入れることができないクライアントにポーリング インタフェースを提供することで非同期の Web サービスをシミュレートすることもできます(下記参照)。
コールバックを使用してイベントのクライアントに通知する
コールバックは、Web サービスのクライアントにイベントが発生したことを知らせるために使用します。たとえば、リクエストの結果が準備できたときにクライアントに通知することができます。
非同期メソッドを使用する
非同期のメソッドおよびコールバックはすぐに呼び出し側に復帰するので、呼び出し側の Web サービスまたはアプリケーションでは他の処理をその完了まで継続できます(非アクティブな状態であることも可)。その非同期性はメッセージ バッファを使用して実現されるので、非同期のメソッドおよびコールバックはバッファリングという言葉で表現されることもあります。メソッドおよびコールバックをバッファリングすると、Web サービスで高負荷に対応しやすくなります。
コールバックの代わりにポーリングを使用する
Web サービスのクライアントの中には、コールバックを処理できないクライアントもあります。コールバックは Web サービスからクライアントに送信されるメッセージであり、クライアントが動作する多くのシステムは要求していないのに送られてくるトラフィックをすべて拒否するようにコンフィグレーションされます。そのような環境で動作するクライアントが Web サービスを利用できるようにするには、代わりとしてポーリング インタフェースを提供します。ポーリング インタフェースでは、クライアントが定期的に呼び出して前のリクエストの結果が準備できているかを判断できる 1 つまたは複数のメソッドを提供します。
関連トピック
Web サービスの開発サイクル
会話を使用してステートを保持する
Conversation.jws サンプル