Red Hat Training

A Red Hat training course is available for Red Hat JBoss Enterprise Application Platform

Chapitre 19. Sous-système de transaction

19.1. Configuration de sous-système de transactions

19.1.2. Configurer le Transaction Manager (TM) (ou gestionnaire de transactions)

Vous pouvez configurer le Transaction Manager (TM) à l'aide de la console de gestion sur le web ou en ligne de commande. Pour chaque commande ou option donnée, on assume que vous exécutez JBoss EAP 6 comme un domaine géré. Si vous utilisez un serveur autonome ou que vous souhaitez modifier un profil différent de la valeur par défaut default, il se peut que vous ayiez à modifier les étapes et les commandes de la manière suivante.

Notes sur les commandes d'exemple

  • Pour la console de gestion, le profil par défaut default est celui qui sera sélectionné quand vous vous connectez. Si vous souhaitez modifier la configuration du gestionnaire de transactions (TM) dans un autre profile, sélectionnez votre profile à la place, et non pas default, pour chaque instruction.
    De même, substituez votre profil à la place du profil par défaut default pour les commandes CLI de l'exemple.
  • Si vous utilisez un serveur autonome, un seul profil existe. Ignorer toute instruction pour choisir un profil spécifique. Dans les commandes CLI, retirer la partie /profile=default des commandes d'échantillon.

Note

Pour que les options du TM soient visibles dans la console de gestion ou dans l'interface CLI, le sous-système transactions doit être activé. Il est activé par défaut, et il faut pour cela qu'un certain nombre d'autres sous-systèmes fonctionnent correctement, donc il est improbable qu'il soit désactivé.
Configurer le TM par la console de gestion

Pour configurer le gestionnaire de transactions (TM) à l'aide de la console de gestion sur le web, sélectionnez l'onglet Configuration en haut de l'écran. Si vous utilisez un domaine géré, vous avez le choix de plusieurs profils. Choisir le bon Profile de la boîte de sélection dans la partie supérieure gauche de l'écran. Étendez le menu Container, et sélectionnez Transactions.

Vous verrez la plupart des options dans la page de configuration du gestionnaire de transactions. Les options Recovery sont cachées par défaut. Cliquer sur l'onglet Recovery pour voir les options de recouvrement. Cliquer sur Edit pour éditer une des options. Les changements prendront place immédiatement.
Cliquer sur l'étiquette Need Help? pour afficher le texte d'aide en ligne.
Configurer le TM par l'interface CLI

Dans l'interface CLI, vous pouvez configurer le TM en utilisant une série de commandes. Les commandes commencent toutes par /profile=default/subsystem=transactions/ pour un domaine géré avec default de profil, ou par /subsystem=transactions pour un serveur autonome.

Important

HornetQ n'autorise pas plusieurs instances à partager un message log store. Si vous configurez plusieurs instances d'HornetQ, chaque instance devra avoir son propre message log store.

Tableau 19.1. Options de configuration du TM

