Desarrollo de una tarea que envía un mensaje JMS (Java Message Service)
Cree una tarea que envíe un mensaje Java™ Message Service (JMS) a una cola o a un tema. 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
Para crear una tarea que envíe un mensaje JMS (Java Message Service) a una cola o un tema, realice estos pasos.
Procedimiento
- Cree una instancia de la interfaz MessageTaskInfo utilizando el
método de fábrica Scheduler.createTaskInfo(). Mediante un archivo JSP (JavaServer Pages), servlet o
componente EJB, cree la instancia como se muestra en el ejemplo de código
siguiente:
También puede utilizar la herramienta wsadmin, crear la instancia como se muestra en el siguiente ejemplo de script JACL:# Ejemplo crear una tarea utilizando//buscar el planificador a utilizar Scheduler scheduler = (Scheduler)new InitialContext.lookup("java:comp/env/Scheduler"); MessageTaskInfo taskInfo = (MessageTaskInfo) scheduler.createTaskInfo(MessageTaskInfo.class);
el tipo de tarea MessageTaskInfo # Llame a este mbean con los parámetros siguientes: # <nombre_jndi planificador> = Nombre JNDI del recurso de planificador, # por ejemplo, scheduler/myScheduler # <nombre JNDI de QCF> = Nombre JNDI global de la fábrica de conexiones de cola. # <nombre JNDI de la cola> = Nombre JNDI global del destino de cola set jndiName [lindex $argv 0] set jndiName_QCF [lindex $argv 1] set jndiName_Q [lindex $argv 2] # 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 MessageTaskInfo mediante invoke_jmx puts "Creating MessageTaskInfo" set params [java::new {java.lang.Object[]} 1] $params set 0 [java::field com.ibm.websphere.scheduler.MessageTaskInfo 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 mti [java::cast com.ibm.websphere.scheduler.MessageTaskInfo $ti] puts "Created the MessageTaskInfo object: $mti"
Atención: La creación de un objeto MessageTaskInfo no 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 invoque el método create() en un planificación, tal como se describe en el tema Someter una tarea a un planificación. - Establezca los parámetros en el objeto MessageTaskInfo. La interfaz TaskInfo contiene varios métodos set() que se pueden utilizar
para controlar la ejecución de la tarea, incluyendo cuando va a ejecutarse
la tarea y el trabajo que ésta realiza al iniciarse.
La interfaz TaskInfo especifica valores de comportamiento adicionales, tal como se describe en la documentación de la API. Mediante un archivo JSP (JavaServer Pages), servlet o componente EJB, cree la instancia como se muestra en el ejemplo de código siguiente:
También puede utilizar la herramienta wsadmin y crear la instancia como se muestra en el siguiente ejemplo de script JACL://crear un objeto fecha que representa 30 segundos a partir de este momento java.util.Date startDate = new java.util.Date(System.currentTimeMillis()+30000); //establecer la hora de arranque y los nombres JNDI para la fábrica de conexiones de cola y la cola taskInfo.setConnectionFactoryJndiName("jms/MyQueueConnectionFactory"); taskInfo.setDestination("jms/MyQueue"); taskInfo.setStartTime(startDate);
# Configure la tarea puts "Setting up the task..." # Establezca startTime si desea que la tarea se ejecute a una hora determinada, por ejemplo: $mti 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 $mti setStartTimeInterval 30seconds # Establezca el nombre JNDI global de la QCF y de la cola a la que se deben enviar los mensajes. $mti setConnectionFactoryJndiName $jndiName_QCF $mti setDestinationJndiName $jndiName_Q # Establezca el mensaje $mti setMessageData "Test Message" # No depure la tarea al completarse $mti setAutoPurge false # Establezca el nombre de la tarea. Puede ser cualquier valor de serie. $mti 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. # $mti setAuthenticationAlias {myRealm/myAlias} puts "Task setup completed."
Resultados
Qué hacer a continuación
Conceptos relacionados:
Tareas relacionadas:
Referencia relacionada:


http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tsch_schedulemtask
File name: tsch_schedulemtask.html