Utilisation de l'interface TaskNameManager

L'interface TaskNameManager permet de définir par programmation le nom de la tâche en cours. Elle permet à la fois le remplacement de la tâche en cours associée à l'unité d'exécution et la réinitialisation de la tâche en cours pour la remplacer par la tâche d'origine.

Pourquoi et quand exécuter cette tâche

A l'exception des applications J2EE 1.3 exécutées sur un serveur où l'attribut de mode de compatibilité 5.x est sélectionné, cette interface ne peut pas être utilisée dans les Enterprise JavaBeans configurés pour des transactions ou des sessions ActivitySession gérées par le conteneur, car les unités de travail peuvent uniquement être associées à une tâche au moment exact où l'unité de travail est lancée. L'appel destiné à définir le nom de la tâche doit par conséquent être effectué avant le début de l'unité de travail. Les unités de travail ne peuvent pas être nommées une fois qu'elles sont commencées. Les appels effectués sur cette interface pendant l'exécution d'une unité de travail gérée par conteneur sont ignorés.

Le profilage d'application ne prend pas en charge les demandes de la tâche en cours en fonctionnement lors de l'exécution. Les applications interagissent avec les noms de tâche logique configurés de manière déclarative en tant que tâches gérées par application. Les références logiques permettent de modifier le nom de tâche réel sans devoir recompiler les applications.

Evitez autant que possible de définir des tâches par le biais d'un programme. La méthode déclarative permet d'améliorer la portabilité de la fonction qui peut alors être ajustée aisément sans nécessiter un redéveloppement ou une recompilation.

Remarque : Si vous sélectionnez l'attribut de mode de compatibilité 5.x sur la page du service de profil d'application de la console, les tâches configurées sur les applications J2EE 1.3 ne sont pas systématiquement associées aux unités de travail et peuvent être appliquées ou remplacées de façon arbitraire. Ce mode d'opération n'est pas recommandé et peut provoquer des blocages imprévus pendant l'accès à la base de données. Les tâches ne sont pas communiquées à la demande entre les applications exécutées sous le mode de compatibilité Application Profiling 5.x et les applications qui ne le sont pas.

Pour permettre à un client version 6.0 d'interagir avec des applications exécutées en mode de compatibilité de Application Profiling 5.x, attribuez la valeur true à la propriété système appprofileCompatibility dans le processus client. Ceci peut être fait en spécifiant l'option -CCDappprofileCompatibility=true lors de l'appel de la commande launchClient.

Procédure

  1. Configurez les tâches gérées par application. Le profilage d'application exige qu'une référence de nom de tâche soit déclarée pour toute tâche définie par le biais d'un programme. Les références de nom de tâche introduisent un niveau d'adressage indirect qui permet d'ajuster la tâche réelle définie lors de l'exécution en effectuant réassemblage, sans qu'ils soit nécessaire de procéder à un nouvel encodage ou compilation. Toute tentative de définition d'un nom de tâche non déclarée en tant que référence de tâche génère une exception. Si une unité de travail est déjà commencée au moment de la définition d'un nom de tâche, cette unité de travail n'est pas associée au nom de tâche. Seules les unités de travail commencées après la définition du nom de la tâche sont associées à la tâche.
    Configurez les tâches gérées par application comme indiqué dans les rubriques ci-après. Pour effectuer ces tâches, consultez le centre de documentation de l'outil d'assemblage :
    • Configurez des tâches gérées par application pour les composants Web.
    • Configurez des tâches gérées par application pour les clients d'application.
    • Configurez des tâches gérées par application pour les Enterprise JavaBeans.
  2. Effectuez une recherche JNDI (Java Naming and Directory Interface) sur l'interface TaskNameManager :
    InitialContext ic =  new InitialContext();
    TaskNameManager tnManager = ic.lookup
    ("java:comp/websphere/AppProfile/TaskNameManager");
    L'interface TaskNameManager n'est pas liée à l'espace-nom si le service de profilage d'application est désactivé.
  3. Définissez le nom de la tâche :
    try {
    tnManager.setTaskName("updateAccount");
    }
    catch (IllegalTaskNameException e) {
    // task name reference not configured. Handle error.
    }
    // . . .
    //
    Le nom transmis à la méthode setTaskName() ("updateAccount" dans cet exemple) est une référence de nom de tâche que vous avez configurée lors de la première étape.
  4. Lancez une transaction UserTransaction
    Remarque : Si vous utilisez une application J2EE 1.3 avec le mode de compatibilité 5.x défini, le nom de la tâche défini à l'étape 3 constitue alors le nom de tâche actif et vous pouvez sauter cette étape.
    Si vous utilisez une application J2EE sans avoir défini le mode de compatibilité, ou si vous utilisez une application J2EE 1.4, vous devez lancer une transaction afin d'activer le nom de tâche. Un nom de tâche ne peut être associé qu'à une transaction. De plus, il est associé avec une transaction lorsque cette transaction est lancée, et ce nom de tâche est associé à la transaction durant la vie de la transaction. Par conséquent, le nom de tâche défini à l'étape précédente n'est pas actif à ce stade. Vous devez lancer une transaction UserTransaction comme indiqué dans le fragment de code suivant :
    try{
        InitialContext initCtx = new InitialContext();
        userTran = (UserTransaction) initCtx.lookup("java:comp/UserTransaction");
        userTran.begin();
    }
    catch(Exception e){
    }         
    // . . .
    //
    Remarque relative à la méthode resetTaskName() sur l'interface TaskNameManager. La réinitialisation du nom de la tâche n'a d'effet que si elle est appelée par une application J2EE 1.3 exécutée sur un serveur pour lequel l'attribut du mode de compatibilité 5.x est sélectionné sur la page de la console du service de profil d'application. Ce mode d'opération n'est pas recommandé et peut provoquer des blocages imprévus pendant l'accès à la base de données. L'appel de resetTask() ne doit être utilisé que par les applications J2EE 1.3 lorsque le mode de compatibilité 5.x est défini pour annuler les effets de toutes les opérations de méthode setTaskName() et de rétablir le nom de tâche qui était en cours lors du lancement de l'exécution du composant. Si la méthode setTaskName() n'a pas été appelée, la méthode resetTaskName() n'a aucun effet.

Icône indiquant le type de rubrique Rubrique de tâche



Icône d'horodatage Dernière mise à jour: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tapp_usetasknamemanager
Nom du fichier : tapp_usetasknamemanager.html