日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

从零开始玩转JMX(二)——Condition

發(fā)布時間:2024/4/11 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 从零开始玩转JMX(二)——Condition 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

歡迎支持筆者新作:《深入理解Kafka:核心設計與實踐原理》和《RabbitMQ實戰(zhàn)指南》,同時歡迎關(guān)注筆者的微信公眾號:朱小廝的博客。


歡迎跳轉(zhuǎn)到本文的原文鏈接:https://honeypps.com/java/jmx-quick-start-2-condition/

Notification

一個MBean提供的管理接口允許代理對其管理資源進行控制和配置。然而,對管理復雜的分布式系統(tǒng)來說,這些接口知識提供了一部分功能。通常,管理應用程序需要對狀態(tài)變化或者當特別情況發(fā)生變化時作出反映。Notification起到了MBean之間的溝通橋梁的作用。JMX Notification模型和Java Event模型類似,將一些重要的信息,狀態(tài)的轉(zhuǎn)變,數(shù)據(jù)的變更傳遞給Notification Listener,以便資源的管理。
通知模型僅僅涉及了在同一個JMX代理中的管理構(gòu)件之間的事件傳播。JMX通知模型依靠以下幾個部分:

  • Notification,一個通用的事件類型,該類標識事件的類型,可以被直接使用,也可以根據(jù)傳遞的事件的需要而被擴展。
  • NotificationListener接口,接受通知的對象需實現(xiàn)此接口。
  • NotificationFilter接口,作為通知過濾器的對象需實現(xiàn)此接口,為通知監(jiān)聽者提供了一個過濾通知的過濾器。
  • NotificationBroadcaster接口,通知發(fā)送者需實現(xiàn)此接口,該接口允許希望得到通知的監(jiān)聽者注冊。
  • 發(fā)送一個通用類型的通知,任何一個監(jiān)聽者都會得到該通知。因此,監(jiān)聽者需提供過濾器來選擇所需要接受的通知。任何類型的MBean,標準的或動態(tài)的,都可以作為一個通知發(fā)送者,也可以作為一個通知監(jiān)聽者,或兩者都是。

    這里采用一個案例來說明,前面的Hello中有一個printHello(String whoName)方法,意思根據(jù)碰到的是誰來打招呼,比如:

    小廝從對面走來,說:“hi”。我們回之以禮,說:“Hello, Xiaosi”.
    首先這里需要小廝先說一個“hi”(相應一個操作方法),然后他說的話封裝成了聲波(Notification的消息包)傳遞出去。然后我們要給Hello類裝上一個監(jiān)聽器(NotificationListener),這個監(jiān)聽器將捕捉到小廝的Notification消息包,然后回復說:“Hello, Xiaosi”.

    引入新的類XiaoSi.java和XiaosiMBean:

    package com.test.jmx.notification;import javax.management.Notification; import javax.management.NotificationBroadcasterSupport;public class XiaoSi extends NotificationBroadcasterSupport implements XiaoSiMBean {private int seq = 0;/** 必需繼承NotificationBroadcasterSupport* 此類只有一個hi方法,方法只有兩句:創(chuàng)建一個Notification消息包,然后將包發(fā)出去* 如果你還要在消息包上附加其他數(shù)據(jù),Notification還有一個setUserData方法可供使用*/@Overridepublic void hi() {Notification n = new Notification(//創(chuàng)建一個信息包"xiaosi.hi",//給這個Notification起個名稱this,//由誰發(fā)出的Notification++seq,//一系列通知中的序列號,可以設置任意數(shù)值System.currentTimeMillis(),//發(fā)出時間"Xiaosi"//發(fā)出信息的消息文本);sendNotification(n);} } package com.test.jmx.notification;public interface XiaoSiMBean {public void hi(); }

    接下去創(chuàng)建Hello類的Listener(HelloListener.java),用于監(jiān)聽Notification的消息包并處理。

    package com.test.jmx.notification;import com.test.jmx.Hello;import javax.management.Notification; import javax.management.NotificationListener;public class HelloListener implements NotificationListener {@Overridepublic void handleNotification(Notification notification, Object handback) {System.out.println("----------HelloListener-Begin------------");System.out.println("\ttype = "+ notification.getType());System.out.println("\tsource = "+notification.getSource());System.out.println("\tseq = "+notification.getSequenceNumber());System.out.println("\tsend time = "+notification.getTimeStamp());System.out.println("\tmessage="+notification.getMessage());System.out.println("----------HelloListener-End------------");if (handback != null) {if (handback instanceof Hello) {Hello hello = (Hello)handback;hello.printHello(notification.getMessage());}}} }

    修改HelloAgent的代碼:

    package com.test.jmx.notification;import com.sun.jdmk.comm.HtmlAdaptorServer; import com.test.jmx.Hello;import javax.management.*; import java.lang.management.ManagementFactory;public class HelloAgent {public static void main(String[] args) throws MalformedObjectNameException, NotCompliantMBeanException, InstanceAlreadyExistsException, MBeanRegistrationException {MBeanServer server = ManagementFactory.getPlatformMBeanServer();ObjectName helloName = new ObjectName("MyMBean:name=HelloWorld");Hello hello = new Hello();server.registerMBean(hello,helloName);ObjectName adapterName = new ObjectName("MyBean:name=htmladapter,port=8082");HtmlAdaptorServer adapter = new HtmlAdaptorServer();server.registerMBean(adapter,adapterName);XiaoSi xs = new XiaoSi();server.registerMBean(xs,new ObjectName("MyMBean:name=xiaosi"));xs.addNotificationListener(new HelloListener(),null,hello);adapter.start();} }

    運行HelloAgent,然后在瀏覽器中輸入localhost:8080, 點擊“name=xiaosi”:

    進入頁面:

    點擊“hi”按鈕,此時控制臺打印:

    ----------HelloListener-Begin------------type = xiaosi.hisource = com.test.jmx.notification.XiaoSi@12f7757cseq = 1send time = 1476184927551message=Xiaosi ----------HelloListener-End------------ Hello, Xiaosi

    參考資料

  • JMX整理
  • JMX簡介
  • http://blog.csdn.net/DryKillLogic/article/category/762777
  • 用Apache的commons-modeler來輔助開發(fā)JMX
  • 歡迎跳轉(zhuǎn)到本文的原文鏈接:https://honeypps.com/java/jmx-quick-start-2-condition/


    歡迎支持筆者新作:《深入理解Kafka:核心設計與實踐原理》和《RabbitMQ實戰(zhàn)指南》,同時歡迎關(guān)注筆者的微信公眾號:朱小廝的博客。


    總結(jié)

    以上是生活随笔為你收集整理的从零开始玩转JMX(二)——Condition的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 男女福利视频 | 国产乱码精品一区二区三 | 亚洲精品黄色片 | 五月天中文字幕mv在线 | 久色网| 欧美一区二区三区在线 | 亚洲成人黄色 | 18成人免费观看网站下载 | 黄网免费视频 | 极品少妇av| 中文字幕欲求不满 | 龚玥菲三级露全乳视频 | 伊人焦久影院 | 波多野结衣欲乱上班族 | 在线观看av一区二区 | 亚洲成人免费在线视频 | 久久超碰av | 欧美香蕉 | 国产无遮挡又黄又爽在线观看 | 欧美成人综合视频 | 国产最新视频 | 九九色九九 | 日本一区二区免费在线 | 免费成人av在线 | 999国内精品永久免费视频 | 成人免费视频一区 | 成人精品视频99在线观看免费 | 精品人妻少妇AV无码专区 | 射精一区二区 | 黄网站在线观看视频 | 波多野结av衣东京热无码专区 | 久久超碰av| 日本a视频在线观看 | 免费激情网址 | 成人在线午夜 | 国产性生活片 | 黄色伊人网 | 亚色一区 | 女女调教被c哭捆绑喷水百合 | 少妇脚交调教玩男人的视频 | 中文字幕看片 | 成人av在线播放网站 | 淫视频网站 | 国产免费a级片 | 天天爽天天爽夜夜爽毛片 | 亚洲视屏一区 | 精品无码久久久久久国产 | 天天爱天天操 | 国产成人精品无码免费看81 | 好男人www社区 | 在线观看网站污 | 国产精品精品久久久 | 成人精品视频网站 | 日本一道本 | 乱lun合集男男高h | 激情五月婷婷 | 超碰在线免费 | 日韩av中文字幕在线播放 | 午夜精品久久久久久久99热浪潮 | 国产成人精品999在线观看 | 亚洲人 女学生 打屁股 得到 | 国产日韩二区 | 一本加勒比北条麻妃 | 国产ts系列 | aaa特级毛片 | 福利电影一区 | 3344av| 天堂一级片 | 永久免费AV无码网站韩国毛片 | 一区二区小说 | 光溜溜视频素材大全美女 | 一级黄色片在线看 | 超碰在线资源 | 蜜桃一区二区 | 人人干人人搞 | 91夜色视频 | 国产一区在线免费观看 | 校园春色综合网 | 亚洲欧美日韩在线一区 | 亚洲男女激情 | 一级片高清 | 伊人影院在线播放 | 久久免费视频一区二区 | 男人插女人免费视频 | 一区二区三区日韩视频 | 成av人片在线观看www | 在线免费中文字幕 | wwwjavhd| 国产又粗又猛视频 | 欧美天天性影院 | 色伊人| 午夜视频在线观看国产 | 国产一级二级在线 | 久久六| 欧美成人黑人xx视频免费观看 | 日韩乱码人妻无码中文字幕 | 中文字幕超碰在线 | 国产高清无密码一区二区三区 | 国产剧情av引诱维修工 |