Bonjour,

Je développe actuellement une application web à l'aide de GWT et javaEE.
Dans mon servlet GWT, j'aimerai démarrer une transaction dans une méthode, et finir cette transaction dans une autre méthode.
Mais le problème et que le status de ma transaction est invalide dès que la première méthode contenant le begin est terminée.

Voici mon code simplifié :

la méthode validerPanier() est appelée avant la méthode getMyAdresse().
La transaction utx est sauvegardée en variable globale de la servlet.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
public synchronized long validerPanier() {
        try {
            //C est ici que l'on va commencer la transaction, reserver les produits si disponible, sinon retourner une erreur
            Context ctx = new InitialContext();
            utx = (UserTransaction) ctx.lookup("java:comp/UserTransaction");
            System.out.println(utx.getStatus()); //Status vaut 6
            utx.begin();//Debut transaction
            System.out.println(utx.getStatus()); //Status vaut 0            
            long result = getPanierBean().validerPanier(getLogin());
            return result;
        } catch ....
 
        }
    }
 
public synchronized List<AdresseFrDTO> getMyAdresse() {
        try {
            System.out.println(utx.getStatus()); //Status vaut 6
        } catch (SystemException ex) {
            ....
        }
         .......
}

Merci de votre aide