public interface NotificationBroadcaster
由发出通知的MBean实现的接口。 它允许监听器作为通知监听器注册到MBean。
当MBean发出通知时,它会将每个已添加的侦听器视为addNotificationListener
,而不是随后用removeNotificationListener
删除。 如果为该监听器提供过滤器,并且如果过滤器的isNotificationEnabled
方法返回false,则忽略监听器。 否则,监听器的handleNotification
方法与通知一起调用,以及提供给addNotificationListener
对象。
如果同一个监听器被多次添加,它被认为是添加的次数。 通过不同的过滤器或回传对象添加相同的监听器通常很有用。
关于调用过滤器和侦听器的方法的线程,此接口的实现可能会有所不同。
如果过滤器或侦听器的方法调用抛出异常
,则该异常不应阻止其他侦听器被调用。 但是,如果方法调用抛出一个Error
,那么建议在该点停止通知的处理,如果可以将Error Error
给通知的发件人,那么应该这样做。
新代码应该使用NotificationEmitter
接口。
该接口和NotificationEmitter
应该小心同步。 特别地,实现该方法在调用监听器时保持任何锁定并不是一个好主意。 要处理在发送通知时听众列表可能发生变化的可能性,一个好的策略是使用CopyOnWriteArrayList
作为此列表。
Modifier and Type | Method and Description |
---|---|
void |
addNotificationListener(NotificationListener listener, NotificationFilter filter, Object handback)
添加一个监听器到这个MBean。
|
MBeanNotificationInfo[] |
getNotificationInfo()
返回一个数组,指示MBean可能发送的每个通知,通知的Java类的名称和通知类型。
|
void |
removeNotificationListener(NotificationListener listener)
从这个MBean中删除一个监听器。
|
void addNotificationListener(NotificationListener listener, NotificationFilter filter, Object handback) throws IllegalArgumentException
listener
- 将处理广播公司发出的通知的侦听器对象。
filter
- 过滤器对象。
如果过滤器为空,则在处理通知之前不会执行过滤。
handback
- 发出通知时发送回侦听器的不透明对象。
该通知广播对象无法使用此对象。
通知发送者应该重新发送更改。
IllegalArgumentException
- 侦听器参数为空。
removeNotificationListener(javax.management.NotificationListener)
void removeNotificationListener(NotificationListener listener) throws ListenerNotFoundException
listener
- 以前添加到此MBean的侦听器。
ListenerNotFoundException
- 监听器未注册到MBean。
addNotificationListener(javax.management.NotificationListener, javax.management.NotificationFilter, java.lang.Object)
,
NotificationEmitter.removeNotificationListener(javax.management.NotificationListener, javax.management.NotificationFilter, java.lang.Object)
MBeanNotificationInfo[] getNotificationInfo()
返回一个数组,指示MBean可能发送的每个通知,通知的Java类的名称和通知类型。
MBean发送不在此阵列中描述的通知并不是非法的。 但是,MBean服务器的某些客户端可能依赖于正确运行的阵列。