NotificationBroadcaster
NotificationBroadcaster (알림 브로드캐스터 인터페이스)
알림을 발행하는 MBean이 구현하는 인터페이스예요. 리스너를 MBean에 알림 리스너로 등록할 수 있게 해줘요.
본문
알림 전달(Notification dispatch): MBean이 알림을 발행할 때 addNotificationListener로 추가되고 이후 removeNotificationListener로 제거되지 않은 각 리스너를 고려해요. 해당 리스너에 필터가 제공되었는데 필터의 isNotificationEnabled 메서드가 false를 반환하면 리스너는 무시돼요. 그렇지 않으면 리스너의 handleNotification 메서드가 알림과 함께 addNotificationListener에 제공된 handback 객체로 호출돼요.
같은 리스너를 두 번 이상 추가하면 추가된 횟수만큼 고려돼요. 같은 리스너를 서로 다른 필터나 handback 객체로 추가하는 것이 종종 유용해요.
필터나 리스너의 메서드 호출이 Exception을 던지면 다른 리스너 호출을 막지 않아야 해요. 그러나 Error를 던지면 그 시점에서 알림 처리를 중단하고, 가능하다면 Error를 알림 발신자에게 전파하는 것이 권장돼요.
새 코드는 이 인터페이스 대신 NotificationEmitter 인터페이스를 사용해야 해요. 구현은 동기화에 주의해야 하며, 특히 리스너를 호출하는 동안 락을 보유하는 것은 좋지 않아요. 알림 전달 중 리스너 목록이 바뀔 가능성에 대처하려면 CopyOnWriteArrayList를 사용하는 것이 좋은 전략이에요.
주요 메서드로는 addNotificationListener(listener, filter, handback), removeNotificationListener(listener), getNotificationInfo()가 있어요.