我必须根据数据库中的条目对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();
答案 0 :(得分:2)
似乎问题是我在创建新的JMXConnectorServer之前没有创建RMI注册表。
插入
LocateRegistry.createRegistry(port);
在创建JMXConnectorServer之前解决了这个问题。