2010-09-30 4 views
2

J'ai projet existant qui utilise 2 base de données (DB2), et les enregistrements qui sont sauvegardés dans les 2 bases de données sont liés.Alors les transactions doivent être maintenues.Eg chaque fois qu'une nouvelle chose doit être ajouté alors les entrées doivent être effectuées sur x nombre de tables dans Database1 et y nombre de tables dans database2. maintenant dans le code qui est pré-existante (développé par Somone autre) je vois quelque chose commeProblème UserTransaction dans java

UserTransaction utx = getTranscationU(); 
//getTranscation() is a user defined method as show below 

public UserTransaction getTransactionU() { 
     InitialContext ic = new InitialContext(); 
     return (UserTransaction) ic.lookup("java:comp/XYZ"); 
    } 

donc dans le code séquence suivante est suivie:

  1. début UTX
  2. créer un gestionnaire séparé de l'entité ems pour db1 et db2
  3. créer des entrées dans les deux tables en utilisant cet ems
  4. si une exception est levée puis rollback utx

Maintenant, ma question est

  1. ce code sera assurez-vous que les entrées sont entrées dans les deux db ou aucun d'entre eux?
  2. Quelqu'un peut-il m'expliquer ce que fait le code à l'intérieur de getTransactionU()?
  3. où est défini XYZ?

Répondre

2
  1. Lorsque le UserTransaction est initialisé, si les deux gestionnaires d'entités utilisent Datasources liées au gestionnaire de transactions, toutes ses activités seront incluses dans la transaction. La transaction doit être une transaction XATransaction (distribuée) si vous accédez à différentes bases de données.
  2. La méthode getTransactionU() accède au répertoire de nommage du conteneur Java EE via JNDI, où le gestionnaire de transactions doit être configuré.
  3. C'est le chemin du gestionnaire de transactions configuré sur votre serveur.
+0

merci: l'utilisateur tranacation est initialisée comme UTX = getTranscationU() Pouvez-vous s'il vous plaît me dire le fichier où je Shold cherche XYZ, je veux dire point n ° 3 et 2 – akp

+0

Il dépend du conteneur JEE votre code est Runnig. à. Le fichier de configuration du conteneur n'est pas un standard JEE (JBoss utilise un ensemble de fichiers, avec Websphere il vaut mieux le chercher via sa console d'administration, etc.) –