스케줄러 알림 수신

스케줄러가 태스크에서 조작을 수행할 때 이 스케줄러에 의해 다양한 알림 이벤트가 생성됩니다. 이러한 알림은 다음 주제에서 설명합니다.

이 태스크 정보

태스크를 수행하는 스케줄러가 생성한 알림 이벤트는 다음을 포함합니다.
스케줄됨
태스크가 스케줄되었습니다.
영구 제거됨
태스크가 지속적 저장소에서 영구적으로 삭제되었습니다.
일시중단됨
태스크가 일시중단되었습니다.
재개됨
태스크가 재개되었습니다.
완료
태스크가 완전히 실행되었습니다. 반복 태스크일 경우, 반복 횟수만큼 수행되었습니다.
취소됨
태스크가 취소되었습니다. 다시 실행되지 않습니다.
실행 중
태스크를 실행할 준비가 되었습니다.
실행됨
태스크가 성공적으로 완료되었습니다.
실행 실패
태스크를 성공적으로 실행할 수 없습니다.

알림 이벤트를 수신하려면 태스크를 작성하기 전에 TaskInfo 인터페이스에서 setNotificationSink() 메소드를 호출하십시오. setNotificationSink() 메소드를 사용하면 콜백 역할을 수행할 세션 Bean과 생성되는 이벤트를 제한하는 마스크를 지정할 수 있습니다.

프로시저

  1. NotificationSink 세션 Bean을 작성하십시오. com.ibm.websphere.scheduler.NotificationSink 원격 인터페이스에서 handleEvent() 메소드를 구현하는 stateless 세션 Bean을 작성합니다. handleEvent() 메소드는 알림이 실행될 때 호출됩니다. 홈 및 원격 인터페이스는 다음과 같이 Bean의 배치 디스크립터에서 설정될 수 있습니다.
    com.ibm.websphere.scheduler.NotificationSinkHome
    com.ibm.websphere.scheduler.NotificationSink

    NotificationSink 인터페이스는 다음 메소드를 정의합니다.

    public void handleEvent(TaskNotificationInfo task) throws java.rmi.RemoteException;
  2. 스케줄러에 태스크를 제출하기 전에 TaskInfo 인터페이스 API setNotificationSink 메소드를 사용하여 알림 싱크 세션 Bean을 지정하십시오.
    태스크 핸들러를 설정하기 위해 WASScheduler MBean API를 사용하는 경우 JNDI 이름은 완전한 글로벌 JNDI 이름이어야 합니다. JSP(JavaServer Pages) 파일, 서블릿 또는 EJB(Enterprise JavaBeans) 컴포넌트를 사용하여 다음 코드 예제에 표시된 대로, 태스크에서 알림 싱크를 검색 및 설정하십시오.
    TaskInfo taskInfo = ...
    Object o = new InitialContext().lookup("java:comp/env/ejb/NotificationSink");
    NotificationSinkHome home = (NotificationSinkHome )javax.rmi.PortableRemoteObject.narrow
    (o,NotificationSinkHome.class);
    taskInfo.setNotificationSink(home,TaskNotificationInfo.ALL_EVENTS);
    또한 wsadmin 도구를 사용하여 다음 JACL 스크립트 예제에서 표시된 알림 싱크 콜백 세션 Bean을 설정할 수 있습니다.
    # Use the NotificationSinkHome’s Global JNDI name
    # Assume that a TaskInfo was already created...
    $taskInfo setNotificationSink “ejb/MyNotificationSink”
  3. 이벤트 마스크를 지정하십시오. 이벤트 마스크는 정수 비트맵으로 지정됩니다. 특정 이벤트를 수신하는 TaskNotificationInfo.CREATED, 모든 이벤트 또는 특정 이벤트의 조합을 수신하는 TaskNotificationInfo.ALL_EVENTS와 같이 개별 마스크를 사용할 수 있습니다. Java™를 사용하는 경우 스크립트는 다음 예제와 같이 표시될 수 있습니다.
    int eventMask = TaskNotificationInfo.FIRED | TaskNotificationInfo.COMPLETE;
    taskInfo.setNotificationSink(home,eventMask);
    JACL을 사용하면 스크립트는 다음 예제와 비슷합니다.
    # Set the event mask based on two event constants.
    set eventmask [expr [java::field com.ibm.websphere.scheduler.TaskNotificationInfo FIRED] +
     [java::field com.ibm.websphere.scheduler.TaskNotificationInfo COMPLETE]]
    
    # Set our Notification Sink based on our global JNDI name AND event mask.
    # Note:  We need to use the full method signature here since the 
    # method resolver can’t always detect the right method.
    $taskInfo {setNotificationSink String int} "ejb/MyNotificationSink" $eventmask

결과

이제 알림 싱크 Bean이 TaskInfo 오브젝트에 설정되고 작성 메소드를 사용하여 스케줄러에 제출할 수 있습니다.

주제 유형을 표시하는 아이콘 태스크 주제



시간소인 아이콘 마지막 업데이트 날짜: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tsch_usenotificationsink
파일 이름:tsch_usenotificationsink.html