访问远程 MBean 服务器
我正在使用 JBoss 运行客户端/服务器应用程序。
如何连接到服务器 JVM 的 MBeanServer? 我想使用 MemoryMX MBean 来跟踪内存消耗。
我可以使用 JNDI 查找连接到 JBoss MBeanServer,但 java.lang.MemoryMX MBean 未在 JBoss MBeanServer 中注册。
编辑:要求是从客户端以编程方式访问内存使用情况。
I am running a client/server application using JBoss.
How can I connect to the server JVM's MBeanServer? I want to use the MemoryMX MBean to track the memory consumption.
I can connect to the JBoss MBeanServer using JNDI lookup but the java.lang.MemoryMX MBean is not registered with the JBoss MBeanServer.
EDIT: The requirement is for programmatic access to the memory usage from the client.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
我写了一个这样的类:
I wrote a class like this:
与 JBoss 服务器的 MBeanServer 不同,JVM 的 MBean 服务器默认不允许远程监控。 您需要设置各种系统属性以允许:
http: //java.sun.com/javase/6/docs/technotes/guides/management/agent.html
Unlike the JBoss server's MBeanServer, the JVM's MBean server doesn't allow remote monitoring by default. You need to set various system properties to allow that:
http://java.sun.com/javase/6/docs/technotes/guides/management/agent.html
IBM 文章中的代码示例:链接
A code example from an IBM article: link
您是否尝试过启动
JConsole
(是$JAVA_HOME/bin
)来连接服务器? 您应该能够从那里查看内存统计信息Have you tried launching a
JConsole
(is$JAVA_HOME/bin
) to connect with the server? You should be able to view memory stats from there以下代码列出了给定(启用 jmx 的)java 应用程序的所有 mbean 及其按域分组的属性和操作。 只需启动您想要使用固定 jmx 端口监控的 java 应用程序,例如使用以下 vm 参数:
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=9000
-Dcom.sun.management.jmxremote.local.only=false
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
然后运行这个 main:
正如您应该看到的,在 java.lang 域中有几个与内存相关的 mbean。 选择您需要的那个。
The following code lists all mbeans of a given (jmx enabled) java application with their attributes and operations grouped by the domain. Just start the java app you wanna monitor with a fixed jmx port, e.g. by using these vm parameters:
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=9000
-Dcom.sun.management.jmxremote.local.only=false
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
Then run this main:
As you should see, in the java.lang domain are several memory related mbeans. Pick the one you need.