[8.5.5.4 o posterior]

Configuración de fábricas de hebras gestionadas

Puede configurar instancias de ManagedThreadFactory para crear nuevas hebras que se ejecuten con el contexto de hebras de la hebra desde la que se ha consultado o inyectado la fábrica de hebras gestionadas. Es aconsejable impedir que las aplicaciones Java™ EE gestionen directamente sus propias hebras; por lo tanto, ManagedThreadFactory amplía el JSE ThreadFactory para proporcionar una forma de crear hebras gestionadas en un entorno de servidor de aplicaciones. También puede configurar ManagedThreadFactory para capturar un contexto de hebras que sea relevante para las aplicaciones Java EE y propagarlo a la nueva hebra.

Acerca de esta tarea

La fábrica de hebras gestionadas está disponible en la característica <concurrent-1.0> y 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. Esta instancia de servicio de contexto predeterminado se utiliza si no se especifica un servicio de contexto ManagedThreadFactory. 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 predeterminada de ManagedThreadFactory (DefaultManagedThreadFactory) está disponible como java:comp/DefaultManagedThreadFactory y utiliza la instancia de servicio de contexto predeterminada para la captura y propagación del contexto de hebras.

Procedimiento

Configuración de ejemplo del archivo server.xml:

Ejemplo

Las fábricas de hebras gestionadas se pueden introducir en los componentes de la aplicación (mediante @Resource) o se pueden consultar 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.ManagedThreadFactory o java.util.concurrent.ThreadFactory.

  • Ejemplo que utiliza @Resource para inyectarse como java.util.concurrent.ThreadFactory:
    @Resource(lookup="concurrent/threadFactory2")
    ThreadFactory threadFactory
    ...
    
    // crear una nueva hebra
    Thread dailySalesAnalysisTask = threadFactory.newThread(new Runnable() {
      public void run() {
          	  // es posible la búsqueda java:comp porque está configurado <jeeMetadataContext>
        		DataSource ds = (DataSource) new InitialContext().lookup("java:comp/env/jdbc/ds1");
        ... analyze the data
      }
    });
    dailySalesAnalysisTask.start();
  • Ejemplo que utiliza @Resource para inyectarse como javax.enterprise.concurrent.ManagedThreadFactory:
    @Resource(lookup="concurrent/threadFactory2")
    ManagedThreadFactory threadFactory;
    
    ... usage is same as previous example
  • Ejemplo de <resource-env-ref> para java.util.concurrent.ThreadFactory en el archivo web.xml:
    <resource-env-ref>
    	<resource-env-ref-name>concurrent/threadFactory1</resource-env-ref-name>
    	<resource-env-ref-type>java.util.concurrent.ThreadFactory</resource-env-ref-type>
    </resource-env-ref>
  • Ejemplo de <resource-env-ref> para javax.enterprise.concurrent.ManagedThreadFactory en el archivo web.xml:
    <resource-env-ref>
    	<resource-env-ref-name>concurrent/threadFactory2</resource-env-ref-name>
    	<resource-env-ref-type>javax.enterprise.concurrent.ManagedThreadFactory</resource-
    env-ref-type>
    </resource-env-ref>
  • Ejemplo de búsqueda que utiliza una referencia de entorno de recursos:
    ManagedThreadFactory threadFactory =
      (ManagedThreadFactory) new InitialContext().lookup("java:comp/env/concurrent/threadFactory");
    // Crear un ejecutor planificado que siempre ejecute tareas con el contexto de hebras de
    la fábrica de hebras gestionadas
    ScheduledExecutorService executor = Executors.newScheduledThreadPool(5, threadFactory);
    ... use executor to schedule tasks from any thread

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_threadfactory
Nombre de archivo:twlp_config_threadfactory.html