1

私が作成しているJavaJSPWebアプリケーションの場合、セッション内にオブジェクトを保持します。サイトにサインオンしている複数のユーザーがいて、それぞれが独自のセッションに参加している場合は、すべてのセッション(開始時刻に関係なく)を同じ日の深夜に期限切れにします。

例えば:

セッションオブジェクト1:作成日(2012-12-11 8:45)、有効期限(2012-12-12 0:00)

セッションオブジェクト2:作成日(2012-12-11 12:00)、有効期限(2012-12-12 0:00)

など、毎日のセッションが無効になります。

私が持っていたいくつかのアイデアは

  • 有効期限が切れるまでのセッションの時間を(次の深夜-現在の日付)に設定しますが、これを段階的に行う能力には完全には自信がありません。
  • ある種のサーバータスクをスケジュールして、毎日深夜にすべてのセッションをクリアします

これを行うための最良の方法は何ですか?

4

2 に答える 2

3

私が見る最良の方法はオプション2です

  1. HttpSessionListener を実装します - http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpSessionListener.html - これは、コールバック メソッド sessionCreated() および sessionDestroyed を使用して、コレクション内のアクティブなセッションを収集するのに役立ちます().
  2. TimerTask - http://docs.oracle.com/javase/6/docs/api/java/util/TimerTask.htmlを使用して、毎晩実行し、収集したすべてのアクティブなセッションを閉じます。

オプション 1 も可能ですが、新しいセッションを作成するたびに正確なタイムアウトを設定する必要があるため、少し予測できない場合があります。

楽しむ !

于 2012-12-11T10:17:51.613 に答える
0

当日の終わりにセッションの有効期限を設定します。

Calendar today = Calendar.getInstance();
today.set(Calendar.HOUR_OF_DAY, 23);
today.set(Calendar.MINUTE, 59);
today.set(Calendar.SECOND, 59);
Date expiration = today.getTime();
于 2012-12-11T10:09:50.317 に答える