如何使用自定义JMXAuthenticator

问题描述

| 我必须针对数据库中的条目对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之前,已解决了该问题。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...