Option Description CLI Command
Activer les statistiques
Indique s'il faut activer les statistiques de transaction. Ces statistiques se trouvent dans la console de gestion dans la section Subsystem Metrics de l'onglet Runtime.
/profile=default/subsystem=transactions/:write-attribute(name=enable-statistics,value=true)
Activer le statut TSM
Indique si l'on doit activer le service de gestion du statut de transaction (TSM), qui est utilisé pour le recouvrement hors-processus. L'exécution d'un manager de recouvrement de processus pour contacter l'ActionStatusService à partir de processus différents n'est pas pris en charge (normalement contacté en mémoire).
Cette option de configuration n'est pas prise en charge.
Délai d'attente par défaut
Délai d'attente de transaction par défaut. La valeur par défaut est de 300 secondes. Vous pouvez la remplacer par programmation, sur la base d'une transaction.
/profile=default/subsystem=transactions/:write-attribute(name=default-timeout,value=300)
Chemin de Store Objet
Un chemin de système de fichiers relatif ou absolu où le store objet TM stocke des données. Relatif, par défaut, à la valeur du paramètre object-store-relative-to.
/profile=default/subsystem=transactions/:write-attribute(name=object-store-path,value=tx-object-store)
Chemin de Store Objet Relatif à
Référence une configuration de chemin global dans le modèle du domaine. La valeur par défaut correspond au répertoire de données de JBoss EAP 6, qui correspond à la valeur de la propriété jboss.server.data.dir, et qui a pour valeur par défaut EAP_HOME/domain/data/ pour un domaine géré, ou EAP_HOME/standalone/data/ pour une instance de serveur autonome. La valeur de l'attribut object-store-path de l'object store est relative à ce chemin.
/profile=default/subsystem=transactions/:write-attribute(name=object-store-relative-to,value=jboss.server.data.dir)
Liaisons de sockets
Indique le nom de la liaison du socket utilisé par le gestionnaire de transactions pour la récupération et la création des identificateurs de transactions, lorsque le mécanisme du socket est utilisé. Se référer à processus-id-socket-max-ports pour plus d'informations sur la génération de l'identificateur unique. Les liaisons de socket sont spécifiées par le groupe de serveurs dans l'onglet Serveur de la console de gestion.
/profile=default/subsystem=transactions/:write-attribute(name=socket-binding,value=txn-recovery-environment)
Statut de liaison de socket
Indique la liaison de socket à utiliser pour le gestionnaire de statuts de transactions.
Cette option de configuration n'est pas prise en charge.
Listener de recouvrement
Indique si oui ou non le processus de recouvrement de transactions doit écouter au socket de réseau. La valeur par défaut est false.
/profile=default/subsystem=transactions/:write-attribute(name=recovery-listener,value=false)
Les options suivantes sont pour une utilisation avancée et ne peuvent être modifiées que par ligne de commande. Soyez prudent lors de leur modification à partir de la configuration par défaut. Communiquer avec Red Hat Global Support Services pour plus d'informations.

Tableau 19.2. Options de configuration du TM avancées

Option Description CLI Command
jts
Indique si l'on doit utiliser les transactions Java Transaction Service (JTS). La valeur par défaut est false, qui utilise des transactions JTA uniquement.
/profile=default/subsystem=transactions/:write-attribute(name=jts,value=false)
Identificateur de nœud
L'identificateur de noeud de gestionnaire de transactions. Cette option est requise dans les situations suivantes :
  • Pour les communications de JTS à JTS
  • Quand deux gestionnaires de transactions accèdent à des gestionnaires de ressources partagées
  • Quand deux gestionnaires de transactions accèdent à des object stores partagés
Le node-identifier doit être unique pour chaque gestionnaire de transaction car il doit assurer l'intégrité des données pendant le recouvrement. Le node-identifier doit également être unique à JTA car plusieurs noeuds peuvent entrer en interraction avec le même gestionnaire de ressources ou partager un object store de transations.
/profile=default/subsystem=transactions/:write-attribute(name=node-identifier,value=1)
process-id-socket-max-ports
Le gestionnaire de transactions crée un identifiant unique pour chaque journal des transactions. Deux mécanismes différents sont fournis pour générer des identificateurs uniques : un mécanisme basé sur le socket et un mécanisme fondé sur l'identificateur de processus du processus.
Dans le cas de l'identifiant basé-socket, le socket est ouvert et son numéro de port est utilisé pour l'identifiant. Si le port est déjà utilisé, on cherchera le port suivant jusqu'à ce qu'un port libre soit trouvé. Les processus-id-socket-max-ports représentent le nombre maximal de sockets que le TM va essayer avant d'abandonner. La valeur par défaut est 10.
/profile=default/subsystem=transactions/:write-attribute(name=process-id-socket-max-ports,value=10)
process-id-uuid
Définir à true avec un identifiant de processus pour créer un identifiant unique pour chaque transaction. Sinon, le mécanisme basé socket sera utilisé. La valeur par défaut est true. Se référer à process-id-socket-max-ports pour obtenir davantage d'informations. Pour activer process-id-socket-binding, définir process-id-uuid à false.
/profile=default/subsystem=transactions/:write-attribute(name=process-id-uuid,value=true)
process-id-socket-binding
Le nom de la configuration de liaison de socket à utiliser si le gestionnaire de transactions doit utiliser un id de processus basé-socket. Correspondra à undefined si process-id-uuid est sur true; sinon il devra être défini.
/profile=default/subsystem=transactions/:write-attribute(name=process-id-socket-binding,value=true)
use-hornetq-store
Utiliser les mécanismes de stockage journalisés de HornetQ au lieu du stockage basé sur des fichiers, pour les journaux de transactions. Ceci est désactivé par défaut, mais peut améliorer les performances I/O. Il n'est pas recommandé pour les transactions JTS sur les gestionnaires de transactions séparés. Quand vous changez cette option, le serveur doit démarrer à nouveau à l'aide de la commande shutdown pour que le changement puisse prendre effet.
/profile=default/subsystem=transactions/:write-attribute(name=use-hornetq-store,value=false)

