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

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

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

    Terry.Li-彬

    虛其心,可解天下之問;專其心,可治天下之學;靜其心,可悟天下之理;恒其心,可成天下之業。

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      143 隨筆 :: 344 文章 :: 130 評論 :: 0 Trackbacks

    1、前言

    JMX管理及使用日趨成熟。spring對bean的管理功能也很強大,通過annotation把某些方法暴露成MBean,然后通過JMX遠程管理,在某些場景下會帶來意想不到的效果。

    ?

    本文只介紹兩個內容:spring通過annotation暴露MBean、相關的xml配置。

    ?

    ?

    2、spring通過annotation暴露MBean

    ?

    ??????2.1?? 涉及到三個重要的annotation:@ManagedResource @ManagedAttribute 和 @ManagedOperation。

    ?

    用途 Commons Attributes屬性 JDK 5.0注解 屬性/注解類型
    將類的所有實例標識為JMX受控資源 ManagedResource @ManagedResource Class 類
    將方法標識為JMX操作 ManagedOperation @ManagedOperation Method方法
    將getter或者setter標識為部分JMX屬性 ManagedAttribute @ManagedAttribute Method (only getters and setters) 方法(僅getters和setters)
    定義操作參數說明 ManagedOperationParameter @ManagedOperationParameter@ManagedOperationParameters Method 方法

    ?

    ?

    ????2.2?? 看了上面官方解釋,應該有個大概的了解,下面再舉個例子。

    ?

    Java代碼??收藏代碼
    1. @ManagedResource (objectName= "bean:name=lionbuleTest" ,?description= "My?Managed?Bean" )??
    2. public ? class ?AnnotationTestMBean{??
    3. ????private?String?name;??
    4. ????private?int?age;??
    5. ??????
    6. ????@ManagedAttribute(description="The?Name?Attribute")??
    7. ????public?void?setName(String?name)?{??
    8. ????????this.name?=?name;??
    9. ????}??
    10. ??
    11. ????@ManagedAttribute()??
    12. ????public?String?getName()?{??
    13. ????????return?name;??
    14. ????}????
    15. ????public?int?getAge()?{??
    16. ????????return?age;??
    17. ????}??
    18. ????public?void?setAge(int?age)?{??
    19. ????????this.age?=?age;??
    20. ????}??
    21. ??????
    22. ????@ManagedOperation(description="Add?two?numbers")??
    23. ????@ManagedOperationParameters({??
    24. ????@ManagedOperationParameter(name?=?"x",?description?=?"The?first?number"),??
    25. ????@ManagedOperationParameter(name?=?"y",?description?=?"The?second?number")})??
    26. ????public?int?add_1(int?x,?int?y)?{??
    27. ????????return?x?+?y;??
    28. ????}??
    29. ??
    30. ????@ManagedOperation??
    31. ????public?int?add_2(int?x,?int?y){??
    32. ????????return?x?+?y;??
    33. ????}??
    34. ????
    35. ????public?void?dontExposeMe()?{??
    36. ????????throw?new?RuntimeException();??
    37. ????}??
    38. ??
    39. }??

    ?

    ???2.3??Jconsole的管理界面截圖:

    ?

    圖1、查看已暴露MBean的屬性

    ?

    圖2、查看已暴露MBean的方法

    ?

    ???2.4?? 解釋說明:

    ?

    ???????? 1、@ManagedResource?@ManagedAttribute 和 @ManagedOperation?還有許多參數,具體使用請參考spring官方手冊。(?spring手冊[2.5.3] ---- 20.3.4.?源代碼級的元數據類型)

    ?

    ???????? 2、@ManagedOperationParameters 是對@ManagedOperation的補充。具體看代碼樣例中的add1方法上的注解,然后再看圖2(查看已暴露MBean的方法)的add1方法和add2的區別。添加參數說明的add1方法會顯示出參數名,而add2方法則是默認的參數名p1/p2。

    ?

    ???????? 3、沒有添加@ManagedOperation和@ManagedAttribute的方法,在圖2中就沒有看到,說明添加了注解的方法暴露MBean是可用的。

    ?

    ???????? 4、@ManagedOperation和@ManagedAttribute的區別,請查看2.1的詳解。

    ?

    3、xml配置

    ? ? 方式一、通用spring bean配置

    Xml代碼??收藏代碼
    1. ??? < bean ? id = "jmxAttributeSource" ??
    2. ?????????class="org.springframework.jmx.export.annotation.AnnotationJmxAttributeSource"/>??
    3. ???<!--?使用注解元數據創建管理接口?-->??
    4. ???<bean?id="assembler"??
    5. ?????????class="org.springframework.jmx.export.assembler.MetadataMBeanInfoAssembler">??
    6. ???????<property?name="attributeSource"?ref="jmxAttributeSource"/>??
    7. ???</bean>??
    8. ???<!--?從注解中得到ObjectName??-->??
    9. ???<bean?id="namingStrategy"??
    10. ?????????class="org.springframework.jmx.export.naming.MetadataNamingStrategy">??
    11. ???????<property?name="attributeSource"?ref="jmxAttributeSource"/>??
    12. ???</bean>??
    13. ???<bean?id="exporter"?class="org.springframework.jmx.export.MBeanExporter">??
    14. ???????<property?name="assembler"?ref="assembler"/>??
    15. ???????<property?name="namingStrategy"?ref="namingStrategy"/>??
    16. ???????<property?name="autodetect"?value="true"/>??
    17. ???</bean>??
    18. ??
    19. <!--?配置服務器端連接器RMI?--> ??
    20. < bean ? class = "org.springframework.remoting.rmi.RmiRegistryFactoryBean" > ??????????
    21. ????<property?name="port"?value="2088"/>??
    22. </ bean > ??
    23. < bean ? id = "serverConnector" ??
    24. ??????class="org.springframework.jmx.support.ConnectorServerFactoryBean">??
    25. ??<property?name="objectName"?value="connector:name=rmi"/>??
    26. ?????????<!--?客戶端鏈接地址配置?-->??
    27. ??<property?name="serviceUrl"??
    28. ????????????value="service:jmx:rmi://localhost/jndi/rmi://localhost:2088/myconnector"/>??
    29. </ bean > ??
    30. ??
    31. <!--?自定義的mbean?--> ??
    32. ???<bean?id="annotationTestMBean"?class="com.lionbule.biz.test.AnnotationTestMBean">??
    33. ???????<property?name="name"?value="TEST"/>??
    34. ???????<property?name="age"?value="100"/>??
    35. ???</bean>??

    ??? 配置中,已經加了相應的注釋。還不是很清楚,可以查詢spring官方手冊。

    ?

    ? ? 方式二、簡化spring-context配置

    Xml代碼??收藏代碼
    1. <? xml ? version = "1.0" ? encoding = "UTF-8" ?> ??
    2. < beans ? xmlns = "http://www.springframework.org/schema/beans" ??
    3. ????xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"??
    4. ????xmlns:context="http://www.springframework.org/schema/context"??
    5. ????xsi:schemaLocation="http://www.springframework.org/schema/beans??
    6. ????????????????????????http://www.springframework.org/schema/beans/spring-beans.xsd??
    7. ????????????????????????http://www.springframework.org/schema/context??
    8. ????????????????????????http://www.springframework.org/schema/context/spring-context.xsd"??
    9. ????default-autowire="byName">??
    10. ??
    11. ????<context:mbean-export?default-domain="ShowCase"?registration="replaceExisting"?/>??
    12. ????<!--?自定義的mbean?-->??
    13. ????<bean?id="annotationTestMBean"?class="com.lionbule.biz.test.AnnotationTestMBean">??
    14. ????????<property?name="name"?value="TEST"/>??
    15. ????????<property?name="age"?value="100"/>??
    16. ????</bean>??
    17. </ beans > ??

    ? ??注意:方式二對ClassName和beanName有約束,請以‘MBean’結尾。?

    ?

    4、客戶端工具連接

    ?

    ??? 常用的客戶端工具:Jconsole、jvisualvm、jmanager等。

    ??? 連接方式有多種,但本案只介紹了RMI連接管理,所以本案的鏈接地址為:

    Xml代碼??收藏代碼
    1. service:jmx:rmi://localhost/jndi/rmi://localhost:2088/myconnector??

    ?

    參考資料:

    1、spring官方手冊

    ?????http://static.springsource.org/spring/docs/2.5.x/reference/jmx.html#jmx-interface

    2. ?http://wiki.springside.org.cn/display/SpringSide3/JMX

    posted on 2013-01-31 17:02 禮物 閱讀(2465) 評論(0)  編輯  收藏 所屬分類: JMX

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

    網站導航:
     
    主站蜘蛛池模板: 成人免费无码视频在线网站| 国产精品99久久免费观看| 无码人妻久久一区二区三区免费丨 | 亚洲七久久之综合七久久| 一二三四视频在线观看中文版免费 | 十八禁在线观看视频播放免费| 国产a级特黄的片子视频免费| MM1313亚洲精品无码久久| 国产又大又粗又硬又长免费| 美女啪啪网站又黄又免费| 亚洲乱码国产一区网址| 国产福利在线观看永久免费| 国产亚洲精品精华液| 麻豆成人久久精品二区三区免费| 亚洲美女aⅴ久久久91| 嘿嘿嘿视频免费网站在线观看| 久久乐国产综合亚洲精品| 国产青草视频在线观看免费影院| 久久久久亚洲AV无码去区首| 亚洲一区日韩高清中文字幕亚洲 | 又硬又粗又长又爽免费看 | 四虎在线免费视频| 亚洲精品123区在线观看| 国产免费啪嗒啪嗒视频看看| 中文在线观看永久免费| 亚洲欧洲视频在线观看| 女人18毛片水真多免费播放| 一本到卡二卡三卡免费高| 亚洲一区二区电影| 无码高潮少妇毛多水多水免费| 黄色免费网站在线看| 久久青青草原亚洲AV无码麻豆| 免费人成视频在线| 国产精品hd免费观看| 亚洲精品在线免费观看视频| 在线视频免费国产成人| 精品免费视在线观看| 67194在线午夜亚洲| 亚洲乱码中文字幕综合234| 中文字幕在线观看免费视频| 理论亚洲区美一区二区三区|