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

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

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

    Crawling Dialy

    常用鏈接

    統(tǒng)計(jì)

    最新評(píng)論

    2007年2月27日 #

    JMX學(xué)習(xí)-2

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

    posted @ 2007-02-27 23:26 solospider 閱讀(1358) | 評(píng)論 (0)編輯 收藏

    JMX學(xué)習(xí)-1

    這是第一篇關(guān)于java的文章,之前決定要寫一個(gè)關(guān)于線程的專題的,不過(guò)并發(fā)這個(gè)東西看上去還是比較深?yuàn)W,寫一些比較淺的東西也沒(méi)什么意思,最近一段時(shí)間JMX接觸得比較多,索性就先寫一個(gè)JMX的專題吧。
    最早接觸這個(gè)東西是在05年的JavaChina大會(huì)上,其中有一個(gè)專門介紹JMX的Session,當(dāng)時(shí)我聽(tīng)完了也不知道這個(gè)東西到底是干什么的,只是看到演示的Demo很炫。后來(lái)也就一直沒(méi)怎么碰過(guò)這門技術(shù),一直到06年的JavaTechDays我又聽(tīng)了一個(gè)關(guān)于JMX的Session,畢竟一年的時(shí)間悟性提高了一些,終于聽(tīng)懂了Session的內(nèi)容,不過(guò)這個(gè)Session介紹的已經(jīng)是JMX新的version了,JMX在JDK6.0中有了很多改進(jìn),加入了MXBean較之以前開(kāi)發(fā)更簡(jiǎn)單,靈活。
    首先總的介紹一下JMX這個(gè)概念,JMX是Java Management Extension的縮寫,其實(shí)簡(jiǎn)單得說(shuō)來(lái)就是用來(lái)監(jiān)控Java Class運(yùn)行時(shí)狀態(tài)的技術(shù)。而且他提供了強(qiáng)大的API和很好的設(shè)計(jì),非常易于擴(kuò)展,JDK5.0提供了這個(gè)技術(shù)的實(shí)現(xiàn)。
    下面簡(jiǎn)單的介紹一下JMX之中的基本概念:
    1,MBean是JMX需要監(jiān)控的Java Class類,每一個(gè)MBean都要實(shí)現(xiàn)一個(gè)后綴為MBean的接口,這個(gè)接口也是用戶定義的,這個(gè)接口是用來(lái)向JMX暴露可訪問(wèn)的方法,屬性等
    2,MBeanServer是MBeans的管理者,MBeanServer提供一個(gè)MBean的容器,一旦MBean注冊(cè)到這個(gè)MBeanServer,這個(gè)MBean就被放到這個(gè)容器中,可以通過(guò)MBeanServer來(lái)訪問(wèn)這個(gè)MBean的屬性和方法,(我覺(jué)得這個(gè)思路和EJB非常的相似)。
    3,Connector是用于用戶訪問(wèn)MBeanServer的,有多種實(shí)現(xiàn)方式,有通過(guò)Http的連接方式,通過(guò)RMI的連接方式等
    其實(shí)這三個(gè)概念就是JMX的三個(gè)基本組成部分,JMX的Architecture就是由這三層組成的:
    1,基礎(chǔ)部件(MBean)
    2,代理層(MBeanServer)
    3,發(fā)布層(Connector)

    posted @ 2007-02-27 23:25 solospider 閱讀(5628) | 評(píng)論 (2)編輯 收藏

    僅列出標(biāo)題  
    主站蜘蛛池模板: 亚洲精品韩国美女在线| 亚洲精品无码专区久久久| 亚洲国产人成精品| 曰韩亚洲av人人夜夜澡人人爽| 国产亚洲综合一区柠檬导航| 久久亚洲精品无码VA大香大香| 久久国产亚洲精品| 精品一区二区三区免费观看| 中文字幕在线观看免费视频| 国产美女在线精品免费观看| 亚洲国产a级视频| 亚洲第一福利网站| 亚洲AV成人一区二区三区观看| 丁香花在线观看免费观看图片| 最近中文字幕高清免费中文字幕mv| 成人免费无码大片A毛片抽搐色欲| 亚洲免费在线观看| 亚洲精品欧洲精品| 美女啪啪网站又黄又免费| 好久久免费视频高清| 免费鲁丝片一级在线观看| 亚洲综合色自拍一区| 亚洲国产中文在线视频| 一区二区3区免费视频| 亚洲成人免费在线观看| 亚洲AV无码成H人在线观看| 亚洲精品私拍国产福利在线| 亚洲hairy多毛pics大全| 日本一道本不卡免费| 日韩免费观看的一级毛片| 亚洲成色在线综合网站 | 免费一级毛片女人图片| 亚洲自偷自偷精品| 色噜噜狠狠色综合免费视频| 精品成在人线AV无码免费看| 久久亚洲2019中文字幕| 亚洲永久在线观看| 久久这里只精品99re免费| 国产a不卡片精品免费观看| 91亚洲国产在人线播放午夜| ssswww日本免费网站片|