<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    子在川上曰

      逝者如斯夫不舍晝夜
    隨筆 - 71, 文章 - 0, 評論 - 915, 引用 - 0
    數(shù)據(jù)加載中……

    [JMX一步步來] 8、編寫程序來連接MBean

    文/陳剛  from www.chengang.com.cn at 2005-12-26
     
      前面用Html、jconsole等方法連接上了MBeanServer,并能夠通過這些界面來操縱MBean。但有時我們需要不借助這些客戶端,而是在自己的程序來操縱這些MBean,這就要求我們知道如何在代碼里連接MBean。
     
      基于上一篇為jconsole而修改的例子,給出一個示例的客戶端程序,基本的操作都有了:

    import java.util.Iterator;
    import java.util.Set;
    import javax.management.Attribute;
    import javax.management.MBeanInfo;
    import javax.management.MBeanServerConnection;
    import javax.management.MBeanServerInvocationHandler;
    import javax.management.ObjectInstance;
    import javax.management.ObjectName;
    import javax.management.remote.JMXConnector;
    import javax.management.remote.JMXConnectorFactory;
    import javax.management.remote.JMXServiceURL;
    public class Client {
        public static void main(String[] args) throws Exception {
            JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:9999/server");
            JMXConnector jmxc = JMXConnectorFactory.connect(url, null);
            MBeanServerConnection mbsc = jmxc.getMBeanServerConnection();
            ObjectName mbeanName = new ObjectName("chengang:name=HelloWorld");
            //把所有Domain都打印出來
            System.out.println("Domains:---------------");
            String domains[] = mbsc.getDomains();
            for (int i = 0; i < domains.length; i++) {
                System.out.println("\tDomain[" + i + "] = " + domains[i]);
            }
            //MBean的總數(shù)
            System.out.println("MBean count = " + mbsc.getMBeanCount());
            //對name屬性的操作(屬性名的第一個字母要大寫)
            mbsc.setAttribute(mbeanName, new Attribute("Name", "Chen.Gang"));//設值
            System.out.println("Name = " + mbsc.getAttribute(mbeanName, "Name"));//取值
            //得到proxy代理后直接調用的方式
            HelloMBean proxy = (HelloMBean) MBeanServerInvocationHandler.newProxyInstance(mbsc, mbeanName, HelloMBean.class, false);
            proxy.printHello();
            proxy.printHello("陳剛");
            //遠程調用的方式
            mbsc.invoke(mbeanName, "printHello", null, null);
            mbsc.invoke(mbeanName, "printHello", new Object[] { "子在川上曰" }, new String[] { String.class.getName() });
            //得mbean的信息
            MBeanInfo info = mbsc.getMBeanInfo(mbeanName);
            System.out.println("Hello Class: " + info.getClassName());
            System.out.println("Hello Attriber:" + info.getAttributes()[0].getName());
            System.out.println("Hello Operation:" + info.getOperations()[0].getName());
            //得到所有的MBean的ObjectName
            System.out.println("all ObjectName:---------------");
            Set set = mbsc.queryMBeans(null, null);
            for (Iterator it = set.iterator(); it.hasNext();) {
                ObjectInstance oi = (ObjectInstance) it.next();
                System.out.println("\t" + oi.getObjectName());
            }
            //注銷
            //mbsc.unregisterMBean(mbeanName);
            //關閉MBeanServer連接
            jmxc.close();
        }
    }
     
    運行后的效果如下:
    Domains:---------------
     Domain[0] = HelloAgent
     Domain[1] = JMImplementation
     Domain[2] = chengang
    MBean count = 3
    Name = Chen.Gang
    Hello Class: mbean.connector.Hello
    Hello Attriber:Name
    Hello Operation:printHello
    all ObjectName:---------------
     chengang:name=HelloWorld
     JMImplementation:type=MBeanServerDelegate
     HelloAgent:name=htmladapter,port=8082
     
     
    它有兩個Console輸出,這里是另一個
    Hello World, Chen.Gang
    Hello , 陳剛
    Hello World, Chen.Gang
    Hello , 子在川上曰
     

    作者簡介

    陳剛,廣西桂林人,著作有《Eclipse從入門到精通》
    您可以通過其博客了解更多信息和文章:http://www.chenGang.com.cn

    posted on 2006-03-07 15:17 陳剛 閱讀(5157) 評論(2)  編輯  收藏 所屬分類: JMX

    評論

    # re: [JMX一步步來] 8、編寫程序來連接MBean  回復  更多評論   

    在項目中通過用RMI方式連接JMX 的mbeans,如果JDK是1.5的話連接不會出錯,可是換到jdk1.4的話會報錯,我jmx的5個jar包都在環(huán)境里面.
    想問下有沒有能在jdk1.4中也能正常運行的辦法,

    付上exception:
    java.rmi.ServerError: Error occurred in server thread; nested exception is:
    java.lang.NoSuchMethodError: javax.management.MBeanServer.getClassLoaderRepository()Ljavax/management/loading/Cl
    assLoaderRepository;
    at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:289)
    at sun.rmi.transport.Transport$1.run(Transport.java:148)
    at java.security.AccessController.doPrivileged(Native Method)


    2006-12-19 17:11 | jmx初學者

    # re: [JMX一步步來] 8、編寫程序來連接MBean[未登錄]  回復  更多評論   

    Refer to http://forum.java.sun.com/thread.jspa?threadID=5229139
    2008-05-15 09:58 | Tim
    主站蜘蛛池模板: 成年美女黄网站18禁免费| 成视频年人黄网站免费视频| 91免费精品国自产拍在线不卡| 亚洲Av无码乱码在线观看性色 | 色老头永久免费网站| 久久噜噜噜久久亚洲va久| 亚洲阿v天堂在线2017免费 | 中文字幕亚洲一区二区三区| 在线视频免费国产成人 | 日本一道一区二区免费看| 日韩精品亚洲人成在线观看| 精品在线免费观看| 亚洲欧美在线x视频| 国产精品免费视频一区| 亚洲AV无码片一区二区三区 | 国产成人va亚洲电影| 91在线老王精品免费播放| 亚洲Aⅴ无码专区在线观看q| 精品视频在线免费观看| 亚洲综合激情六月婷婷在线观看 | 亚洲午夜无码毛片av久久京东热| 成人免费无码视频在线网站| 亚洲码和欧洲码一码二码三码| 国产区卡一卡二卡三乱码免费| 97免费人妻无码视频| 两个人日本免费完整版在线观看1| 亚洲爆乳精品无码一区二区| 男女作爱免费网站| 日韩电影免费在线观看视频| 亚洲中文字幕无码久久综合网| 久久精品国产亚洲精品| 未满十八私人高清免费影院| 亚洲男人的天堂一区二区| 免费无码又爽又刺激高潮软件| 亚洲午夜未满十八勿入| 黄色片在线免费观看 | 精品久久久久久久久亚洲偷窥女厕 | 免费少妇a级毛片| 永久免费A∨片在线观看| 亚洲人成7777影视在线观看| 又爽又黄无遮挡高清免费视频|