2009-07-10 10 views
6

Próbuję użyć interfejsu API JMX, aby uzyskać aktywne liczniki sesji dla aplikacji internetowej.Uzyskiwanie aktywnych liczenia sesji za pomocą interfejsu JMX (Java Management Extensions)

  1. Czy można uzyskać dostęp do tego rodzaju informacji za pomocą interfejsu API JMX?
  2. Jeśli tak, jak wiarygodne byłoby?
  3. Dowolny przykład kodu, jak to zrobić?

Czytałem samouczek i dokumentację JMX, ale dają mi przegląd tego, czym jest ta technologia. Po prostu nie mogę dokładnie wskazać tego, czego potrzebuję.

Odpowiedz

5

Możesz to zrobić, używając programu JConsole lub JVisualVM po skonfigurowaniu serwera aplikacji do ujawnienia portu JMX. Nie wspomnisz, który serwer aplikacji używasz, ale w przypadku Tomcat, opisano go tutaj: http://tomcat.apache.org/tomcat-5.5-doc/monitoring.html. Po nawiązaniu połączenia z narzędziem JConsole Tomcat ujawnia komponent MBean, który zawiera informacje o sesji, ale to zależy od używanego kontenera.

+1

pytanie tagged „JBoss”, więc jest to Tomcat, JBoss, ale smak tego. Prawdopodobnie nie będzie mieć standardowej warstwy JMX Tomcat. – skaffman

2

Aby śledzić sesje, można użyć numeru HttpSessionListener. Jeśli chcesz odsłonić aktywne sesje za pośrednictwem JMX, możesz zarejestrować MBS i wywołać ją z innych aplikacji (zobacz dokumentację JMX).

1

JBoss już udostępnia aktywny licznik sesji za pośrednictwem JMX, ale tylko na całym serwerze, a nie na aplikację webową. Jeśli używasz tylko jednej aplikacji internetowej, powinno to być dla Ciebie.

Przejdź do konsoli JMX na porcie 8080 i znajdź wpis o nazwie host=localhost,path=/,type=Manager. Wewnątrz znajdziesz pozycję aktywnej liczby sesji.

0

Odpowiedź udzielona przez skaffman jest bardzo pomocne, ale chciałbym zmienić że JBoss jest w stanie dać Ci sesje na webapp szukając:

host = localhost, path =/your_webapp_context, type = Menedżer

(zastąpić your_webapp_context z kontekstem webapp jesteś zainteresowany ...)

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

Hm, na Tomcat 7, który nie działa. Ale 'Catalina: type = Manager, context =/NAME_OF_APP, host = localhost' – knalli