19.1.3. Configurez votre source de données pour utiliser l'API de transaction JTA

Résumé

Cette tâche vous montre comment activer un JTA (Java Transaction API) dans votre source de données.

Conditions préalables

Vous devez remplir les conditions suivantes avant de continuer cette tâche :

Procédure 19.1. Configurez la source de données pour utiliser l'API de Java Transaction

  1. Ouvrir le fichier de configuration dans l'éditeur de texte.

    Selon que vous exécutiez JBoss EAP 6 sur un domaine géré ou un serveur autonome, votre fichier de configuration ne se trouvera pas au même endroit.
    • Domaine géré

      Le fichier de configuration par défaut d'un domaine géré se trouve dans EAP_HOME/domain/configuration/domain.xml pour Red Hat Enterprise Linux, et EAP_HOME\domain\configuration\domain.xml pour Microsoft Windows Server.
    • Serveur autonome

      Le fichier de configuration par défaut d'un serveur autonome se trouve dans EAP_HOME/standalone/configuration/domain.xml pour Red Hat Enterprise Linux, et EAP_HOME\standalone\configuration\domain.xml pour Microsoft Windows Server.
  2. Chercher la balise <datasource> qui correspond à votre source de données.

    La source de données aura un attribut jndi-name correspondant à celui que vous aviez indiqué quand vous l'avez créée. Par exemple, la source de données ExampleDS ressemble à ceci :
    <datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="H2DS" enabled="true" jta="true" use-java-context="true" use-ccm="true">
  3. Définir l'attribut jta à true.

    Ajouter l'élément suivant au contenu de votre balise <datasource>, tel qu'il apparaît à l'étape précédente : jta="true"
    Sauf si vous avez un cas d'utilisation spécifique (comme par exemple, définir une source de données en lecture seule), Red Hat décourage la substitution de la valeur par défaut jta=true. Ce paramètre indique que la source de données honorera l'API Java Transaction et permettra un meilleur suivi des connexions par l'implémentation JCA.
  4. Sauvegarder le fichier de configuration.

    Sauvegarder le fichier de configuration et sortir de l'éditeur de texte.
  5. Démarrer JBoss EAP 6.

    Relancer le serveur JBoss EAP 6.
Résultat :

JBoss EAP 6 démarre, et votre source de données est configurée pour utiliser l'API de transactions JTA.

19.1.4. Configuration d'une source de données XA

Conditions préalables

Pour pouvoir ajouter une source de données XA, vous devrez vous connecter à la console de gestion. Voir Section 3.4.2, « Se connecter à la console de gestion » pour plus d'informations.

  1. Ajouter une nouvelle source de données.

    Ajouter une nouvelle source de données à la plateforme JBoss EAP 6. Suivre les instructions qui se trouvent dans Section 6.3.1, « Créer une source de données non-XA avec les interfaces de gestion », puis, cliquer sur l'onglet XA Datasource en haut.
  2. Configurer les propriétés supplémentaires suivant les besoins.

    Tous les paramètres de la source de données se trouvent dans Section 6.7.1, « Paramètres de source de données ».
