天天看點

從零開始玩轉JMX(二)——Condition

一個MBean提供的管理接口允許代理對其管理資源進行控制和配置。然而,對管理複雜的分布式系統來說,這些接口知識提供了一部分功能。通常,管理應用程式需要對狀态變化或者當特别情況發生變化時作出反映。Notification起到了MBean之間的溝通橋梁的作用。JMX Notification模型和Java Event模型類似,将一些重要的資訊,狀态的轉變,資料的變更傳遞給Notification Listener,以便資源的管理。

通知模型僅僅涉及了在同一個JMX代理中的管理構件之間的事件傳播。JMX通知模型依靠以下幾個部分:

Notification,一個通用的事件類型,該類辨別事件的類型,可以被直接使用,也可以根據傳遞的事件的需要而被擴充。

NotificationListener接口,接受通知的對象需實作此接口。

NotificationFilter接口,作為通知過濾器的對象需實作此接口,為通知監聽者提供了一個過濾通知的過濾器。

NotificationBroadcaster接口,通知發送者需實作此接口,該接口允許希望得到通知的監聽者注冊。

發送一個通用類型的通知,任何一個監聽者都會得到該通知。是以,監聽者需提供過濾器來選擇所需要接受的通知。任何類型的MBean,标準的或動态的,都可以作為一個通知發送者,也可以作為一個通知監聽者,或兩者都是。

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

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

引入新的類XiaoSi.java和XiaosiMBean:

接下去建立Hello類的Listener(HelloListener.java),用于監聽Notification的消息包并處理。

修改HelloAgent的代碼:

運作HelloAgent,然後在浏覽器中輸入localhost:8080, 點選“name=xiaosi”:

從零開始玩轉JMX(二)——Condition

進入頁面:

從零開始玩轉JMX(二)——Condition

點選“hi”按鈕,此時控制台列印:

<a href="http://www.open-open.com/lib/view/open1397359125465.html">JMX整理</a>

<a href="http://blog.chinaunix.net/uid-20749563-id-718398.html">JMX簡介</a>

<a href="http://blog.csdn.net/DryKillLogic/article/category/762777">http://blog.csdn.net/DryKillLogic/article/category/762777</a>

<a href="http://blog.csdn.net/s464036801/article/details/9980439">用Apache的commons-modeler來輔助開發JMX</a>