JMXConnector connector = JMXConnectorFactory.connect(serviceURL, (Map<String,String>)h);//连接到MBean Server
MBeanServerConnection connection = connector.getMBeanServerConnection();
ObjectName serRuntime=(ObjectName) runtimeServiceConnection.getAttribute(runtimeON, "ServerRuntime");
weblogic文档中使用jmx远程连接的例子是主要是使用上面主要代码的方式,从weblogic服务的跟找起,我想问一下有没有办法直接访问到某个MBean
而不是从根上一步一步查找.不要使用weblogic8里用的Helper接口获取MBeanHome接口然后在找类型的方法
------最佳解决方案--------------------------------------------------------
查询下Weblogic的接口说明文档
MBeanServerConnection有个方法 queryNames
可以直接找到你要的某个ObjectName
从而获取到对应的MBean
------其他解决方案--------------------------------------------------------
Spring + JMX
------其他解决方案--------------------------------------------------------
不用任何框架,有办法吗?
------其他解决方案--------------------------------------------------------
根据需求自己写个工具类搞定。
------其他解决方案--------------------------------------------------------
我也想看到,但是不太懂,哎
我用的也是下面的代码
/*
* 实例化与 Domain Runtime MBean Server 的连接。
*/
private void initConnection(String hostname, String portString,
String username, String password) throws IOException,
MalformedURLException
{
String protocol = "t3";
Integer portInteger = Integer.valueOf(portString);
int port = portInteger.intValue();
String jndiroot = "/jndi/";
String mserver = "weblogic.management.mbeanservers.domainruntime";
JMXServiceURL serviceURL = new JMXServiceURL(protocol, hostname, port,
jndiroot + mserver);
Hashtable<String,String> h = new Hashtable<String,String>();
h.put(Context.SECURITY_PRINCIPAL, username);
h.put(Context.SECURITY_CREDENTIALS, password);
h.put(JMXConnectorFactory.PROTOCOL_PROVIDER_PACKAGES,
"weblogic.management.remote");
//在此JMXConnector对象能够使用之前,必须调用其 connect 方法。但是,由 JMXConnectorFactory.connect 创建的对象已经连接。
connector = JMXConnectorFactory.connect(serviceURL, h);
connection = connector.getMBeanServerConnection();
}
/*
* 打印一组 ServerRuntimeMBeans.此 MBean 是运行时 MBean 层次的根,此域中的每个服务器承载自己的实例.
*/
public ObjectName[] getServerRuntimes() throws Exception {
return (ObjectName[]) connection.getAttribute(service, "ServerRuntimes");
}