使用simplejmx发布的JmxResource不会出现在JConsole中

时间:2014-04-11 13:31:01

标签: java spring jmx jconsole simplejmx

我正在使用simplejmx发布我的JMX Resources

我有jmx-config.xml

<bean id="beanPublisher" class="com.j256.simplejmx.spring.BeanPublisher">
    <property name="jmxServer" ref="jmxServer" />
</bean>

<bean id="jmxServer" class="com.j256.simplejmx.server.JmxServer"
    init-method="start" destroy-method="stop">
    <property name="registryPort" value="8123" />
</bean>

我正在启动我的JBoss应用程序,一切正常:

15:20:11,860 INFO  [org.springframework.beans.factory.support.DefaultListableBeanFactory] (MSC service thread 1-8) Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@1be30160: defining beans [...,beanPublisher,jmxServer,...]; root of factory hierarchy

我创建了一个简单的类。

package com.mypckg.jmx;

import com.j256.simplejmx.common.JmxAttributeField;
import com.j256.simplejmx.common.JmxResource;

@JmxResource(description = "Blah1", domainName = "Blah2", beanName = "Blah3")
public class DummyJMX {

    @JmxAttributeField(description = "Blah4")
    private int var = 3;
}

我正在开始JConsole,我正在选择JBoss申请,我将前往MBeans。这就是我所看到的:

enter image description here *

可能我的DummyJMX课程尚未发表(或者我找不到)。

我忘记了哪一步?

提前谢谢


编辑:

enter image description here


编辑:

@Andrei Stefan

使用您的链接收到的错误:

enter image description here

@Gray

我使用localhost:8123收到的错误:

enter image description here

3 个答案:

答案 0 :(得分:0)

  

可能我的DummyJMX课程尚未发布(或者我找不到)。

当您使用registryPort的{​​{1}}配置时,它将不会显示在Jconsole下的“本地进程”列表中。它将能够作为带有JmxServer的“远程进程”进行访问。如果您使用的是Linux机器,则可以使用localhost:8123查看应用程序正在侦听的端口。如果您没有在列表中看到8123,那么可能已经配置了RMI服务器?

如果要使用 显示为本地进程的平台mbean-server,请使用最近发布的版本1.9中的新setter或构造函数(2014年4月)。不幸的是,SimpleJMX无法以编程方式自行注册,因此它显示在进程列表中 - 这不是JVM导出的代码。

netstat -an | grep LISTEN

答案 1 :(得分:0)

使用“远程处理”选项在JConsole中尝试以下URL:service:jmx:rmi:///jndi/rmi://localhost:8123/jmxrmi

与我在评论中提供的内容略有不同。

答案 2 :(得分:0)

最后,我使用JMX Beans连接到JConsole

可能我在simplejmx开始工作时做错了。

我没有改变很多东西。我保留了jmx-config个文件,但我仍使用1.8的{​​{1}}版本。

我可以轻松连接到这个bean simplejmx - 我不知道为什么我之前无法做到这一点。你能告诉我,为什么你认为它不应该是locally

在下面,您可以看到我的local process出现在JMX Bean

enter image description here