2009-04-13 2 views
4

Nous recherchons des problèmes de mémoire dans notre application et nous avons une visibilité sur la taille de nos sessions où le problème semble être. Cela n'affecte que certaines sessions où elles semblent exploser et nous aimerions avoir la possibilité d'invalider ces sessions plus ou moins "à la main" pour récupérer cette mémoire. Existe-t-il un moyen de le faire via JMX? Nous utilisons JBoss 4.5.2.Est-il possible d'invalider une session individuelle dans JBoss via JMX?

Merci d'avance.

Répondre

7

La réponse est oui, vous pouvez.

--Ce obtient le MBeans module web chargées dans JBoss--

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

--once vous que vous pouvez obtenir les sessions actives de cette

MBean--

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

- Et enfin, une fois que vous avez cette liste, vous pouvez choisir la session d'intérêt et l'expirer--

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

Vous devez remplacer < --ServerIP -> par l'adresse IP sur laquelle le serveur est relié ... il n'est pas nécessaire d'être local. Cela peut s'exécuter à distance tant que vous avez accès au port 1099.

--MBean -> sera remplacé par l'un des résultats de la première requête. --SessionID -> serait remplacé par l'un des identifiants de session de la deuxième commande.

Vous pouvez également remplacer /opt/lib/jboss-4.2.3.GA/bin/twiddle.sh par l'emplacement de la règle sur votre machine. Il est inclus dans JBoss.

+0

Je voudrais faire la même chose, mais de la classe Java. Voici la question connexe: http://stackoverflow.com/questions/17724004/how-to-invalidate-selected-session-programmatically. Pouvez-vous jeter un coup d'oeil? Je serais très apprécié. – pWoz

0

Merci Ichorus. Votre solution m'a aidé avec au moins un moyen de voir toutes les sessions actives sur le serveur à un moment donné.

... BTW Voici quelques choses nécessaires avant d'exécuter twiddle.sh Assurez-vous JAVA_HOME et JBOSS_HOME sont définies dans l'environnement et assurez-vous JBOSS_CLASSPATH est soit pas défini ou a toutes les libs données dans twiddle.sh. {JBOSS_HOME} \ client \ jbossall-client.jar; {JBOSS_HOME} \ client \ getopt.jar; {JBOSS_HOME} \ client \ log4j.jar; {} JBOSS_HOME \ lib \ jboss-jmx.jar

D'autres sages vous courriez dans des exceptions ClassNotFound

Sudheer

Questions connexes