[8.5.5.4 o posterior]

Configuración ejecutores planificados gestionados

Puede configurar instancias de ManagedScheduledExecutorService para planificar las tareas asíncronas para que se ejecuten con el contexto de hebras de la hebra desde la que se ha planificado la tarea. Es aconsejable impedir que las aplicaciones Java™ EE gestionen directamente sus propias hebras; por lo tanto, ManagedScheduledExecutorService amplía JSE ExecutorService para ofrecer un modo de planificar tareas asíncronas dentro de un entorno de servidor de aplicaciones. También puede configurar ManagedScheduledExecutorService para capturar un contexto de hebras que sea relevante para las aplicaciones Java EE y propagarlo a la hebra de la tarea planificada.

Acerca de esta tarea

Importante: En el perfil Liberty, los ejecutores planificados gestionados no tienen sus propias agrupaciones de hebras. Las tareas enviadas a las instancias de ejecutor planificado gestionado se ejecutan en la agrupación de hebras de ejecutores de Liberty común.
La característica <concurrent-1.0> del ejecutor planificado gestionado se habilita en el archivo server.xml como se indica a continuación:
<featureManager>
		<feature>concurrent-1.0</feature>
</featureManager>

La captura y la propagación de contexto de hebras están gestionadas por el servicio de contexto. El servidor crea una instancia predeterminada del servicio del contexto (DefaultContextService) y se configura para propagar al menos classloaderContext, jeeMetadataContext y securityContext. Se utiliza esta instancia de servicio del contexto predeterminado si se crea una ManagedScheduledExecutorService sin hacer referencia a una instancia de servicio del contexto específica o se configura una instancia de servicio de contexto directamente dentro de ésta. Para obtener más información sobre las instancias de servicio de contexto, consulte el tema sobre la configuración de instancias de servicio de contexto de hebra.

Una instancia de ejecutor planificado gestionado predeterminada (DefaultManagedScheduledExecutorService) está disponible como java:comp/DefaultManagedScheduledExecutorService y utiliza la instancia de servicio de contexto predeterminada para la captura y la propagación del contexto de hebras.

Procedimiento

Configuración de ejemplo del archivo server.xml:

Ejemplo

Inyectar ejecutores planificados gestionados en los componentes de aplicación (mediante @Resource) o consultarlos con referencias de entorno de recursos (resource-env-ref). Independientemente de cómo se obtenga la instancia, puede utilizarse de forma intercambiable como javax.enterprise.concurrent.ManagedScheduledExecutorService o cualquiera de las siguientes superclases: java.util.concurrent.ScheduledExecutorSerivce, java.util.concurrent.ExecutorService, javax.enterprise.concurrent.ManagedExecutorService

  • Ejemplo que utiliza @Resource para inyectarse como java.util.concurrent.ScheduledExecutorService:
    @Resource(lookup="concurrent/scheduledExecutor2")
    ScheduledExecutorService executor;
    ...
    
    // planificar una tarea para que se ejecute cada media hora a partir de ahora
    Runnable updateSalesReport = new Runnable() {
    public void run() throws Exception {
    	  // es posible la búsqueda java:comp porque está configurado <jeeMetadataContext>
    		DataSource ds = (DataSource) new InitialContext().lookup("java:comp/env/jdbc/ds1");
    ... query and update various database tables
    }
    };
    ScheduledFuture<?> future = executor.scheduleAtFixedRate(updateSalesReport, 0, 30, TimeUnit.MINUTES);
  • Ejemplo que utiliza @Resource para inyectarse como javax.enterprise.concurrent.ManagedScheduledExecutorService:
    @Resource(lookup="concurrent/scheduledExecutor2")
    ManagedScheduledExecutorService executor;
    
    ... usage is same as previous example
  • Ejemplo de <resource-env-ref> para java.util.concurrent.ScheduledExecutorService en el archivo web.xml:
    <resource-env-ref>
    	<resource-env-ref-name>concurrent/scheduledExecutor1</resource-env-ref-name>
    	<resource-env-ref-type>java.util.concurrent.ScheduledExecutorService</resource-env-ref-type>
    </resource-env-ref>
  • Ejemplo de <resource-env-ref> para javax.enterprise.concurrent.ManagedScheduledExecutorService en el archivo web.xml:
    <resource-env-ref>
    	<resource-env-ref-name>concurrent/scheduledExecutor2</resource-env-ref-name>
    	<resource-env-ref-type>javax.enterprise.concurrent.ManagedScheduledExecutorService</resource-env-ref-type>
    </resource-env-ref>
  • Ejemplo de búsqueda que utiliza una referencia de entorno de recursos:
    ManagedScheduledExecutorService executor = 
    		 (ManagedScheduledExecutorService) new InitialContext().lookup("java:comp/env/concurrent/scheduledExecutor2");
    executor.schedule(payrollTask, fridaysAtMidnightTrigger);

Icono que indica el tipo de tema Tema de tarea

Términos y condiciones para centros de información | Comentarios


Icono de indicación de fecha y hora Última actualización: 15 de junio de 2015
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=phil&product=was-libcore-mp&topic=twlp_config_scheduledexecutor
Nombre de archivo:twlp_config_scheduledexecutor.html