Desarrollo de una tarea que llama a un bean de sesión

La API del planificador y la API de WASScheduler MBean dan soporte a diferentes implementaciones de la interfaz TaskInfo, cada una de las cuales puede utilizarse para planificar un tipo de trabajo concreto.

Acerca de esta tarea

Si desea crear una tarea para llamar a un método en un bean de sesión TaskHandler, utilice estos pasos.

Procedimiento

  1. Cree una aplicación empresarial nueva con un módulo EJB (Enterprise JavaBeans). Esta aplicación aloja el módulo EJB TaskHandler.
  2. Cree un bean de sesión sin estado en el módulo EJB que implemente el método process() en la interfaz remota com.ibm.websphere.scheduler.TaskHandler. Coloque la lógica de empresa que desea crear en el método process(). Se llama al método process() cuando se ejecuta la tarea. Las interfaces remota y de factoría deben establecerse como se detalla a continuación en el bean del descriptor de despliegue:
    • com.ibm.websphere.scheduler.TaskHandlerHome
    • com.ibm.websphere.scheduler.TaskHandler
  3. Cree una instancia de la interfaz BeanTaskInfo mediante la utilización del siguiente método de fábrica de ejemplo. Mediante un archivo JSP (JavaServer Pages), servlet o componente EJB, cree la instancia como se muestra en el ejemplo de código siguiente. Este código debe coexistir en la misma aplicación que el módulo EJB TaskHandler creado anteriormente:
    // Assume that a scheduler has already been looked-up in JNDI.
    BeanTaskInfo taskInfo = (BeanTaskInfo) scheduler.createTaskInfo(BeanTaskInfo.class)

    También puede utilizar la herramienta wsadmin para crear la instancia como se muestra en el siguiente ejemplo de script JACL:

    set taskHandlerHomeJNDIName ejb/MyTaskHandler
    
    # Correlacione el nombre JNDI con el nombre mbean.  El nombre mbean se forma sustituyendo la barra / en el nombre jndi
    # con . y colocando el prefijo Scheduler_
    regsub -all {/} $jndiName "." jndiName
    set mbeanName Scheduler_$jndiName
    
    puts "Búsqueda del MBean del planificador $mbeanName"
    set sched [$AdminControl queryNames WebSphere:*,type=WASScheduler,name=$mbeanName]
    puts $sched
    
    # Obtenga el formato ObjectName del MBean del planificador
    set schedO [$AdminControl makeObjectName $sched]
    
    # Cree un objeto BeanTaskInfo mediante 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"
    Importante: Cuando se crea un objeto BeanTaskInfo no se añade la tarea al almacén persistente. En vez de esto, crea un espacio reservado para los datos necesarios. La tarea no se añade al almacén persistente hasta que se invoca el método create() en un planificador, según se describe en el tema Someter tareas a planificadores.
  4. Establezca parámetros en el objeto BeanTaskInfo. Estos parámetros definen a qué bean de sesión se llama y cuándo. La interfaz TaskInfo contiene varios métodos set() que el usuario puede utilizar para controlar la ejecución de la tarea, incluyendo la tarea que se activa y el trabajo que realiza cuando se activa.

    La interfaz BeanTaskInfo requiere que se establezca el nombre JNDI (Java™ Naming and Directory Interface) TaskHandler o TaskHandlerHome mediante el método setTaskHandler. Si utiliza la API WASScheduler MBean para establecer el manejador de tareas, el nombre JNDI tiene que ser el nombre JNDI global completo.

    La interfaz TaskInfo especifica puntos de control adicionales, tal como se documenta en la documentación de API.Establezca parámetros mediante el método de la API de la interfaz TaskInfo, según se muestra en el código de ejemplo siguiente:

    //crear un objeto fecha que representa 30 segundos a partir de este momento
    java.util.Date startDate = new java.util.Date(System.currentTimeMillis()+30000);
    
    //buscar el bean de sesión a invocar cuando se ejecute la tarea
    Object o = new InitialContext().lookup("java:comp/env/ejb/MyTaskHandlerHome");
    TaskHandlerHome home = (TaskHandlerHome)javax.rmi.PortableRemoteObject.narrow(o,TaskHandlerHome.class);
    
    //establecer la hora de inicio y el manejador de tarea a invocar en la información de la  tarea
    taskInfo.setTaskHandler(home);
    taskInfo.setStartTime(startDate);

    También puede establecer parámetros utilizando el script JACL de ejemplo siguiente:

    # Setup the task
    puts "Setting up the task..."
    # Establezca startTime si desea que la tarea se ejecute a una hora
    determinada, por ejemplo:
    $bti setStartTime [java::new {java.util.Date long} [java::call System currentTimeMillis]]
    
    # Establezca StartTimeInterval para que la tarea se ejecute en 30 segundos
    a partir del momento actual
    $bti setStartTimeInterval 30seconds
    
    # Establezca el nombre JNDI del bean EJB al que se llamará cuando se
    ejecute la tarea.  Dado que
    # no hay contexto J2EE de la aplicación cuando MBean crea la tarea, debe tratarse de un 
    # nombre JNDI global. 
    $bti setTaskHandler $taskHandlerHomeJNDIName
    
    # No depure la tarea al completarse
    $bti setAutoPurge false
    
    # Establezca el nombre de la tarea.  Puede ser cualquier valor de serie.
    $bti setName Created_by_MBean
    
    # Si la tarea necesita ejecutarse con una autorización concreta, puede
    establecer el alias de autenticación de las tareas.
    # Los alias de autenticación se crean mediante la consola administrativa.
    # $bti setAuthenticationAlias {myRealm/myAlias}
    
    puts "Task setup completed."

Resultados

Se ha creado un objeto BeanTaskInfo que contiene todos los datos relevantes para llamar a un método EJB.

Qué hacer a continuación

Envíe la tarea a un planificador para su creación.

Icon that indicates the type of topic Task topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tsch_schedulebtask
File name: tsch_schedulebtask.html