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

Ich*_*rus 4 java session jboss jmx

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

提前致谢.

Ich*_*rus 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-->

您将用服务器绑定的IP替换< - ServerIP - > ...它不必是本地的.只要您可以访问端口1099,就可以远程运行.

< - MBean - >将替换为第一个查询的结果之一.

< - SessionID - >将替换为第二个命令中的一个会话ID.

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