IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JPA Java Discussion :

comment provoquer un rollback ?


Sujet :

JPA Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    422
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 422
    Par défaut comment provoquer un rollback ?
    Salut a tous,
    je travaille sous glassfish 2.1 (container managed transaction) et j'ai une methode qui appelle un bean façade de la façon suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    ......
    while (i<3)
    {
    if (test)
    {
    beanFacade.create();
    }
    else
    {
    throw new Exception("...");
    }
    }
    .....
    ce pseudo code fonctionne bien mais le problème est que si le test échoue l'exception est lancé mais aucun rollback n'est effectué .
    Comment est ce que je peux déclencher le rollback ?
    Merci d'avance.

  2. #2
    Membre Expert
    Avatar de X-plode
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2005
    Messages
    682
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2005
    Messages : 682
    Par défaut
    Bonsoir,

    Tu souhaites déclarer un rollback car tu fais de la persistance ?
    Ou tu souhaites effectuer un callback ?

  3. #3
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    422
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 422
    Par défaut
    ben je souhaite effectuer un rollback si l'exception est déclenché.

  4. #4
    Membre confirmé Avatar de arnaud036
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2007
    Messages : 201
    Par défaut
    Le TransactionManager déclenchera un rollback sur l'ensemble des requêtes de la méthode, si ta méthode renvoie une RuntimeException !

    Attention son appelle doit bien etre effectué dans la classe Service, fait attention car si tu attrapes l'exception, il y aura commit, alors que si tu laisses monter la RuntimeException, il y aura rollback.

  5. #5
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    422
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 422
    Par défaut
    j'ai trouvé comment faire ça autrement, en ajoutant une annotation @ApplicationException(rollback=true) a mon exception un rollback est effectué dés que l'exception est lancé.
    Merci a tous.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 06/07/2009, 17h08
  2. Comment provoquer l'arrêt de ma macro?
    Par jeanmarccassis dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/12/2008, 18h49
  3. Comment provoquer le pack() d'une Jframe depuis un JPanel sans ref sur la JFrame
    Par cdtkoenig dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 21/07/2008, 19h11
  4. [C# 1.1] Comment détecter un rollback ?
    Par Monstros Velu dans le forum Accès aux données
    Réponses: 8
    Dernier message: 11/06/2006, 08h53
  5. [CF][VB.NET/PPC] Comment provoquer un Beep ?
    Par borgfabr dans le forum Windows Mobile
    Réponses: 2
    Dernier message: 29/04/2005, 15h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo