3 votes

Comment utiliser un JMXAuthenticator personnalisé ?

Je dois authentifier les clients JMX par rapport aux entrées d'une base de données. J'ai donc écrit une implémentation personnalisée de JMXAuthenticator.

Au démarrage de mon application, je peux accéder aux MBeans à l'aide de JConsole via le "processus local". Mais lorsque j'essaie d'y accéder en tant que processus distant en utilisant l'url 'service:jmx:rmi:///jndi/rmi://localhost:10999/jmxrmi', JConsole affiche un message indiquant que 'La connexion à service:jmx:rmi:///jndi/rmi://localhost:10999/jmxrmi n'a pas réussi'.

Voici le code côté serveur pour démarrer le MBeanServer et le JMXConnectorServer. Quelqu'un a-t-il une idée de ce que je fais mal ?

Merci d'avance,

Thomas

final MBeanServer mbs = MBeanServerFactory.createMBeanServer("MyDomain");
final HashMap<String, Object> environment = new HashMap<String, Object>();
final JMXAuthenticator authenticator = new JMXAuthenticatorImpl();
environment.put(JMXConnectorServer.AUTHENTICATOR, authenticator);

final JMXServiceURL serviceURL = new JMXServiceURL("rmi", "localhost", 10999);

final JMXConnectorServer connectorServer = JMXConnectorServerFactory.newJMXConnectorServer(serviceURL, environment, mbs);

connectorServer.start();

2voto

woelfle Points 293

Il semble que le problème soit dû au fait que je n'ai pas créé le registre RMI avant de créer le nouveau JMXConnectorServer.

Insertion de

LocateRegistry.createRegistry(port);

avant de créer le JMXConnectorServer a résolu le problème.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X