Как использовать пользовательский JMXAuthenticator - PullRequest
3 голосов
/ 25 мая 2011

Я должен аутентифицировать клиентов JMX по записям в базе данных. Поэтому я написал собственную реализацию JMXAuthenticator.

При запуске приложения я могу получить доступ к MBeans с помощью JConsole через «Локальный процесс». Но когда я пытаюсь получить доступ к нему как к удаленному процессу, используя url 'service: jmx: rmi: /// jndi / rmi: // localhost: 10999 / jmxrmi', JConsole показывает сообщение, в котором говорится: «Подключение к сервису: jmx: rmi: /// jndi / rmi: // localhost: 10999 / jmxrmi не удалось. '

Ниже приведен код на стороне сервера для запуска MBeanServer и JMXConnectorServer. Кто-нибудь знает, что я делаю не так?

Заранее спасибо,

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();

1 Ответ

2 голосов
/ 30 мая 2011

Кажется, проблема в том, что я не создал реестр RMI до создания нового JMXConnectorServer.

Вставка

LocateRegistry.createRegistry(port);

перед созданием JMXConnectorServer решил проблему.

...