2012-02-08 18 views
2

アクティブなセッションのリストを取得する必要があります。今、私はすべての新しいセッションをオーバーライドメソッドnewSession()に保存しています。このセッションは、セッションが無効にされたときに削除されていました。しかし、この方法には多くの問題がありました。この方法を理解する方法は非常に失礼なハックでした。もしあなたが別の方法を知っていれば、私は感謝します。あなたの答えのためにwicketのアクティブなセッションのリスト

更新

感謝(私は改札v1.5.4とTomcat v7.0.25を使用)が、私はWICKETセッション(WebSession)のリストを取得する必要があります。 WebSessionsとHttpSessionsの静的マップ(同期あり)でHttpSessionListenerを追加しました。この方法は私のものより優れていて、古い問題はありませんが、ハックのようにも見えます。(wicketセッションのリストを取得する方法はありますか?

+1

監視目的でリストが必要ですか?もしそうなら、いくつかのツールは助けてくれるでしょう:http://stackoverflow.com/questions/242958/best-tools-to-monitor-tomcat –

+0

@BorisPavlovićあなたは部分的にあなたが正しいです。監視ページが必要ですが、WebSessionの独自の実装を使用していますが、Tomcatのオブジェクトをwicketセッションオブジェクト – pushistic

答えて

6

代わりに単純なListener ?この

public class SessionCounterListener implements HttpSessionListener { 

    private static int totalActiveSessions; 

    public static int getTotalActiveSession(){ 
    return totalActiveSessions; 
    } 

    @Override 
    public void sessionCreated(HttpSessionEvent event) { 
    totalActiveSessions++; 
} 

    @Override 
    public void sessionDestroyed(HttpSessionEvent event) { 
    totalActiveSessions--; 
    } 
} 


<web-app ...> 
    <listener> 
    <listener-class>SessionCounterListener</listener-class> 
</listener> 
</web-app> 

の例では、 "Wicketのアクションで" ブックからhere

+2

+1に変換する方法はわかりませんが、 'totalActiveSessions'を同期させたり、' AtomicInteger'を使用するべきではありません。私は、サーブレットの仕様がセッションリスナーへの同時アクセスについて何も言わないと思います。 –

+1

おそらくあなたはおそらく@TomaszNurkiewicz、実際のアプリケーションではおそらくそれを同期させるでしょう:) –

+0

私はHttpSessionsのリストを保存しましたが、私はウィッケットセッション(WebSession)にそれらのセッションをどのように変換するのかわかりませんこのwicketsセッションのリストを取得する方法を見つけることができません – pushistic

1

もありますが別の解決策は、JMXを使用することですあなたが閲覧している場合:。

Catalina:type=Manager,context=/your_war_context,host=localhost 

未満操作listSessionIds()メソッドを見つけるでしょう。

関連する問題