J'ai un serveur Java. Je veux pouvoir me connecter avec un client JMX. Je fais ceci:Je ne peux pas obtenir le serveur Java JMX à lier à 127.0.0.1 seulement!
JMXServiceURL jmxUrl = new JMXServiceURL(null,null,JMX_PORT);
JMXConnectorServer jmxRemoteServer;
jmxRemoteServer=JMXConnectorServerFactory.newJMXConnectorServer(jmxUrl, jmxEnvironment, server);
jmxRemoteServer.start();
Cela fonctionne. Je peux lancer JConsole et me connecter à JMX_PORT sur ma machine et de jolis graphes apparaissent.
Il y a un problème. Cela provoque le serveur JMX à lier à JMX_PORT sur toutes les interfaces. Je veux l'avoir lié à 127.0.0.1 seulement. Sinon, c'est un problème de sécurité pour moi.
Selon la documentation, JMXServiceURL jmxUrl = new JMXServiceURL(null,null,config.getJmxRemotePort());
doit créer un JMXServiceURL avec le protocole par défaut (jmxmp) et localhost. J'ai essayé de lui donner "127.0.0.1" explicitement comme une adresse à lier, et cela n'a pas fonctionné non plus.
Le serveur JMX Java se lie à toutes les adresses IP et refuse de se lier à 127.0.0.1 uniquement.
Semble que -Djmx.remote.server.address.wildcard = false pourrait faire l'affaire pour le forcer à se lier à une adresse IP: http://blog.markfeeney.com/2010/10/jmx-through-ssh -tunnel.html – user589545
Juste pour que tout le monde le sache, toutes mes recherches m'ont amené à croire qu'il n'est pas possible de lier JMX à une seule adresse IP particulière. Cela les lie tous. –
Si vous utilisez RMI comme protocole, veuillez vous référer à cette URL: http://dev.303.se/development/95/limiting-rmi-to-127-0-0-1/ – avis