会話を実装する

このトピックでは、会話をサポートする Web サービスの構築に関する情報を提供します。会話は、WebLogic Server でサービスのステート関連データを維持し、サービス、クライアント、およびリソース(他のサービスなど)の間の通信を相関させることができるようにする技術の一要素です。

非同期のサービス、または単一リクエストでクライアントとの通信が複数に及ぶサービスなど、あらゆるサービス設計で会話をサポートすることを検討してください。WebLogic Server では、会話をサポートするサービスはサポートしないサービスとは異なる方法で扱われます。会話を開始するようにマークされたサービスの処理がクライアントから呼び出されると、WebLogic Server では会話コンテキストを作成します。そのコンテキストは、サービスへの呼び出しとサービスからの呼び出しを相関させたり、ステート関連データを保持したりするために使用します。

会話コンテキストについて

コンテキストは、会話で提供されるメリットのカギとなります。概念的に言うと、複数の関連する 1 つの Web サービスへの呼び出しまたは 1 つのサービスからの呼び出しは、同じ初期リクエストに関連しているという理由で同じコンテキストに属します。WebLogic Workshop では、会話を使用することでこの概念的な現実をサポートするサービスを容易に構築できます。

会話が開始されると、WebLogic Server では以下のことが行われます。

会話 ID、永続データ、アイドル時間、存続期間といった各情報は、会話のコンテキストの一要素です。特に会話 ID は、Web サービスが通信に利用する XML メッセージでクライアントに渡されます。会話 ID は、リソースの呼び出しでも渡されます。それ以降の Web サービスに対する各会話呼び出しでは、会話 ID は呼び出しを適切な会話コンテキスト(言い換えると、サービスの適切なインスタンスと、それが現時点で保持しているステート)と関連付けるために使用します。

会話コンテキストに関する注意事項

会話をサポートするサービスを構築するときには、会話の以下の特性に注意してください。

以上の注意事項は、サービスの内部メソッド(処理ではなくしたがって会話メソッドにはならない)および他の Web サービスでエクスポーズされたメソッドには関係ありません。

会話のメソッドとコールバックを実装する

会話のサポートの追加は、通常は、会話フェーズ属性(後述)でメソッドおよびコールバックにマークを付けるだけで済みます。とは言っても、会話で使用するようにマークを付けるメソッドおよびコールバック ハンドラのコードを記述するときには、以下の事項に注意する必要があります。

会話のフェーズ属性を適用する

メソッドまたはコールバックに会話のフェーズ属性を適用すると、そのメソッドまたはコールバックは会話内で役割があるものとして識別されます。属性は、デザイン ビューでプロパティ ペインを使用して適用できます。対話のフェーズ プロパティを設定すると、次のような対応するタグがサービスのソース コードのメソッドまたはコールバックの宣言の直前に挿入されます。

@jws:conversation phase="start"

会話のフェーズ属性に設定できる値は以下のとおりです。

会話のフェーズ属性で会話のサポートを追加する方法の詳細については、会話のサポートを追加するにはを参照してください。

会話フェーズの設定に関する注意事項

コントロールがどのように実装されたのかを知っていない限りは、コントロールでエクスポーズされたメソッドおよびコールバックに会話のフェーズ属性を適用しないでください。

言い換えると、通常は、デザイン ビューの右側に表示されるアイテムの会話フェーズ属性は変更しません。別のサービスなどのリソースに対応するコントロール(CTRL)ファイルをインポートする場合、デザイン ビューにおけるそのイメージは会話サポートの有無および方法を示します。コントロールは単にリソースそれ自体のプロキシに過ぎないので、その会話サポートを「変更」すると予期せぬ動作が生じる場合があります。

関連トピック

JwsContext インタフェース

@jws:conversation タグ