关于JMX向主服务器注册MBean 的问题

xiezhenxiang 2010-04-06 09:50:23
我在一台主服务器上起一个MBServer 代码如下:
public static void main(String[] args) throws InterruptedException, IOException {
try{
MBeanServer mbs = MBeanServerFactory.createMBeanServer();
LocateRegistry.createRegistry(9999);
JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:9999/server");
JMXConnectorServer cs = JMXConnectorServerFactory.newJMXConnectorServer(url, null, mbs);
cs.start();
System.out.println("------------MBean Server start");
}catch(Exception e){
e.printStackTrace();
}
}


我在我本地想向远程的MB Server注册一个MBean,我用下面的代码去注册是不可以的,一运行,他就报javax.management.ReflectionException 异常,原因是DeviceServerMonitor.class类找不到
经过测试,我把要注册的那个类[DeviceServerMonitor.class]拷贝到主服务器上,那就可以注册
JMXServiceURL url = new JMXServiceURL(
"service:jmx:rmi:///jndi/rmi://10.30.5.28:9999/server");
JMXConnector jmxc = JMXConnectorFactory.connect(url, null);
MBeanServerConnection mbsc = jmxc.getMBeanServerConnection();

ObjectName stdMBeanName = new ObjectName(
"server:type=DeviceServerMonitorMBean");
// //System.out.println(DeviceServerMonitor.class.getName());
//
mbsc.createMBean(DeviceServerMonitor.class.getName(),stdMBeanName,
null, null);
System.out.println("----------------");

但是我不想把要注册的类存到主服务器上,不是MBeanServerConnection还有一种方法去创建MBean 吗?,就是加一个 ObjectName loaderName参数,loaderName我想应该是类加载器吧,现在问题是我应该怎么去new 这个ObjectName loaderName,我应该怎么去构造ObjectName ???
public ObjectInstance createMBean(java.lang.String className,
ObjectName name,
ObjectName loaderName,
java.lang.Object[] params,
java.lang.String[] signature)
throws ReflectionException,
InstanceAlreadyExistsException,
MBeanRegistrationException,
MBeanException,
NotCompliantMBeanException,
InstanceNotFoundException,
java.io.IOException
...全文
148 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复

5,647

社区成员

发帖
与我相关
我的任务
社区描述
Web开发应用服务器相关讨论专区
社区管理员
  • 应用服务器社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