一个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”:

进入页面:
点击“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>