HeartBeat MBean

Michael Gorelik

Jin Woo, Min (Korean Translation)

고친 과정
고침 $Revision: 1.2 $$Date: 2002/09/27 09:35:59 $

소개

이 문서는 심장박동(heartbeat) 서비스에 대한 개념을 소개하고 HeartBeatSource와 HeartBeatListener mbean를 사용하여 구현한 예제를 제공한다.

이 분산 시스템의 콤포넌트는 종종 통신하는 모듈이 정상인지, 모듈간의 네트웍 연결은 제대로 작동하는지 등을 알아야 필요가 있다. 예를 들어, 관리 시스템에서는 관리 노드는 분산되어 위치하고 있는 에이전트들이 동작하고 있고 이것과 통신할 수 있는지를 알고 싶어 한다. 만약 관리 노드에서 에이전트가 다운되어 있는 것을 발견한다면, 그것과 통신할 수 없고, 에러 이벤트를 발생할 것이다.

heartbeat 메카니즘은 종종 위와 같은 곳에서 구현된다. 이 메카니즘은 2개의 유틸리티 MBean과 HeartBeatSource MBean, HeartBeatListener MBean을 이용하여 MX4J에 구현되어 있다.

HeartBeatSource

HeartBeatSource 객체는 listener 객체를 등록하고 규칙적으로 listener에서 원격지 호출을 한다. 만약 등록된 listener가 몇번의 시도후에도 호출하지 못한다면, listener는 HeartBeatSource 객체의 의해서 삭제된다.

HeartBeatListener 객체는 connector 형태로 제공되며 HeartBeatSource와 함께 등록될 때 참조한다. 현재는 RMI connector 형태만 지원된다.

예 4.5. The HeartBeatSourceMBean 클래스

		  
/**
 * heartbeat 메카니즘을 지원하는 모든 모듈에서 구현할 인터페이스
 */
public interface HeartBeatMBean
{
   /**
    * 이 HeartBeatMBean으로부터 heartbeat notification을 받기위해
    * 어떤 heartbeat listener를 추가한다.
    *
    */
   public void addHeartBeatListener(String heartBeatListenerName, Object connectorType, Object listenerAddress);

   /**
    * 이 HeartBeatMBean으로부터 더 이상 heartbeat notification을
    * 받지 않는 어떤 heartbeat listener를 삭제한다.
    */
   public void removeHeartBeatListener(String heartBeatListenerName);
}
                  
         

HeartBeatListener

예 4.6. The HeartBeatListenerMBean 클래스

		  
/**
 * 콜백 인터페이스. HeartBeatSource는 heartbeat을 보내기 위해
 * 이 인터페이스를 구현한 객체를 호출한다.
 */
public interface HeartBeatListenerMBean
{
   public static final String DEFAULT_LISTENER_NAME = "type=heartBeatListener";

   public void processHeartBeat(String heartBeatSource);
}
                  
         

Heartbeat MBeans 사용하기