问题描述
|
我必须针对数据库中的条目对JMX客户端进行身份验证。因此,我编写了一个自定义JMXAuthenticator实现。
启动我的应用程序时,我可以使用JConsole通过\'Local Process \'访问MBean。但是当我尝试使用url \'service: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();
解决方法
似乎问题在于,在创建新的JMXConnectorServer之前,我还没有创建RMI注册表。
插入
LocateRegistry.createRegistry(port);
在创建JMXConnectorServer之前,已解决了该问题。