[8.5.5.4 oder höher]

Verwaltete geplante Steuerprogramme konfigurieren

Sie können ManagedScheduledExecutorService-Instanzen so konfigurieren, dass sie asynchrone Tasks für die Ausführungmit dem Threadkontext des Threads planen, über den die Task geplant wird. Für Java™-EE-Anwendungen hat es sich bewährt, die direkte Verwaltung der eigenen Threads zu vermeiden. Daher erweitert der ManagedScheduledExecutorService den JSE ExecutorService dahingehend, dass dieser eine Methode zum Planen asynchroner Tasks in einer Anwendungsserverumgebung bereitstellt. Sie können den ManagedScheduledExecutorService auch so konfigurieren, dass dieser einen Threadkontext, der für Java-EE-Anwendungen relevant ist, erfasst und an den Thread der geplanten Task weitergibt.

Informationen zu diesem Vorgang

Wichtig: Im Liberty-Profil haben verwaltete geplante Steuerprogramme keine eigenen Thread-Pools. Tasks, die an verwaltete geplante Steuerprogramminstanzen übergeben werden, werden im allgemeinen Thread-Pool des Liberty-Steuerprogramms ausgeführt.
Das Feature <concurrent-1.0> des verwalteten geplanten Steuerprogramms wird in der Datei server.xml wie folgt aktiviert:
<featureManager>
		<feature>concurrent-1.0</feature>
</featureManager>

Die Erfassung und Weitergabe des Threadkontexts wird vom Kontextservice gesteuert. Eine Standardinstanz des Kontextservice (DefaultContextService) wird vom Server erstellt und so konfiguriert, dass mindestens classloaderContext, jeeMetadataContext und securityContext weitergegeben werden. Diese Standardinstanz des Kontextservice wird verwendet, wenn ein ManagedScheduledExecutorService erstellt wird, der nicht auf eine bestimmte Kontextserviceinstanz verweist, oder wenn eine Kontextserviceinstanz darin direkt konfiguriert wird. Weitere Informationen zu Kontextserviceinstanzen finden Sie im Abschnitt zur Konfiguration von Instanzen des Threadkontextservice.

Eine Standardinstanz von ManagedScheduledExecutorService (DefaultManagedScheduledExecutorService) ist als java:comp/DefaultManagedScheduledExecutorService verfügbar. Sie verwendet die Standardinstanz des Servicekontextes für die Erfassung und Weitergabe des Threadkontextes.

Vorgehensweise

Beispielkonfiguration in der Datei server.xml:

Beispiel

Sie können verwaltete geplante Steuerprogramme in Anwendungskomponenten injizieren (mit @Resource) oder mit Ressourcenumgebungsreferenzen (resource-env-ref) suchen. Unabhängig davon, wie die Instanz angefordert wird, kann sie abwechselnd als javax.enterprise.concurrent.ManagedScheduledExecutorService oder eine der folgenden Superklassen verwendet werden: java.util.concurrent.ScheduledExecutorSerivce, java.util.concurrent.ExecutorService, javax.enterprise.concurrent.ManagedExecutorService.

  • Beispiel, in dem @Resource für die Injektion als java.util.concurrent.ScheduledExecutorService verwendet wird:
    @Resource(lookup="concurrent/scheduledExecutor2")
    ScheduledExecutorService executor;
    ...
    
    // eine Task planen, die ab sofort halbstündlich ausgeführt werden soll
    Runnable updateSalesReport = new Runnable() {
    public void run() throws Exception {
       // java:comp-Suche ist möglich, weil <jeeMetadataContext> konfiguriert ist
    		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);
  • Beispiel, in dem @Resource für die Injektion als javax.enterprise.concurrent.ManagedScheduledExecutorService verwendet wird:
    @Resource(lookup="concurrent/scheduledExecutor2")
    ManagedScheduledExecutorService executor;
    
    ... usage is same as previous example
  • Beispiel für die Verwendung von <resource-env-ref> für java.util.concurrent.ScheduledExecutorService in der Datei 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>
  • Beispiel für die Verwendung von <resource-env-ref> für javax.enterprise.concurrent.ManagedScheduledExecutorService in der Datei 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>
  • Beispielsuche, die eine Ressourcenumgebungsreferenz verwendet:
    ManagedScheduledExecutorService executor = 
    		 (ManagedScheduledExecutorService) new InitialContext().lookup("java:comp/env/concurrent/scheduledExecutor2");
    executor.schedule(payrollTask, fridaysAtMidnightTrigger);

Symbol das den Typ des Artikels anzeigt. Taskartikel

Nutzungsbedingungen für Information Center | Feedback


Symbol für Zeitmarke Letzte Aktualisierung: 25.08.2015
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=phil&product=was-libcore-mp&topic=twlp_config_scheduledexecutor
Dateiname: twlp_config_scheduledexecutor.html