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

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

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

    Crawling Dialy

    常用鏈接

    統計

    最新評論

    JMX學習-2

    最近覺得需要在設計方面多下些功夫,可能最近一段時間太過于沉溺于技術的細節了,所以準備把項目程序的Design細致的分析一下。有時間的話把那本Head First Design Pattern看一下。
    忘記說了這個專題介紹的JMX是JDK5.0時候的標準,6.0好像有很多變動,這里不會介紹。
    接著上次的繼續……
    其實在這個專題中我不想把JMX這門技術面面俱到,也不想太鉆到細節里面,只是想寫一些個人對這個技術的理解,一個是對學習的一個檢驗,另外其一個備忘的作用。
    ?上一次說到了JMX分三個層次,分別是:基礎部件,代理,發布。下面分別介紹這三個層次。
    1,基礎構件(MBean)
    每一個MBean有兩個部分組成,其中一個是后綴名為MBean的interface,另外一個是實現了這個接口的類,這點和EJB2.0很相似。我認為相似的原因是他們都是可以遠程調用的,所以客戶端只需要拿到那個實現了interface的Object就好了,不需要知道這個Object里面究竟是如何實現的。一個MBean的interface是用來定義暴露給MBeanServer的方法和屬性的,其中暴露的屬性是通過setter和getter方法來實現的,這個是符合JavaBean的規范的。MBean的Class則是實現這個interface,向外界提供具體的服務,這個Class的名字必須是那個接口MBean后綴的前部分。
    還有一中MBean是DynamicMBean,這種MBean不需要創建接口,只需要實現DynamicMBean這個接口就行了。這種MBean的作用就是可以通過反射的機制自定義暴露的方法,屬性,通知,而不使用MBeanServer提供的默認的訪問規則。
    還有就是Notification,這個理解起來很簡單就不講了。
    2,代理層(MBeanServer)
    代理層其實是管理MBean的容器,容器里面的MBean通過MBeanServer向外界提供服務,所以這層叫做代理層。
    一個MBeanServer通過如下的工廠方法創建:
    MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
    MBean可以注冊到這個MBeanServer:
    ?
    ????? ObjectName name = new ObjectName("com.example.mbeans:type=Hello");?
    ????? Hello mbean = new Hello();?
    ????? mbs.registerMBean(mbean, name);
    ?
    ObjectName是從容器中取出這個MBean的Key。一個MBeanServer中不能注冊兩個相同的ObjectName。
    MBeanServer基本上是通過反射機制來訪問容器中的MBean的,所以對外提供的訪問方法和反射機制很相似,基本上就是多了一個ObjectName的參數而已,下面列幾個例子:
    mbs.getAttribute(mbeanObjectName, "State");
    mbs.setAttribute(mbeanObjectName, stateAttribute);
    mbs.invoke(mbeanObjectName, "reset", null, null);
    //TODO?代理層先寫到這里吧,如果以后有需要補充的再加。
    3,發布層
    所謂發布層就是外界訪問代理層的方法。
    可以通過如下的方法啟動一個RMI服務器
    JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:9999/server");
    JMXConnectorServer cs = JMXConnectorServerFactory.newJMXConnectorServer(url, null, mbs);
    Client可以連接到這個RMI服務器
    JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:9999/server");
    JMXConnector jmxc = JMXConnectorFactory.connect(url, null);
    MBeanServerConnection mbsc = jmxc.getMBeanServerConnection();
    而MBeanServer就是繼承自MBeanServerConntion的,所以他們的大部分方法都一樣或者相似。
    OK,JMX的基本概念就介紹到這里,以后的專題就是關于JMX的lookup service和JMX的應用分析,比如在jboss和glassfish上的應用。

    posted on 2007-02-27 23:26 solospider 閱讀(1358) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 色噜噜综合亚洲av中文无码| 亚洲精品自在在线观看| 国产精品亚洲精品观看不卡| 99re这里有免费视频精品| 亚洲成A人片777777| 怡红院免费全部视频在线视频| 自拍偷自拍亚洲精品第1页| 9久热精品免费观看视频| 亚洲国产三级在线观看| 久久免费观看国产精品| 亚洲视频精品在线观看| 青春禁区视频在线观看直播免费| 亚洲香蕉久久一区二区| 日日AV拍夜夜添久久免费| 国产精品亚洲专区一区| 亚洲第一区在线观看| 久久国产美女免费观看精品| 亚洲图片在线观看| 毛片免费在线观看网站| 免费人人潮人人爽一区二区| 亚洲色婷婷六月亚洲婷婷6月| 99久久久国产精品免费蜜臀| 亚洲成av人片不卡无码| 国产伦精品一区二区三区免费迷| 一本久久免费视频| 亚洲国产精品久久| 在线免费观看a级片| 中文字幕免费在线看线人动作大片 | 深夜国产福利99亚洲视频| www免费黄色网| 亚洲另类古典武侠| 免费国产在线观看不卡| 野花香高清在线观看视频播放免费 | 亚洲女人初试黑人巨高清| 女人18特级一级毛片免费视频| 一级特级女人18毛片免费视频| 久久亚洲AV无码精品色午夜麻| 国内免费高清在线观看| 国内精品99亚洲免费高清| 在线a亚洲老鸭窝天堂av高清| 亚洲午夜激情视频|