2009-07-10 19 views
6

JMX APIを使用して、Webアプリケーションのアクティブなセッション数を取得しようとしています。JMX(Java Management Extensions)APIでアクティブなセッション数を取得する

  1. このような情報を取得するにはJMX APIを使用できますか?
  2. はいの場合、どの程度信頼できるでしょうか?
  3. これを行う方法に関するサンプルコードはありますか?

私はJMXチュートリアルとドキュメントを読んできましたが、彼らは私に技術の概要を教えています。私は、私が必要とするものを正確に指摘することはできません。

答えて

5

これは、JMXポートを公開するようにアプリケーションサーバーを設定すると、JConsoleやJVisualVMのようなものを使用することで実現できます。使用しているアプリケーションサーバーについては言及していませんが、Tomcatの場合はhttp://tomcat.apache.org/tomcat-5.5-doc/monitoring.htmlと記載されています。 JConsoleに接続すると、Tomcatはセッション情報を持つMBeanを公開しますが、再び使用するコンテナによって異なります。

+1

を(...あなたが興味を持っているWebアプリケーションのコンテキストでyour_webapp_contextを置き換える)、それは、Tomcat、JBossのそれの味です。おそらく標準のTomcat JMX層はありません。 – skaffman

2

セッションをトラッキングするには、HttpSessionListenerを使用します。 JMXを介してアクティブなセッションを公開したい場合は、mbeanを登録して他のアプリケーションから呼び出すことができます(JMXドキュメントを参照)。

1

JBossはすでにJMX経由でアクティブセッション数を公開していますが、Webappではなく、サーバー全体でのみ公開しています。 1つのWebアプリケーションしか使用していない場合、それはあなたにとっては大丈夫です。

ポート8080でJMXコンソールに移動し、host=localhost,path=/,type=Managerというエントリを探します。その中には、アクティブセッション数のエントリがあります。

0

skaffmanによって与えられた答えは非常に便利ですが、私はJBossが探していることにより、あなたのWebアプリケーションごとのセッションを与えることができることを修正します:

ホスト= localhostを、パス=/your_webapp_context、タイプ=マネージャー

は、質問は「JBossの」タグ付けされ

3
ObjectName name = new ObjectName("Catalina:type=Manager,path=/NAME_OF_APP,host=localhost"); 
ManagementFactory.getPlatformMBeanServer().getAttribute(name, "activeSessions"); 
+2

Tomcat 7では動作しません。しかし、Catalina:type = Manager、context =/NAME_OF_APP、host = localhost' – knalli

関連する問題