Schnittstelle "TaskNameManager" verwenden

Mit der Schnittstelle "TaskNameManager" können Sie den Namen der aktuellen Task über das Programm festlegen. Sie können die aktuelle Task, die dem Ausführungsthread zugeordnet ist, überschreiben oder die aktuelle Task auf die ursprüngliche Task zurücksetzen.

Informationen zu diesem Vorgang

Diese Schnittstelle kann für Enterprise JavaBeans, die für containergesteuerte Transaktionen oder ActivitySessions konfiguriert sind, nicht verwendet werden, weil Arbeitseinheiten nur dann einer Task zugeordnet werden können, wenn die Arbeitseinheit eingeleitet wird. Eine Ausnahme bilden J2EE 1.3-Anwendungen, die in einem Server ausgeführt werden, in dem das Attribut "5.x-Kompatibilitätsmodus" ausgewählt ist. Der Aufruf zum Festlegen des Tasknamens muss deshalb vor Beginn der Arbeitseinheit erfolgen. Arbeitseinheiten können nicht mehr benannt werden, nachdem sie begonnen haben. Aufrufe dieser Schnittstelle während der Ausführung einer containergesteuerten Arbeitseinheit werden einfach ignoriert.

Die Erstellung von Anwendungsprofilen unterstützt keine Abfragen für die Task, die zur Laufzeit ausgeführt wird. Stattdessen verwenden die Anwendungen logische Tasknamen, die über Deklarationen als anwendungsgestützte Tasks konfiguriert sind. Logische Referenzen ermöglichen es, dass der tatsächliche Taskname geändert werden kann, ohne dass die Anwendung erneut kompiliert werden muss.

Wenn möglich, sollten Sie es vermeiden, Tasks über das Programm festzulegen. Das Ergebnis der Deklarationsmethode ist besser portierbar und kann daher auf einfache Weise angepasst werden, ohne dass eine Neuentwicklung oder Neukompilierung erforderlich wäre.

Anmerkung: Wenn Sie auf der Konsolenseite "Application Profiling Service" das Attribut "5.x-Kompatibilitätsmodus" auswählen, werden die in den J2EE 1.3-Anwendungen konfigurierten Tasks nicht zwingenderweise Arbeitseinheiten zugeordnet und können beliebig angewendet und überschrieben werden. Dieser Betriebsmodus wird nicht empfohlen, weil er zu unerwarteten Deadlocks (gegenseitiges Sperren) bei Datenbankzugriffen führen kann. Tasks werden in Anforderungen zwischen Anwendungen, die im 5.x-Kompatibilitätsmodus des Service für die Erstellung von Anwendungsprofilen ausgeführt werden, und Anwendungen, die nicht im Kompatibilitätsmodus ausgeführt werden, nicht übertragen.

Wenn ein Client der Version 6.0 mit Anwendungen, die im 5.x-Kompatibilitätsmodus vom Service für die Erstellung von Anwendungsprofilen ausgeführt werden, interagieren soll, müssen Sie die Systemeigenschaft appprofileCompatibility im Clientprozess auf true setzen. Geben Sie hierfür die Eigenschaft -CCDappprofileCompatibility=true beim Aufruf des Befehls "launchClient" an.

