WebSphere Application Server Version 6.1 Feature Pack for Web Services   
             オペレーティング・システム: AIX , HP-UX, i5/OS, Linux, Solaris, Windows, Windows Vista, z/OS

             目次と検索結果のパーソナライズ化

スケジューラー通知の受信

スケジューラーがタスクの操作を行うと、各種の通知イベントが生成されます。 このトピックでは、これらの通知イベントについて説明します。

このタスクについて

スケジューラーがタスクを実行するときに、スケジューラーによって生成される通知イベントには、以下のものがあります。
Scheduled
タスクがスケジュールされています。
Purged
タスクがパーシスタント・ストアから永久に削除されます。
Suspended
タスクが中断されました。
Resumed
タスクが再開されました。
Complete
タスクが完全に実行されました。 これが繰り返しのタスクである場合、すべての繰り返しが 実行されました。
Cancelled
タスクがキャンセルされました。 タスクは再実行されません。
Firing
タスクの実行準備ができました。
Fired
タスクが正常に完了しました。
Fire failed
タスクが正常に完了できませんでした。

通知イベントを受け取るには、タスクを作成する前に、TaskInfo インターフェースに 対して setNotificationSink() メソッドを呼び出します。 setNotificationSink() メソッドを使用すると、コールバック として作用する Session Bean、および生成されるイベントを制限するマスクを指定することができます。

プロシージャー

  1. 通知シンク Session Bean を作成します。 com.ibm.websphere.scheduler.NotificationSink リモート・インターフェースの handleEvent() メソッドをインプリメントする Stateless Session 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() メソッドを使用して、 通知シンク Session Bean を指定します
    WASScheduler MBean API を使用して通知シンクを設定する場合には、JNDI 名が 完全修飾グローバル JNDI 名である必要があります。 JavaServer Pages (JSP) ファイル、サーブレット、または EJB コンポーネントを使用して、以下のコード例で示しているように、通知シンクを検索してタスクに設定します。
    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 スクリプト例のように通知シンク・コールバック Session 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 オブジェクトに設定され、create メソッドを使用してその Bean を スケジューラーにサブミットできるようになりました。



関連概念
スケジューラーを使用したタスク管理メソッド
関連タスク
Session Bean を呼び出すタスクの開発
Java Message Service メッセージを送信するタスクの開発
スケジューラーの管理
関連資料
スケジューラー・インターフェース
タスク・トピック    

ご利用条件 | フィードバック

最終更新: Jan 21, 2008 4:10:06 PM EST
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.wsfep.multiplatform.doc/info/ae/scheduler/tasks/tsch_usenotificationsink.html