如何以编程方式检查JMX MBean操作和属性?

MD6*_*380 5 java jmx mbeans websphere-7

假设我们有一个具有以下属性和操作的MBean.

属性:名称大小

操作:getName()getSize()

有没有办法以编程方式检查属性和操作?我一直在使用IBM WebSphere MBeans,他们的文档不是很好.

例如,如果您转到IBM Infocenter并导航到Network Deployment - > Reference - > Programming interfaces - > Mbean interfaces - > ThreadPool.它们只列出属性而没有操作.

使用WebSphere wsadmin工具,我实际上可以检查以查看操作和属性.我想知道是否有办法对所有MBean这样做.

wsadmin>print Help.attributes(object)
Attribute                       Type                            Access
name                            java.lang.String                RO
maximumSize                     int                             RW
minimumSize                     int                             RW
inactivityTimeout               long                            RW
growable                        boolean                         RW
stats                           javax.management.j2ee.statistics.Stats  RO

wsadmin>print Help.operations(object)
Operation
java.lang.String getName()
int getMaximumPoolSize()
void setMaximumPoolSize(int)
int getMinimumPoolSize()
void setMinimumPoolSize(int)
long getKeepAliveTime()
void setKeepAliveTime(long)
boolean isGrowAsNeeded()
void setGrowAsNeeded(boolean)
javax.management.j2ee.statistics.Stats getStats()
Run Code Online (Sandbox Code Playgroud)

Gra*_*ray 10

我不知道你是在谈论以编程方式从当前JVM内部或从客户端远程查找MBean.有许多JMX客户端库.我写的那个可以在这里找到:

http://256stuff.com/sources/simplejmx/

使用我的代码,您可以执行以下操作:

JmxClient client = new JmxClient(hostName, port);
Set<ObjectName> objectNames = getBeanNames() 
for (ObjectName name : objectNames) {
    MBeanAttributeInfo[] attributes = getAttributesInfo(name);
    MBeanOperationInfo[] operations = getOperationsInfo(name);
}
Run Code Online (Sandbox Code Playgroud)

如果您询问当前的JVM,那么您应该能够以这种方式从内部bean获取bean信息:

MBeanServer server = ManagementFactory.getPlatformMBeanServer();
Set<ObjectName> objectNames = server.queryNames(null, null);
for (ObjectName name : objectNames) {
    MBeanInfo info = server.getMBeanInfo(name);
}
Run Code Online (Sandbox Code Playgroud)