Vorgehensweise

  1. Konfigurieren Sie anwendungsgesteuerte Tasks. Die Erstellung von Anwendungsprofilen erfordert die Deklaration eines Tasknamensreferenzen für jede Task, die über das Programm festgelegt werden soll. Durch die Tasknamensreferenz wird eine Zwischenstufe eingeführt, sodass die tatsächliche Task, die zur Laufzeit festgelegt wird, durch erneute Assemblierung angepasst werden kann, ohne dass dazu eine erneute Codierung oder eine erneute Kompilierung erforderlich wäre. Jeder Versuch, einen nicht deklarierten Tasknamen als Taskreferenz festzulegen, löst eine Ausnahme aus. Wenn Sie einen Tasknamen festlegen und bereits eine Arbeitseinheit begonnen wurde, wird diese Arbeitseinheit dem Tasknamen nicht zugeordnet. Der Task werden nur Arbeitseinheiten zugeordnet, die nach der Definition des Tasknamens eingeleitet werden.
    Verwenden Sie zum Konfigurieren von anwendungsgestützten Tasks die Anleitungen in den folgenden Artikeln. Informationen zu diesen Tasks finden Sie im Information Center zum Assembliertool:
    • Konfigurieren Sie anwendungsgesteuerte Tasks für Webkomponenten.
    • Konfigurieren Sie anwendungsgesteuerte Tasks für Anwendungsclients.
    • Konfigurieren Sie anwendungsgesteuerte Tasks für Enterprise JavaBeans.
  2. Führen Sie eine JNDI-Lookup-Operation für die Schnittstelle "TaskNameManager" durch:
    InitialContext ic = new InitialContext();
    TaskNameManager tnManager = ic.lookup
    ("java:comp/websphere/AppProfile/TaskNameManager");
    Die Schnittstelle TaskNameManager wird nicht in den Namespace gebunden, falls der Service für die Erstellung von Anwendungsprofilen inaktiviert ist.
  3. Legen Sie den Tasknamen fest:
    try {
    tnManager.setTaskName("updateAccount");
    }
    catch (IllegalTaskNameException e) {
    // Tasknamensreferenz ist nicht konfiguriert. Ausführungsfehler.
    }
    // . . .
    //
    Der Name der an die Methode setTaskName() ("updateAccount" in diesem Beispiel) übergeben wird, ist eigentlich eine Referenz auf den Tasknamen, den Sie im ersten Schritt konfiguriert haben.
  4. Starten Sie eine Transaktion.
    Anmerkung: Wenn Sie eine J2EE 1.3-Anwendung mit aktiviertem 5.x-Kompatibilitätsmodus verwenden, ist der in Schritt 3 festgelegte Taskname jetzt der aktive Taskname, und Sie können diesen Schritt ignorieren.
    Wenn Sie eine J2EE-Anwendung verwenden und der Kompatibilitätsmodus nicht gesetzt ist oder wenn Sie eine J2EE 1.4-Anwendung verwenden, müssen Sie eine Transaktion starten, damit der Taskname aktiv wird. Ein Taskname kann nur einer Transaktion zugeordnet werden. Er wird der Transaktion zugeordnet, wenn diese gestartet wird, und bleibt ihr für ihre gesamte Lebensdauer zugeordnet. Deshalb ist der im vorherigen Schritt festgelegte Taskname zu diesem Zeitpunkt nicht aktiv: Sie müssen eine UserTransaction, wie im folgenden Code-Snippet veranschaulicht, starten:
    try{
        InitialContext initCtx = new InitialContext();
        userTran = (UserTransaction) initCtx.lookup("java:comp/UserTransaction");
        userTran.begin ();
    }
          catch(Exception e){
    }         
    // . . .
    //
    Beachten Sie die Methode "resetTaskName()" in der Schnittstelle "TaskNameManager". Das Zurücksetzen des Tasknamens hat keine Auswirkung, sofern die Operation nicht von einer J2EE 1.3-Anwendung aufgerufen wird, die in einem Server ausgeführt, in dem das Attribut "5.x-Kompatibilitätsmodus" auf der Seite "Service für die Erstellung von Anwendungsprofilen" der Konsole ausgewählt ist. Dieser Betriebsmodus wird nicht empfohlen, weil er zu unerwarteten Deadlocks (gegenseitiges Sperren) bei Datenbankzugriffen führen kann. Die Methode resetTask( ) sollte von J2EE 1.3-Anwendungen nur dann aufgerufen werden, wenn das der 5.x-Kompatibilitätsmodus gesetzt ist, um die Auswirkungen aller Operationen der Methode setTaskName() rückgängig zu machen und den Tasknamen wiederherzustellen, der vor dem Start der Komponente aktuell war. Wenn die Methode setTaskName() nicht aufgerufen wurde, hat die Methode resetTaskName() keine Auswirkungen.

Symbol, das den Typ des Artikels anzeigt. Taskartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tapp_usetasknamemanager
Dateiname:tapp_usetasknamemanager.html