【问题标题】:Calling JBoss MBean functions to get threaddump调用 JBoss MBean 函数获取 threaddump
【发布时间】:2011-08-29 12:31:45
【问题描述】:

一个应用程序正在使用 JBoss 4.2.2,我发现有必要调用 listThreadDump(),我希望它在 ServerInfo 中。

我认为我需要找到此信息的 jar 是 jboss-jmx.jar。

那么,我如何通过调用类似于http://localhost:8080/jmx-console/HtmlAdaptor?action=invokeOpByName&name=jboss.system:type=ServerInfo&methodName=listThreadDump 的方式以编程方式复制所做的事情?

【问题讨论】:

    标签: jmx jdk1.5 mbeans jboss-4.2.x


    【解决方案1】:

    这就是我访问 ServerInfo MBean 的方式。我用的是JBoss AS 5.1,不过这个方法应该是一样的。

    要调用listThreadDump(),您可以使用MBeanServer 实例ServerInfo MBean 上的方法invoke()

    此外,您可以使用相同的 MBeanServer 访问 MBean 的属性。

    示例代码:

    // imports
    import javax.management.MBeanServer;
    import javax.management.ObjectName;
    import org.jboss.mx.util.MBeanServerLocator;
    
    try {
        MBeanServer server = MBeanServerLocator.locate();
        ObjectName name = new ObjectName("jboss.system:type=ServerInfo");
        // invoke the listThreadDump method and capture its output
        String threadDumpHtml = (String) server.invoke(name, "listThreadDump", null, null);
    
        // access a simple attribute of the ServerInfo object
        String jvmName = (String) server.getAttribute(name, "JavaVMName");
    } catch (Exception e) {
        // Ideally catch the 3 exact exceptions
    }
    

    最后,当 MBean 公开一个“实例”属性时,我发现它很方便,因此您可以直接访问对象(CastToType) server.getAttribute(name, "instance"),而不是总是通过 MBeanServer。例如,在使用 JMS 时,ServerPeer 实例很不错,因为您可以在队列和主题订阅者上获取消息计数器。

    【讨论】:

      猜你喜欢
      • 2011-04-18
      • 1970-01-01
      • 1970-01-01
      • 2011-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多