J'ai rassemblé des informations éparpillées sur le net, trouvées grâce aux conseils d'autres membres.
Le plus grand mal causé par JMX est (imo) le fait que JMX ouvre un deuxième port réseau alloué dynamiquement. Un pare-feu (comme iptables) le bloquera.
Solution pour tomcat sur linux :
utiliser tomcat 6.0.24 ou plus récent téléchargez catalina-jmx-remote.jar à partir des extras de apache tomcat (utilisez la fonction de navigation sur la page de téléchargement de tomcat) copiez-le dans le $CTALINA_HOME \lib
Cela vous permet de définir les deux ports utilisés par JMX
modifier la section Server dans votre server.xml
<Server port="8005" ..>
...
<Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener" rmiRegistryPortPlatform="9840" rmiServerPortPlatform="9841"/>
définir certaines variables d'environnement (par exemple dans setenv.sh)
CATALINA_OPTS="
-Djava.rmi.server.hostname=IP-TO-LISTEN
-Dcom.sun.management.jmxremote.password.file=$CATALINA_BASE/conf/jmxremote.password
-Dcom.sun.management.jmxremote.access.file=$CATALINA_BASE/conf/jmxremote.access
-Dcom.sun.management.jmxremote.ssl=false"
ceci active le contrôle d'accès pour JMX
jmxremote.access aura l'apparence suivante
monitorRole readonly
controlRole readwrite
fin jmxremote.password sera
monitorRole tomcat
controlRole tomcat
(juste de simples espaces)
redémarrer tomcat.
Maintenant, configurez le pare-feu sur le serveur (par exemple, iptables).
/etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 9840 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 9841 -j ACCEPT
et /etc/sysconfig/ip6tables
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 9840 -j ACCEPT
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 9841 -j ACCEPT
redémarrer iptables
C'est fait !
Utilisez maintenant VisualVM ou JConsole sur votre poste de travail pour établir une connexion à rmiRegistryPortPlatform, 9840 dans notre exemple.
S'il n'y a plus de pare-feu entre la station de travail et le serveur, cela devrait fonctionner.