Web サービスの有効期間を制御するには

Web サービスとクライアント間の複数のメッセージが互いに関連している場合、会話を使用してそれらのメッセージを関連付けることができます。会話を作成するには、クライアントからのメッセージを、会話を開始する、会話を続行する、会話を終了する、または会話にまったく参加しないメッセージとして識別します。

会話を開始するメソッドによって、クライアントに返される固有の識別子が作成されます。

continue メソッドとコールバックは、この識別子を使用してそれらのメッセージを start メソッドから保存された情報に関連付けます。Web サービスで必要な情報を蓄積するには、それだけの数の continue メソッドが必要です。

すべての処理が完了したら、finish メソッドによって固有の識別子がサーバの会話永続キャッシュから削除されます。  

メソッドが会話に参加する方法を設定するには

  1. デザイン ビューで、この会話を開始するメソッドをクリックします。

  2. プロパティ ペインで、会話プロパティを展開します。

  3. フェーズ属性のドロップダウン リストから、start を選択します。

  4. 会話を開始するメソッドごとに手順 1 から 3 を繰り返します。  

  5. 会話を続行するメソッドをクリックします。

  6. プロパティ ペインで、会話プロパティを展開します。

  7. フェーズ プロパティのドロップダウン リストから、continue を選択します。  

  8. 会話を続行するメソッドごとに手順 5 から 7 を繰り返します。

  9. 会話を終了するメソッドをクリックします。

  10. プロパティ ペインで、会話プロパティを展開します。

  11. フェーズ プロパティのドロップダウン リストから、finish を選択します。

  12. 会話を終了するメソッドごとに手順 9 から 11 を繰り返します。

会話は、JwsContext インタフェースの finishConversation() メソッドを呼び出すことによって実行時に終了させることもできます。このインタフェースは、デフォルト変数名 context でサービスが作成されたときに Web サービスに追加されています。サーバから会話を終了するには、ソース ビューで会話を終了する場所に次の行を追加します。

context.finishConversation();

会話は、conversation-lifetime プロパティの max-age 属性によっても終了します。デフォルトの会話期間は 1 日です。

会話の終了は、Web サービス メソッドの実行中は発生しません。会話の終了原因が、「終了」メソッドとして設定されたメソッドであるか、JwsContext.finishConversation の呼び出しであるか、会話の有効期間の経過であるかにかかわらず、会話が実際に終了するのは現在のメソッド呼び出しが実行された直後です。

会話のデフォルト有効期間を変更数するには

  1. デザイン ビューで、対象 Web サービスを選択します。

  2. プロパティ ペインで、conversation-lifetime プロパティを展開します。

  3. max-age 属性に、会話を保持する期間を入力します。

また、会話の最大アイドル時間またはサーバのメッセージ待ち時間を指定できます。

max-idle-time プロパティを変更するには

  1. プロパティ ペインで、conversation-lifetime プロパティを展開します。

  2. max-idle-time 属性に、メッセージの最長許容間隔を入力します。最大アイドル時間を使用しない場合は、デフォルトの 0 のままにします。

最長有効期間を超えて会話が存在する場合、または最長アイドル時間を超えてメッセージが受信されない場合、その会話はサーバのキャッシュから削除されます。

関連トピック

会話の有効期間を管理する

@jws:conversation-lifetime タグ

JwsContext.finishConversation() メソッド