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

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

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

    posts - 16,comments - 17,trackbacks - 0
        看了兩天文檔,總算對JMX有了一個整體的認識。發現使用mx4j實現JMX還是相當的輕松的。MBeans可以使用mx4j-tools中的 Xdoclet偷一下懶,讓它自動的生成MBeans和Descriptions,ant有相應的支持,還是比較方便的,對于MBean接口的實現,自己寫了。

        對于如何產生和注冊MBeans,mx4j提供了一個相當方便的工具,為什么說相當方便,是因為它真的實在是太方便了。通過寫一個xml配置文件可以完成所有的工作。比起M-LET確實是強了不少。下面就是一個在MBean Server產生注冊一個NamingService、JMXConnectorServer和一個自寫的MBean的配置文件。

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration port="9999">
       
    <startup>
          
    <create classname="mx4j.tools.naming.NamingService" objectname="naming:type=rmiregistry">
             
    <arg type="int">1099</arg>
          
    </create>
          
    <call operation="start" objectname="naming:type=rmiregistry" />

          
    <object objectid="rmi">
             
    <call classname="javax.management.remote.JMXConnectorServerFactory" method="newJMXConnectorServer">
                
    <arg type="javax.management.remote.JMXServiceURL">
                   
    <new classname="javax.management.remote.JMXServiceURL">
                      
    <arg type="string">service:jmx:rmi://localhost/jndi/rmi://localhost:1099/jmx</arg>
                   
    </new>
                
    </arg>
                
    <arg type="java.util.Map" />
                
    <arg type="javax.management.MBeanServer" />
             
    </call>
          
    </object>
          
    <register objectname="connectors:type=rmi,protocol=jrmp">
             
    <arg type="object" refobjectid="rmi" />
          
    </register>
          
    <call method="start" refobjectid="rmi" />
          
    <create classname="nsmp.examples.mbeans.rmi.MyRemoteServiceObject" objectname="services:type=my-remote" />
       
    </startup>

       
    <shutdown>
          
    <call operation="stop" objectname="services:type=my-remote" />
          
    <call method="stop" refobjectid="rmi" />
          
    <call operation="stop" objectname="naming:type=rmiregistry" />
          
    <unregister objectname="services:type=my-remote"/>
          
    <unregister objectname="connectors:type=rmi,protocol=jrmp" />
          
    <unregister objectname="naming:type=rmiregistry" />
       
    </shutdown>
    </configuration> 

    java代碼:

    package nsmp.agent;

    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.Reader;
    import java.net.Socket;

    import javax.management.MBeanServer;
    import javax.management.MBeanServerFactory;
    import javax.management.ObjectName;

    import mx4j.tools.config.ConfigurationLoader;
    import nsmp.util.NsmpGlobals;

    /**
     * @version 1.0
     * @author tower
     *
     * TODO write the comment of this type
     
    */

    public class NsmpServer {
        
    public void startup() throws Exception {
            MBeanServer server 
    = MBeanServerFactory.newMBeanServer();
            ConfigurationLoader loader 
    = new ConfigurationLoader();

            server.registerMBean(loader, ObjectName.getInstance(
    "config:service=loader"));
            Reader reader 
    = new BufferedReader(new FileReader(NsmpGlobals.NSMP_HOME + "/conf/config.xml"));
            
            loader.startup(reader);
            reader.close();
            System.
    out.println("Start the nsmp server successfully!");
        }

        
    public void shutdown() throws Exception {
              String shutdownCommand 
    = "shutdown";
              Socket socket 
    = new Socket("127.0.0.1"9999);
              socket.getOutputStream().write(shutdownCommand.getBytes());
              socket.close();
        }

    }


        startup方法調用配置文件的startup部分完成創建和注冊,shutdown方法調用配置文件的shutdown部分釋放相應的資源。通過調用 startup方法就可以起動MBeanServer提供服務了。對于shutdown開始搞了我半天startup后 ConfigurationLoader都沒有創建一個偵聽端口來接收shutdown命令,看了看mx4j的源碼發現 ConfigurationLoader也沒有發現什么特殊地方。捉摸半天終于發現了自己放了一個愚笨的錯誤,eclipse是用普通用戶權限開的,沒有辦法創建偵聽,改成root后一切ok。

        接下就隨便寫了一個JMXConnector,代碼:

    /*
     * Copyright (C) The MX4J Contributors.
     * All rights reserved.
     *
     * This software is distributed under the terms of the MX4J License version 1.0.
     * See the terms of the MX4J License in the documentation provided with this software.
     
    */


    package nsmp.examples.mbeans.rmi;

    import java.util.Map;

    import javax.management.MBeanInfo;
    import javax.management.MBeanOperationInfo;
    import javax.management.MBeanServerConnection;
    import javax.management.ObjectName;
    import javax.management.remote.JMXConnector;
    import javax.management.remote.JMXConnectorFactory;
    import javax.management.remote.JMXServiceURL;


    /**
     * @version $Revision: 1.3 $
     
    */

    public class Client
    {
       
    public static void main(String[] args) throws Exception
       
    {
               JMXServiceURL address 
    = new JMXServiceURL("service:jmx:rmi://localhost/jndi/rmi://localhost:1099/jmx");
               Map creationEnv 
    = null;
               JMXConnector connector 
    = JMXConnectorFactory.newJMXConnector(address, creationEnv);
               
               Map connectionEnv 
    = null;
               connector.connect(connectionEnv);
               
               MBeanServerConnection serverConnection 
    = connector.getMBeanServerConnection();
               ObjectName name 
    = ObjectName.getInstance("services:type=my-remote");
               MBeanInfo mbInfo 
    = serverConnection.getMBeanInfo(name);
               MBeanOperationInfo[] operationInfo 
    = mbInfo.getOperations();
               
               
    for (int i = 0; i < operationInfo.length; i++{
                   System.
    out.println(operationInfo[i].getName());
               }

               
               serverConnection.invoke(name, 
    "sayHello"new Object[] {"Tower He"}new String[] {"java.lang.String"});
       }

    }



    JMXConnector是通過獲取一個MBeanServerConnection來實現遠程調用的,運行了一下一切順利通過。

    下載:MX4JExample.rar
    posted on 2005-02-05 19:07 非飛 閱讀(5705) 評論(0)  編輯  收藏 所屬分類: JAVA 相關技術
    主站蜘蛛池模板: 亚洲卡一卡二卡乱码新区| 久久精品国产亚洲av水果派| 亚洲欧美日韩中文字幕在线一区| 久久国产乱子伦免费精品| 亚洲情XO亚洲色XO无码| 国产乱子伦精品免费视频| 亚洲午夜福利精品久久| 国产免费黄色无码视频| 亚洲精品乱码久久久久久| 99在线免费观看| 亚洲国产美女精品久久久久∴| 日韩电影免费在线观看网站| 亚洲国产综合91精品麻豆| 91精品导航在线网址免费| 久久精品国产亚洲αv忘忧草| 搡女人免费视频大全| 国产成人精品亚洲一区| 亚洲精品成人片在线观看| 91视频免费观看高清观看完整| 亚洲精品天天影视综合网| 日本免费网址大全在线观看| 亚洲av片在线观看| 中文字幕日韩亚洲| 日本免费一区二区三区四区五六区 | 国产人成免费视频网站| 亚洲激情视频图片| 免费国产一级特黄久久| 国产免费区在线观看十分钟| 久久精品蜜芽亚洲国产AV| 欧洲黑大粗无码免费| 直接进入免费看黄的网站| 亚洲成AV人片一区二区密柚| 国产乱子精品免费视观看片| 亚洲精品中文字幕无码A片老| 亚洲午夜无码AV毛片久久| 精品无码人妻一区二区免费蜜桃| 亚洲精品伊人久久久久| 亚洲日韩中文字幕在线播放| 18国产精品白浆在线观看免费| 四虎一区二区成人免费影院网址| 99久久亚洲综合精品成人网|