3

Xpage でアクティブなセッションの数を取得するにはどうすればよいですか。マネージド Bean を使用しようとしていますが、奇妙な文字列が返されます。簡単なコードは次のとおりです。

javax.servlet.http.HttpSessionEvent をインポートします。
javax.servlet.http.HttpSessionListener をインポートします。

public class SessionCounterListener は HttpSessionListener を実装します {

  private static int totalActiveSessions;

  public static int getTotalActiveSessions(){
    totalActiveSessions を返します。
  }

  public void sessionCreated(HttpSessionEvent arg0) {
    totalActiveSessions++;
    System.out.println("sessionCreated - 1 つのセッションをカウンターに追加");
  }

  public void sessionDestroyed(HttpSessionEvent arg0) {
    totalActiveSessions--;
    System.out.println("sessionDestroyed - カウンターから 1 つのセッションを差し引く");
  }
}

私はここからこれを手に入れまし。しかし、 を呼び出すとSessionCounterListener.getTotalActiveSessions()、0 しか返されません (誰かがログインしているかどうかに関係なく)。

時間があれば、ここで私のテスト データベースをチェックできます。

私を助けてください。どうもありがとう!

4

1 に答える 1

6

必要に応じて動作させるには、セッション リスナーをアプリケーションに挿入する必要があります。そうしないと、sessionCreated/sessionDestroyed メソッドが呼び出されず、常に 0 が返されます。ただし、XPage と「従来の」JSF にはいくつかの違いがあります。ここを見てください:

http://www.openntf.org/projects/pmt.nsf/66d9103768cc2fed85256c59006b5433/00a38cdf382f4893862578b80082dd15!OpenDocument

または、XSP Starterkitの内部を見てください。

編集:

セッション リスナーを追加するには、次の手順を実行します。

  1. Java パースペクティブに切り替える
  2. 「Code/Java」フォルダ内に「META-INF」フォルダを作成
  3. この META-INF フォルダーに、「services」フォルダーを作成します。
  4. 「services」フォルダーに、「com.ibm.xsp.core.events.SessionListener」という名前のファイルを作成します。
  5. このファイルに、クラスの完全な名前を追加します: package.SessionCounterListener

これで、セッション リスナーがアクティブになります。

于 2012-06-25T04:16:49.340 に答える