Session Bean を呼び出すタスクの開発
スケジューラー API および WASScheduler MBean API は、 TaskInfo インターフェースの各種実装をサポートしています。 これらの実装はそれぞれ特定のタイプの作業のスケジューリングに使用することができます。
このタスクについて
TaskHandler セッション Bean のメソッドを呼び出すためのタスクを作成するには、以下のステップを実行します。
手順
- Enterprise JavaBeans (EJB) モジュールで、 新規のエンタープライズ・アプリケーションを作成します。 このアプリケーションは TaskHandler EJB モジュールをホスティングします。
- com.ibm.websphere.scheduler.TaskHandler リモート・インターフェースに process()
メソッドを実装する Stateless Session Bean を EJB モジュールに作成します。
作成するビジネス・ロジックを process() メソッドに配置します。process() メソッドは、タスクの実行時に
呼び出されます。ホーム・インターフェースおよびリモート・インターフェースは、デプロイメント記述子 Bean に
以下のように設定されている必要があります。
- com.ibm.websphere.scheduler.TaskHandlerHome
- com.ibm.websphere.scheduler.TaskHandler
- 以下の例のファクトリー・メソッドを使用して、BeanTaskInfo インターフェースのインスタンスを作成します。 JavaServer Pages (JSP) ファイル、サーブレット、または EJB コンポーネントを使用して、以下の
コード例のようにインスタンスを作成します。
このコードは以前に作成したタスク・ハンドラー EJB モジュールと同じアプリケーションに共存する必要があります。
// Assume that a scheduler has already been looked-up in JNDI. BeanTaskInfo taskInfo = (BeanTaskInfo) scheduler.createTaskInfo(BeanTaskInfo.class)
wsadmin ツールを使用して、以下の JACL スクリプト例のようにインスタンスを作成することもできます。
set taskHandlerHomeJNDIName ejb/MyTaskHandler # Map the JNDI name to the mbean name. The mbean name is formed by replacing the / in the jndi name # with . and prepending Scheduler_ regsub -all {/} $jndiName "." jndiNameset mbeanName Scheduler_$jndiName puts "Looking-up Scheduler MBean $mbeanName" set sched [$AdminControl queryNames WebSphere:*,type=WASScheduler,name=$mbeanName] puts $sched # Get the ObjectName format of the Scheduler MBean set schedO [$AdminControl makeObjectName $sched] # Create a BeanTaskInfo object using invoke_jmx puts "Creating BeanTaskInfo" set params [java::new {java.lang.Object[]} 1] $params set 0 [java::field com.ibm.websphere.scheduler.BeanTaskInfo class] set sigs [java::new {java.lang.String[]} 1] $sigs set 0 java.lang.Class set ti [$AdminControl invoke_jmx $schedO createTaskInfo $params $sigs] set bti [java::cast com.ibm.websphere.scheduler.BeanTaskInfo $ti] puts "Created the BeanTaskInfo object: $bti"
重要: BeanTaskInfo オブジェクトを 作成しても、タスクはパーシスタント・ストアに追加されません。 その代わり、必要なデータのプレースホルダーが作成されます。 タスクがパーシスタント・ストアに追加されるのは、Scheduler に対して create() メソッドが 呼び出された後になります (トピック『スケジューラーへのタスクのサブミット』を参照)。 - BeanTaskInfo オブジェクトのパラメーターを設定します。 これらのパラメーターは、どの Session Bean がいつ呼び出されるかを定義します。TaskInfo インターフェースには
タスクの実行を制御するための set() メソッドが各種用意されており、いつタスクを実行し、実行時にどのような処理を行うかなどを
設定できます。
BeanTaskInfo インターフェースでは、 setTaskHandler メソッドを使用して、TaskHandler Java™ Naming and Directory Interface (JNDI) 名 または TaskHandlerHome を設定する必要があります。 タスク・ハンドラーの設定に WASScheduler MBean API を使用する場合は、 JNDI 名が完全修飾のグローバル JNDI 名である必要があります。
TaskInfo インターフェースでは追加の制御点も指定されています。これについては、API 資料を参照してください。 以下のコード例に示すように、TaskInfo interface API メソッドを使用してパラメーターを設定します。
//create a date object which represents 30 seconds from now java.util.Date startDate = new java.util.Date(System.currentTimeMillis()+30000); //find the session bean to be called when the task starts Object o = new InitialContext().lookup("java:comp/env/ejb/MyTaskHandlerHome"); TaskHandlerHome home = (TaskHandlerHome)javax.rmi.PortableRemoteObject.narrow(o,TaskHandlerHome.class); //now set the start time and task handler to be called in the task info taskInfo.setTaskHandler(home); taskInfo.setStartTime(startDate);
以下の JACL スクリプト例を使用してパラメーターを設定することもできます。
# Setup the task puts "Setting up the task..." # Set the startTime if you want the task to run at a specific time, for example: $bti setStartTime [java::new {java.util.Date long} [java::call System currentTimeMillis]] # Set the StartTimeInterval so the task runs in 30 seconds from now $bti setStartTimeInterval 30seconds # Set JNDI name of the EJB which will get called when the task runs. Since there is no # application J2EE Context when the task is created by the MBean, this must be a # global JNDI name. $bti setTaskHandler $taskHandlerHomeJNDIName # Do not purge the task when it's complete $bti setAutoPurge false # Set the name of the task. This can be any string value. $bti setName Created_by_MBean # If the task needs to run with specific authorization you can set the tasks Authentication Alias # Authentication aliases are created using the Admin Console. # $bti setAuthenticationAlias {myRealm/myAlias} puts "Task setup completed."
タスクの結果
次のタスク
関連概念:


http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tsch_schedulebtask
ファイル名:tsch_schedulebtask.html