麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

Spring1.2rc1中jmx支持的一些答疑

2019-11-18 13:00:34
字體:
供稿:網(wǎng)友

  jmx是什么?
  
  jmx是java下的資源治理規(guī)范。泛指的資源可以代表任何對象和事務(wù),如網(wǎng)絡(luò),設(shè)備,應(yīng)用程序。在這里,我們特指javabean。
  
  jmx可以干什么?
  
  通過jmx,可以在程序運(yùn)行期改變資源的配置和狀態(tài),啟動或者停止服務(wù)。對應(yīng)著javabean,就是調(diào)用setter設(shè)置新的屬性值,調(diào)用bean上的方法完成某些功能。比如關(guān)閉原來的數(shù)據(jù)庫連接,設(shè)置一個新的數(shù)據(jù)庫url,然后啟動新的數(shù)據(jù)庫連接,這些都是運(yùn)行期的操作,不需要你停止服務(wù)器。當(dāng)然,你完全可以自己編碼,自己實(shí)現(xiàn)對bean配置的治理。事實(shí)上,假如不使用jmx也可以達(dá)到配置的目的,不過使用jmx后,可以作的更專業(yè)點(diǎn)
  
  jmx在使用上的結(jié)構(gòu)是怎么樣的?
  
  jmx最新的規(guī)范是1.2。從使用上來說,jmx分為兩部分,服務(wù)端和客戶端。被治理的資源注冊到服務(wù)端,服務(wù)端可以開放某些協(xié)議和接口。客戶端通過某種方式連接到服務(wù)端,根據(jù)協(xié)議執(zhí)行某些操作,使得服務(wù)端更改資源的配置和狀態(tài)。
  
  當(dāng)然,上面這種說法是很粗糙的,具體的細(xì)節(jié)可以查看jmx規(guī)范http://java.sun.com/PRodUCts/JavaManagement/
  
  spring和jmx集成有什么作用?
  
  spring的最主要功能是進(jìn)行ioc裝配。而這個裝配相對來說是靜態(tài)的,一旦程序啟動就需要通過其他手段來更改bean的屬性。jmx就是運(yùn)行時改變配置的一種方法。
  
  spring是怎么集成jmx的?
  
  spring對jmx的集成體現(xiàn)在兩個方面
  
  一方面,假如你處于編寫客戶端代碼的情況,spring提供了org.springframework.jmx.access 包,使得你可以很輕易的同Server連接實(shí)現(xiàn)治理代碼。
  
  另一方面,spring提供了org.springframework.jmx.eXPort 包。使得你不用編寫任何代碼,就可以將spring下治理的bean作為jmx資源注冊到server中。下面我們只討論export。
  
  jmx中經(jīng)常提到的MBean是什么?
  
  MBean就是被jmx治理的資源。一般有兩種類型的MBean,標(biāo)準(zhǔn)的和動態(tài)的。
  
  標(biāo)準(zhǔn)類型的MBean最簡單,它能治理的資源(包括屬性,方法,時間)必須定義在接口中,然后MBean必須實(shí)現(xiàn)這個接口。它的命名也必須遵循一定的規(guī)范,例如我們的MBean為Hello,則接口必須為HelloMBean。
  
  動態(tài)MBean必須實(shí)現(xiàn)javax.management.DynamicMBean接口,所有的屬性,方法都在運(yùn)行時定義。
  
  Spring的export 支持那種類型的bean?我的javabean必須符合jmx規(guī)范么?
  
  Spring支持把任何一種bean作為MBean。假如這個javabean本身就是按照jmx規(guī)范設(shè)計的MBean,spring會簡單的把他注冊到j(luò)mx server中。假如這個bean不是MBean,那么spring會動態(tài)創(chuàng)建一個MBean(事實(shí)上是一個model MBean),再把原先的這個bean設(shè)置到這個新創(chuàng)建的MBean。jmx server通過這個MBean間接的治理對應(yīng)的資源。
  
  假如不用spring,我可以使用jmx么?
  
  當(dāng)然可以。不過使用spring,你可以簡單的和現(xiàn)有系統(tǒng)集成。你不需要編寫一行代碼,就能將你的應(yīng)用建立在jmx基礎(chǔ)上。
  
  你說的都很好,我也決定使用spring對jmx的集成了,那么我怎么開始?
  
  首先你要下載spring1.2版本,接著要找到j(luò)mx的某個實(shí)現(xiàn)。假如你使用的是jdk1.5,那么你已經(jīng)內(nèi)置了jmx功能。假如你使用的是更低的版本,那么你需要下載一個jmx的實(shí)現(xiàn)。一般有兩個選擇,下載sun的參考實(shí)現(xiàn)http://java.sun.com/products/JavaManagement/或者找一個更“專業(yè)”的實(shí)現(xiàn),比如mx4j http://mx4j.sourceforge.net/
  
  下面我以sun參考實(shí)現(xiàn)為例子。
  
  spring中怎么配置jmx export?
  
  java代碼:
  
  <?XML version="1.0" encoding="UTF-8"?>
  <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
  
  <beans>
  <bean id="jmxMBeanExport" class="org.springframework.jmx.export.MBeanExporter">
  <property name="server">
  <bean class="javax.management.MBeanServerFactory" factory-method="createMBeanServer"/>
  </property>
  <property name="beans">
  <map>
  <entry key="MyAgent:name=Htmladapter,port=9092">
  <bean class="com.sun.jdmk.comm.HtmlAdaptorServer" init-method="start">
  <property name="port">
  <value>9092</value>
  </property>
  </bean>
  </entry>
  
  </map>
  </property>
  </bean>
  
  </beans>
  
  將這個applicationContext啟動起來,然后在瀏覽器中打開http://localhost:9092/,你應(yīng)該能看到一個jmx的治理界面。
  
  配置文件中的HtmlAdaptorServer有雙重身份,首先他是一個MBean,被jmx server治理;其次他對外打開了一個接口,可以通過他治理jmx。我們稱這種MBean為Protocol adapters 或者connectors。
  
  事實(shí)上,HtmlAdaptorServer的是放在jmxtools.jar中的。你也可以在其他jmx實(shí)現(xiàn)上(比如mx4j的Server)也使用這個Adaptor。這就是使用jmx的優(yōu)勢:有一個統(tǒng)一的治理平臺,可以使用任何一種和標(biāo)準(zhǔn)兼容的治理工具。
  
  我如何將自己的bean export出來?
  
  很簡單,只需要多一行entry就可以了,比如java代碼:
  
  <entry key="MyAgent:name=hello">
  <ref bean="hello"/>
  </entry>
  
  Spring怎么知道要把我的bean中的哪些屬性和方法暴露出來?
  
  Spring其實(shí)不知道。假如你不作任何配置,那么他會采用一種很極端的方式所有的getter/setter都作為jmx中的屬性,所有的public方法,都作為jmx中的方法。但是從Object下繼續(xù)來的會被屏蔽,所以,你不會在jmx中看到toString這個方法。
  
  事實(shí)上,spring是通過MBeanInfoAssembler來獲取資源信息的。默認(rèn)情況下他用的是SimpleReflectiveMBeanInfoAssembler。假如你有定制的要求,那么可以用其他的MBeanInfoAssembler。
  
  我看到了org.springframework.jmx.export.annotation。這個似乎是jdk1.5 annotations 用的。我也必須使用jdk1.5么?
  
  org.springframework.jmx.export.annotation下的這些類是確實(shí)配合annotation用的。上面說過,假如要定制暴露給jmx中的屬性和方法,那么需要使用其他的MBeanInfoAssembler。其中一種方法是利用annotations。不過假如你不用到annotation,就不需要使用jdk1.5。annotations只是一個可選項
  
  jmx和spring不能作什么?
  
  即使你用了jmx和spring,也有很多是他們不能完成的功能,比如他們不能直接幫助你向老板要求加薪,不能阻止某些國家對海峽的干涉,更不能協(xié)助人類探索火星……
  
  好了,回到正題,jmx和spring只是協(xié)助你完成某些功能,而且這些功能相對來說還是很有限的。首先jmx中可被治理的屬性只能是一些簡單類型,比如數(shù)字或者字符。其次jmx也不能自動幫你把修改后的屬性保存起來。所以假如你自己不寫特定的代碼,下次程序啟動后還是原始的配置。不過不管怎么說,有了spring和jmx,“究竟,生活更美好了些”

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: aaaaa国产欧美一区二区 | 美国av免费看 | 亚洲九九色| 欧美三级毛片 | 久久国产精品区 | 最新av网址在线观看 | 久久亚洲网 | 免费a视频在线观看 | 一级一级一级一级毛片 | 久久久国产精品网站 | 欧美黄色大片免费观看 | 免费放黄网站在线播放 | 手机国产乱子伦精品视频 | 久久精品re | 91av99| 本色视频aaaaaa一级网站 | 中文字幕网站在线 | 成人福利免费在线观看 | 91精品国产777在线观看 | 特级a欧美做爰片毛片 | va免费视频 | 永久免费黄色大片 | 国产资源在线视频 | 伊人亚洲精品 | 中国女警察一级毛片视频 | 午夜影视一区二区 | 日本综合久久 | 欧美高清一级片 | 久久最新免费视频 | 99欧美精品 | 久久99国产综合精品 | 麻豆视频网 | 久久精品毛片 | 毛片在线免费观看完整版 | 欧美一级免费在线观看 | 欧美一级做一级爱a做片性 91在线视频观看 | www.9191.com| 欧美女同hd | 成人爱爱电影 | 亚洲精品无码不卡在线播放he | 国产激爽大片在线播放 |