如何使用自定义JMX身份验证器

时间:2011-05-25 13:49:41

标签: jmx

我必须根据数据库中的条目对JMX客户端进行身份验证。因此,我编写了一个自定义的JMXAuthenticator实现。

启动我的应用程序时,我可以通过“本地进程”使用JConsole访问MBean。但是当我尝试使用url'服务作为远程进程访问它时:jmx:rmi:/// jndi / rmi:// localhost:10999 / jmxrmi'JConsole显示一条消息抱怨'与服务的连接:jmx: rmi:/// jndi / rmi:// localhost:10999 / jmxrmi没有成功。'

下面是启动MBeanServer和JMXConnectorServer的服务器端代码。有谁知道我做错了什么?

提前致谢,

托马斯

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 个答案:

答案 0 :(得分:2)

似乎问题是我在创建新的JMXConnectorServer之前没有创建RMI注册表。

插入

LocateRegistry.createRegistry(port);

在创建JMXConnectorServer之前解决了这个问题。