ウェブアプリケーションでセッション数をカウントするためにSessionListener
を実装しました。私はsetMaxInterval(60)
と私の問題は次のとおりです:セッションが期限切れの場合、セッションカウンタは0に設定され、再びWebページ上をナビゲートし始めると、セッションカウンタは増加しません。何故なの?Java/JSP/Sessions
public class SessionListener implements HttpSessionListener {
static int counter = 0;
public void sessionCreated(HttpSessionEvent e)
{
HttpSession s = e.getSession();
s.setMaxInactiveInterval(60);
counter++;
synchronized(s.getServletContext())
{
s.getServletContext().setAttribute("allConnections", counter);
}
}
public void sessionDestroyed(HttpSessionEvent e)
{
HttpSession s = e.getSession();
counter--;
synchronized(s.getServletContext())
{
s.getServletContext().setAttribute("allConnections", counter);
}
}
はその後、各JSPはセッション固有のオブジェクトのカウンタ変数は、(あなたは属性としてセッションオブジェクトに格納しているためであるapplication.getAttribute("allConnections")
を大幅により正確に答えることに役立つだろう。 –
元のコードが私に役立ちました。私はデバッグ行を追加してコンソールに出力しました。私は2つの方法でカウンターの価値を印刷しました。また、非アクティブ間隔を6秒に変更しました。そうすれば、コンソールを見て、カウンターがすぐに上下に移動するのを見ることができます。デスクトップ上に3種類のブラウザ(IE、Chrome、Firefox)を使用しました。あなたのコードは大丈夫です。 – rickz
私はあなたのコードを別の方法で1つのブラウザでテストしました。それはうまく動作します。私は私のデスクトップ上でJSPへのショートカットを作った。私はそのページを閲覧し、すぐにブラウザをシャットダウンしました。私は同じことを何度も繰り返しました。 – rickz