Résultat

Votre source de données XA est configurée et elle est prête à l'utilisation.

19.1.5. Messages de journalisation de transactions

Pour suivre le statut de la transaction tout en gardant les fichiers de journalisation lisibles, utiliser le niveau de journalisation DEBUG pour le logger de transaction. Pour un débogage détaillé, utiliser le niveau de journalisation TRACE. Veuillez consulter Section 19.1.6, « Configurer la journalisation des sous-systèmes de transactions » pour plus d'informations sur la configuration du logger de transaction.
Le gestionnaire de transaction peut générer beaucoup d'informations de journalisation si configuré pour se connecter au niveau de journalisation TRACE. Vous trouverez ci-dessous quelques-uns des messages les plus courants. Cette liste n'est pas exhaustive, il se peut que vous rencontriez d'autres messages.

Tableau 19.3. Changement d'état de transaction

Début de transaction
Quand une transaction commence, le code suivant s'exécute :
com.arjuna.ats.arjuna.coordinator.BasicAction::Begin:1342
tsLogger.logger.trace("BasicAction::Begin() for action-id "+ get_uid());
Validation de transaction
Quand une transaction est validée, le code suivant s'exécute :
com.arjuna.ats.arjuna.coordinator.BasicAction::End:1342
tsLogger.logger.trace("BasicAction::End() for action-id "+ get_uid());
Restauration de transaction
Quand une transaction est restaurée, le code suivant s'exécute :
com.arjuna.ats.arjuna.coordinator.BasicAction::Abort:1575
tsLogger.logger.trace("BasicAction::Abort() for action-id "+ get_uid());
Délai d'expiration de transaction
Quand une transaction expire, le code suivant s'exécute :
com.arjuna.ats.arjuna.coordinator.TransactionReaper::doCancellations:349
tsLogger.logger.trace("Reaper Worker " + Thread.currentThread() + " attempting to cancel " + e._control.get_uid());
Vous verrez ensuite le même thread restaurer la transaction comme montré ci-dessus.

19.1.6. Configurer la journalisation des sous-systèmes de transactions

Résumé

Utiliser cette procédure pour contrôler la quantité d'informations enregistrées sur les transactions, indépendamment des autres paramètres de journalisation dans JBoss EAP 6. La procédure montre comment procéder dans la console de gestion sur le web. La commande de gestion CLI est donnée par la suite.

Procédure 19.2. Configurer l'enregistreur de transactions (Transaction Logger) par la console de gestion

  1. Naviguer vers la zone de configuration de la journalisation

    Dans la console de gestion, cliquer sur l'onglet Configuration. Si vous utilisez un domaine géré, fermer le profil du serveur que vous souhaitez configurer, à partir de la case de sélection Profile qui se trouve en haut et à gauche.
    Étendre le menu Core, et sélectionner Logging.
  2. Modifier les attributs de com.arjuna.

    Sélectionner l'onglet Log Categories. Sélectionner com.arjuna, puis Edit dans Details. Vous pourrez ajouter ici les informations de journalisation spécifiques à la classe. La classe com.arjuna est déjà présente. Vous pourrez modifier le niveau de journalisation et décider si vous souhaitez utiliser les gestionnaires parents.
    Niveau de journalisation
    Le niveau de journalisation est WARN par défaut. Comme les transactions peuvent produire une grande quantité de messages de journalisation, la signification des niveaux de journalisation standard est légèrement différente pour l'enregistreur de transactions. En général, les messages avec des niveaux de gravité moins élevés que le niveau choisi seront ignorés.

    Niveaux de journalisation des transactions, du plus au moins détaillé.

    • TRACE
    • DEBOG
    • INFO
    • AVERTISSEMENT
    • ERREUR
    • FAILURE
    Utiliser les gestionnaires parents
    Indique si l'enregistreur d'événements doit envoyer ses sorties vers l'enregistreur d'événements parent. Le comportement par défaut est true.
  3. Les changements prennent effet immédiatement.