我正在使用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
。这就是我所看到的:
*
可能我的DummyJMX
课程尚未发表(或者我找不到)。
我忘记了哪一步?
提前谢谢
编辑:
编辑:
@Andrei Stefan
使用您的链接收到的错误:
@Gray
我使用localhost:8123
收到的错误:
答案 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
: