アクティブなセッションを取得するJMX(Java Management Extensions)APIでカウントされます
-
12-09-2019 - |
質問
JMX APIを使用して、Webアプリケーションのアクティブなセッションカウントを取得しようとしています。
- JMX APIを使用してこの種の情報を取得することは可能ですか?
- はいの場合、それはどれほど信頼できますか?
- これを成し遂げる方法に関するコードの例はありますか?
私はJMXのチュートリアルとドキュメントを読んでいますが、テクノロジーの概要を教えてくれています。まだ必要なものを特定することはできません。
解決
JMXポートを公開するようにアプリサーバーを構成すると、JConsoleやJVisualVMのようなものを使用してこれを達成できます。使用しているアプリサーバーについては言及していませんが、Tomcatについてはここで説明しています。 http://tomcat.apache.org/tomcat-5.5-doc/monitoring.html. 。 JConsoleに接続すると、Tomcatはセッション情報を持っているMbeanを公開しますが、使用するコンテナに依存します。
他のヒント
ObjectName name = new ObjectName("Catalina:type=Manager,path=/NAME_OF_APP,host=localhost");
ManagementFactory.getPlatformMBeanServer().getAttribute(name, "activeSessions");
セッションを追跡するには、使用できます httpsessionlistener 。 JMXを介してアクティブセッションを公開する場合は、MBEANを登録して他のアプリケーションから電話することができます(JMXドキュメントを参照)。
JBossは既にJMXを介してアクティブなセッションカウントを公開していますが、WebAppごとではなく、サーバー全体にわたってのみです。 WebAppが1つしか使用されていない場合は、それは問題ないはずです。
ポート8080のJMXコンソールに移動し、呼ばれるエントリを探します host=localhost,path=/,type=Manager
. 。その中には、アクティブなセッションカウントのエントリがあります。
Skaffmanからの答えは非常に役立ちますが、JBossがあなたにWebAppあたりのセッションをお探しのようにすることができると修正します。
host = localhost、path =/your_webapp_context、type = manager
(興味のあるWebAppのコンテキストにYour_webapp_contextを置き換えます...)