首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MBean上找不到操作

在MBean上找不到操作
EN

Stack Overflow用户
提问于 2014-09-16 13:20:43
回答 2查看 932关注 0票数 1

基本上,我遵循标准的基本JMX教程,并使用两种方法注册MXBean。

代码语言:javascript
复制
public interface QueueSamplerMXBean {
    public QueueSample getQueueSample();
    public void clearQueue();
}

但是,当我尝试查询已注册的MBean时,它只返回clearQueue。下面是我的示例程序:

代码语言:javascript
复制
MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();

// Construct the ObjectName for the QueueSampler MXBean we will register
ObjectName mxbeanName = new ObjectName("com.example:type=QueueSampler");

// Create the Queue Sampler MXBean
Queue<String> queue = new ArrayBlockingQueue<String>(10);
queue.add("Request-1");
queue.add("Request-2");
queue.add("Request-3");
QueueSampler mxbean = new QueueSampler(queue);

// Register the Queue Sampler MXBean
mbs.registerMBean(mxbean, mxbeanName);

MBeanInfo info = mbs.getMBeanInfo(mxbeanName);
for(MBeanOperationInfo op : info.getOperations()) {
    System.out.println("operation = " + op.getName());
}

我想这就是为什么我一直收到"java.lang.IllegalArgumentException. no operation xxxxx.(调用的方法名)在MBean上找不到操作.当我试图通过Jolokia代理(JSON to JMX桥)调用MXBean方法时得到这个异常的原因。我调用返回类型为空的方法没有问题。

有没有人知道为什么getOperations不把JavaBean对象作为返回类型返回给我?这太奇怪了。我一定是漏掉了一些非常简单的东西。

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2014-09-16 20:54:10

我打赌你的MBean上有一个queueSample属性,因为getFoo通常被转换成一个可读的属性foosetFoo变成一个可写的属性,如果你有getter和setter,这个属性就是r/w。

使用jconsole之类的工具连接到VM并检查您的MBean。

票数 1
EN

Stack Overflow用户

发布于 2014-09-16 16:26:29

方法应该是:

public QueueSampleMBean getQueueSample();

QueueSample应该实现QueueSampleMBean (并且只公开简单类型)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25861177

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档