概要 : 会話

単一のタスクで複数回クライアントと通信する Web サービスでは、会話によって通信が継続的に維持されます。また、非同期で通信する Web サービスでは、会話を使用して複数の非同期メッセージにまたがるステートを維持します。会話には、クライアントまたはリソース(別のサービスやデータ ソースなど)との複数の通信にわたってデータを維持することに伴う以下の 2 つの課題があります。

会話の仕組み

会話に参加する Web サービスは、WebLogic Server によって作成された特定のコンテキストの中で機能します。WebLogic Server では、このコンテキストの一部であるユニークな識別子を使用して、サービスのステートを保存し相互の関連付けを行います(つまり、サービス、そのクライアント、およびサービスで使用されるリソースの間の通信をトラッキングする)。

シリアライゼーションを通じたステートの永続性

ステートは、特定の時点での Web サービスの状態を表し、そのサービスが保持するデータで構成されます。Investigate サンプル Web サービス(チュートリアル : 初めての Web サービスで説明)を例に挙げます。このサンプルで、Investigate サービスはクライアントから納税者 ID を受け取り、その番号を使用してクレジット情報を収集します。納税者 ID は、必要に応じて取り出せるようにメンバー変数に格納されます。この場合の納税者 ID は、ステート関連データ(処理時のサービスの状態を構成するデータ)の例です。

ここで、サービスの動作しているコンピュータが突然に停止した状況を想像してみてください。納税者 ID がサービス インスタンスのメンバー変数のみに保持されているとしたら、納税者 ID はコンピュータの停止に伴ってインスタンスがメモリから消失したときに失われてしまいます。

サービスの呼び出しが会話の一部となるように指定すれば、そのような事態が起こってもステート関連データを維持できます。サービスの含まれる会話が開始されると、WebLogic Server ではサービスのステート関連データを追跡するためのコンテキストを作成します。サービスのコンテキストの一部であるデータは、シリアライゼーション(データをハードディスクに書き込むことができるプロセス)を通じて保持されます。

ユニークな識別子を通じて相関されたメッセージ

会話に参加するサービスに対して作成されたコンテキストに含まれるのは、メンバー変数に格納されるデータだけではありません。サービスが会話するクライアントの ID、およびそのクライアントとクライアントの初期リクエストで開始されたタスクを結び付ける情報も含まれます。Web サービスでは、同じクライアントおよび異なるクライアントからのクライアント リクエストに対応して数千のタスクが開始される可能性があります。通信が複数である場合、サービスでは数千に及ぶ可能性のあるどのリクエストにその応答が属しているのかを記憶する手段が必要になります。

タスクを処理するためのさまざまなアクションが元のリクエストと関連付けられている場合、それは相関の一例です。サービスの含まれる新しい会話ごとに、言い換えると新しいコンテキストごとに、WebLogic Server では会話 ID というユニークな識別子が生成されます。会話 ID は、元のリクエスト(およびそのクライアント)と、他の Web サービスとの以降の通信、データベースへのクエリ、および他のリソースとの交換を相関させるために使用します。それらの各アクションおよびステート関連データに対するその効果は、クライアントが元のリクエストと関連した応答を受信するように、会話 ID を使用して元のリクエストと相関させられます。

開始から終了まで

会話の存続期間で説明されているように、Web サービスの会話にはそれ自身の存続期間があります。会話は会話を「開始」するようにマークされたメソッドを使用してクライアントが Web サービスを呼び出したときに開始され、会話を「継続」するようにマークされたメソッドおよびコールバックを経由し、会話を「終了」するようにマークされたメソッドまたはコールバックの呼び出しで終了します。最初のメソッドの呼び出しで会話のコンテキストが作成され、それ以降の呼び出しでは会話が継続され、コンテキストが最新であり続けるように更新されたステート情報がシリアライズされます。最後の呼び出しで会話は終了し、WebLogic Server は Web サービスの代わりに保持していたリソースおよびステート データを解放するように求められます。

会話をサポートするサービスの構築方法

会話サポートの追加は、通常は、サービスの各処理(他のコンポーネントにエクスポーズするメソッドおよびコールバック)で適切なプロパティを設定するのと同じくらいの容易さで行えます。詳細情報およびいくつかある設計上の提案については、会話を実装するを参照してください。

会話のサポートを追加する手順については、会話のサポートを追加するにはを参照してください。また、チュートリアル : 初めての Web サービスでは、会話および他の WebLogic Workshop 技術が実践的に紹介されています。

会話を使用してテストする

会話をサポートする Web サービスをテストする場合、テスト ビューではメッセージ ログに会話 ID が表示されます。メッセージ ログでは、会話と関連付けられたアクションの分類も行われます。サービスを複数回テストするときには、ログをクリアするまで各テストがメッセージ ログに追加されます。テスト ビューを使用して会話をクリアすることもできます。

テスト ビューの詳細については、テスト ビューを参照してください。テスト ビューを使用する手順については、WebLogic Workshop のテスト ビューを使用して Web サービスをテストするにはを参照してください。

関連トピック

会話のサポートを追加するには

チュートリアル : 初めての Web サービス

会話を実装する