我能够从 jconsole 访问 Gridgain beans,但是当我尝试以编程方式使用 JMX 访问网格内的 Gridgain beans(例如 GridKernalMBean)时,我收到“javax.management.NotCompliantMBeanException”
这是我正在使用的代码:
String jmxUrl = "service:jmx:rmi:///jndi/rmi://" + HOST+ ":" + PORT + "/jmxrmi";
JMXServiceURL url = new JMXServiceURL(jmxUrl);
JMXConnector jmxc = JMXConnectorFactory.connect(url, null);
MBeanServerConnection mbsc = jmxc.getMBeanServerConnection();
ObjectName objectName = new ObjectName("org.gridgain:grid=gridname,group=Kernal,name=GridKernal");
org.gridgain.grid.GridKernalMBean mbean = JMX.newMXBeanProxy(mbsc, objectName, org.gridgain.grid.GridKernalMBean.class);
网格外的 Bean 工作正常:-
String jmxUrl = "service:jmx:rmi:///jndi/rmi://" + HOST+ ":" + PORT + "/jmxrmi";
JMXServiceURL url = new JMXServiceURL(jmxUrl);
JMXConnector jmxc = JMXConnectorFactory.connect(url, null);
MBeanServerConnection mbsc = jmxc.getMBeanServerConnection();
ObjectName objectName = new ObjectName("org.gridgain:group=Kernal,name=GridGain");
org.gridgain.grid.GridGainMBean mbean = JMX.newMXBeanProxy(mbsc, objectName, org.gridgain.grid.GridGainMBean.class);
我是否缺少 gridgain 配置文件中的任何配置?
最佳答案
这意味着您的目标 mbean 不是 MXBean,并且公开非标准数据类型。尝试使用 javax.management.MBeanServerIncationHandler 创建代理。它更自由一些,但请记住,那些非标准类型属性不会出现在您的客户端中,除非它们是可序列化的并且位于您的客户端类路径中。
关于java - 使用 JMX 连接访问 GridKernalMBean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27049710/