是否可以通过JMX使JBoss中的单个会话无效?

时间:2009-04-13 14:19:58

标签: java jboss session jmx

我们正在跟踪应用程序中的一些内存问题,并且我们可以看到问题似乎存在的会话大小。它只会影响某些会话,它们似乎会失控,并且我们希望能够或多或少地“手动”使这些会话无效以回收该内存。有没有办法通过JMX做到这一点?我们正在使用JBoss 4.5.2。

提前致谢。

2 个答案:

答案 0 :(得分:7)

答案是肯定的,你可以。

- 这会在JBoss中加载Web模块MBean -

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

- 一旦你有了,你可以从那个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-->

您将替换&lt; - ServerIP - &gt;与服务器绑定的IP ...它不一定是本地的。只要您有权访问端口1099,就可以远程运行。

&LT; - 的MBean - &GT;将替换为第一个查询的结果之一。

&LT; - 的SessionID - &GT;将替换为第二个命令中的一个会话ID。

您还可以将/opt/lib/jboss-4.2.3.GA/bin/twiddle.sh替换为机器上旋转的位置。它包含在JBoss中。

答案 1 :(得分:0)

谢谢Ichorus。您的解决方案至少帮助我在任何给定时间查看服务器上的所有活动会话。

顺便说一句......在运行twiddle.sh之前,需要做以下几件事 确保在环境中设置了JAVA_HOME和JBOSS_HOME 并且确定JBOSS_CLASSPATH未设置或者在twiddle.sh.ie {JBOSS_HOME} \ client \ jbossall-client.jar; {JBOSS_HOME} \ client \ getopt.jar; {JBOSS_HOME} \ client \ log4j中提供了所有lib。罐; {JBOSS_HOME} \ lib中\的jboss-jmx.jar

另外,你会遇到ClassNotFound异常

Sudheer