jmx通知机制

最近写代码用到jmx通知机制,小记一下


JMX notification model分别依靠下列组件来实现三个角色:
A. NotificationBroadcaster接口, 事件广播发出者,该接口允许希望得到通知的监听者注册。
B. Notification, Notification 类表示 MBean 所发出的通知。它包含对源 MBean 的引用,可以被直接使用,也可以根据传递的事件的需要而被扩
展。 
C. NotificationListener接口, 事件监听者或者接受者。

代码中实现的通知机制


广播类


      //广播类 必须实现NotificationBroadcaster接口,但是java提供了一个NotificationBroadcasterSupport类实现了NotificationBroadcaster接口,可以用作发送通知的 MBean 的超类,并提供一个方法叫sendNotification

//SipTraceMXBean收到跟踪消息,通过此方法将通知消息发送给监听者
private void sendToConsole(TracePacket packet) {
Notification notif = new Notification(cC.getJmxNotifType(), cT, -1);
notif.setUserData(packet.getAttributeMap());
cT.sendNotification(notif);
}

监听者

       

//监听类 必须实现NotificationListener接口

public class ConsoleListener implements NotificationListener, Serializable{

public void handleNotification(Notification notification, Object handback) {}

Object notif = notification.getUserData();

//通知消息数据的处理

。。。。。。。。

}

       

handback -一个不透明对象,用于帮助侦听器关联关于 MBean 发出者的信息。在 addListener 调用期间将此对象传递到 MBean,并在不经修改的情况下重发到侦听器。MBean 对象不应使用或修改该对象。



监听者注册


      

//监听端通过获取到通知端的jmx连接,注册listener

url =new JMXServiceURL((String) c.get("traceserver"));

jmxConnector =JMXConnectorFactory.connect(url);

MBeanServerConnection   mbsc =jmxConnector.getMBeanServerConnection();

ConsoleListener cL = new ConsoleListener();

mbsc.addNotificationListener(objectName, cL, null, null);


void addNotificationListener(ObjectName name, NotificationListener listener, NotificationFilter filter, Object handback) throws InstanceNotFoundException, IOException


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值