Получение активных сеансов считается с помощью API JMX (Java Management Extensions) - PullRequest
6 голосов
/ 11 июля 2009

Я пытаюсь использовать JMX API для получения активного числа сеансов для веб-приложения.

  1. Можно ли использовать JMX API для получения такого рода информации?
  2. Если да, то насколько надежным это будет?
  3. Какой-нибудь пример кода о том, как это сделать?

Я читал учебник и документацию по JMX, но они дают мне общее представление о технологии. Я пока не могу точно определить, что мне нужно.

Ответы [ 5 ]

5 голосов
/ 11 июля 2009

Вы можете сделать это, используя что-то вроде JConsole или JVisualVM, после того как вы настроите сервер приложений для предоставления порта JMX. Вы не упоминаете, какой сервер приложений вы используете, но для Tomcat он описан здесь: http://tomcat.apache.org/tomcat-5.5-doc/monitoring.html. Как только вы подключаетесь к JConsole, Tomcat предоставляет MBean, в котором есть информация о сеансе, но опять же это зависит от того, какой контейнер вы используете.

3 голосов
/ 26 мая 2011
ObjectName name = new ObjectName("Catalina:type=Manager,path=/NAME_OF_APP,host=localhost"); 
ManagementFactory.getPlatformMBeanServer().getAttribute(name, "activeSessions");
2 голосов
/ 11 июля 2009

Для отслеживания сеансов вы можете использовать HttpSessionListener . Если вы хотите предоставить активные сеансы через JMX, вы можете зарегистрировать mbean и вызывать его из других приложений (см. Документацию JMX).

1 голос
/ 12 июля 2009

JBoss уже выставляет счетчик активных сессий через JMX, но только на всем сервере, а не на веб-приложении. Если у вас используется только одно веб-приложение, то для вас это будет нормально.

Перейдите на консоль JMX через порт 8080 и найдите запись с именем host=localhost,path=/,type=Manager. Внутри вы найдете запись для счетчика активных сессий.

0 голосов
/ 16 марта 2010

Ответ, данный skaffman, весьма полезен, но я хотел бы откорректировать, что JBoss может дать вам сессии для каждого веб-приложения, ища:

хост = локальный, путь = / your_webapp_context, тип = менеджер

(замените your_webapp_context контекстом интересующего вас веб-приложения ...)

...