java jmx 开发实例_从Java访问JMX MBean并执行例程

我有一个名为EXOB的对象,它有多个例程. EXOB是一个Spring bean,我想执行名为routine1的例程,该例程采用String参数.我写这段代码到现在为止:

import javax.management.remote.JMXConnector;

import javax.management.remote.JMXConnectorFactory;

import javax.management.remote.JMXServiceURL;

import javax.management.MBeanServerConnection;

import javax.management.ObjectName;

JMXServiceURL url = new JMXServiceURL("URL");

JMXConnector jmxc = JMXConnectorFactory.connect(url, null);

MBeanServerConnection mbsc = jmxc.getMBeanServerConnection();

ObjectName mbeanName = new ObjectName("com.example.package:service=EXOB");

Object Params[] = {"str"};

String Sig[] = {String.class.getName()};

mbsc.invoke(mbeanName,"routine1",Params,Sig);

jmxc.close();

我正在使用intellij,它在invoke()方法中显示错误,因为无法解析符号routine1.我编写上面代码的方式是错误的吗?如何访问JMX Mbean并调用其中的函数?

我还想知道上面调用MBean中的函数的方法是否合适,或者是否有更好的方法可以做到这一点?

更新:当我执行上面的代码时,没有任何事情发生,执行似乎在我运行时被绞死

当我在上面的代码中添加以下代码时:

Set names = new TreeSet(mbsc.queryNames(null, null));

for (ObjectName name : names) {

System.out.println("ObjectName = " + name);

}

我把它作为输出

ObjectName = com.example.package:service=EXOB

当我获取mbeanName时,这是我在上面的代码中传递的对象名称.这个EXOB有一个名为routine1的例程,我想调用它

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值