2009-04-13 4 views
4

Мы отслеживаем некоторые проблемы с памятью в нашем приложении, и у нас есть видимость размеров наших сессий, где проблема кажется. Это влияет только на определенные сеансы, в которых они, похоже, выходят из-под контроля, и мы хотели бы иметь возможность недействительными этих сеансов более или менее «вручную», чтобы вернуть эту память. Есть ли способ сделать это через JMX? Мы используем JBoss 4.5.2.Возможно ли аннулировать отдельную сессию в JBoss через JMX?

Заранее спасибо.

ответ

7

Ответ да, вы можете.

--this получает веб-модуль MBeans загружены в JBoss--

/opt/lib/jboss-4.2.3.GA/bin/twiddle.sh -s <--ServerIP-->:1099 query 'jboss.web:*' | grep "type=Manager"

--Once у вас есть, что вы можете получить активные сеансы от MBean-- что

/opt/lib/jboss-4.2.3.GA/bin/twiddle.sh -s 172.16.0.216:1099 invoke "<--MBean-->" listSessionIds

- И наконец, после того, как у вас есть этот список, вы можете выбрать сессию процентов и ее срок действия -

/opt/lib/jboss-4.2.3.GA/bin/twiddle.sh -s <--ServerIP-->:1099 invoke "<--MBean-->" expireSession <--SessionID-->

Вы заменили бы < --ServerIP -> с ip-сервером, связанным с ... он не обязательно должен быть локальным. Это можно запустить удаленно, если у вас есть доступ к порту 1099.

< --MBean -> будет заменен одним из результатов первого запроса.

< --SessionID -> будет заменен одним из идентификаторов сеанса из второй команды.

Также вы должны были бы заменить /opt/lib/jboss-4.2.3.GA/bin/twiddle.sh с расположением twiddle на вашем компьютере. Он включен в JBoss.

+0

Я хотел бы сделать то же самое, но из класса Java. Вот связанный с этим вопрос: http://stackoverflow.com/questions/17724004/how-to-invalidate-selected-session-programmatically. Можете ли вы взглянуть? Я был бы очень признателен. – pWoz

0

Спасибо Ichorus. Ваше решение помогло мне хотя бы каким-то образом увидеть все активные сеансы на сервере в любой момент времени.

Btw ... Вот несколько вещей, необходимых перед запуском twiddle.sh Убедитесь JAVA_HOME и JBOSS_HOME установлены в среде и убедитесь, что JBOSS_CLASSPATH либо не установлен, либо имеет все эти библиотеки, приведенные в twiddle.sh. т.е. {JBOSS_HOME} \ client \ jbossall-client.jar; {JBOSS_HOME} \ client \ getopt.jar; {JBOSS_HOME} \ client \ log4j.jar; {JBOSS_HOME} \ Lib \ JBoss-jmx.jar

Другое мудрое вы столкнетесь с исключениями ClassNotFound

Sudheer