gpt4 book ai didi

tomcat - 使用 Jython 提取针对 JMX 中的域注册的 MBean 列表

转载 作者:行者123 更新时间:2023-11-28 22:34:33 25 4
gpt4 key购买 nike

如果我知道 MBean 的名称,我就能够获取属性信息,但是我试图监视的应用程序会生成随机命名的 MBean,因此需要能够查询 JMX 以获取域中注册的 MBean 列表。

这是 JConsole 中的 View 示例,以及我试图动态获取的内容。

JConsole Screenshot

下面是我编写的代码,它能够提取属性、已注册的域,但我似乎无法获取域中 MBean 的实际列表。

    import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;
import java.lang.management.ManagementFactory;

import sys, cmd, socket, optparse
from urlparse import urljoin
from cmd import Cmd

def get_connection(host, port):
serviceURL = str()
serviceURL = "service:jmx:rmi:///jndi/rmi://"
serviceURL = serviceURL + host + ":" + str(port) + "/jmxrmi"

url = javax.management.remote.JMXServiceURL(serviceURL);
connector = javax.management.remote.JMXConnectorFactory.connect(url);
global remote
remote = connector.getMBeanServerConnection();


def get_domain_list():
domainList = []
get_connection('dt2apps2102', 8004)
domainList = remote.getDomains()
return domainList

def print_domain_list():
domainList = get_domain_list()
for element in domainList:
print element

def get_domain_objects(domain):
pass

def get_object_list():
dmiDomains = {}
domainList = get_domain_list()
for element in domainList:
if element in ('SystemJobControl', 'MediaStore', 'fabric'):
dmiDomains[element] = None
return dmiDomains

def get_attribute(domain, mbean, attribute):
obn = javax.management.ObjectName(domain + ':' + 'name=' + mbean)
return remote.getAttribute(obn, attribute)

print get_object_list()
get_object_list()

最佳答案

这应该为您提供所有对象的名称:

remote.queryNames(new ObjectName(domain + ":*"), null)

这将获得实际的 MBean:

remote.queryMBeans(new ObjectName(domain + ":*"), null)

关于tomcat - 使用 Jython 提取针对 JMX 中的域注册的 MBean 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11849271/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com