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

Spring Java Discussion :

TransactionProxyFactoryBean - Pb de commit [Data]


Sujet :

Spring Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de le Daoud
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2002
    Messages : 287
    Par défaut TransactionProxyFactoryBean - Pb de commit
    Bonjour,

    Je suis dans le cas de figure suivant :

    Une méthode d'une classe A (une action struts dans mon cas) appelle une méthode "enregistrer"' d'une classe B (un service applicatif dans mon cas).
    La classe B est injecté dans A, mais en fait on injecte un Proxy de B, la véritable classe étant un org.springframework.transaction.interceptor.TransactionProxyFactoryBean (avec B en target) afin que les transactions soient gérées dans cette classe.

    Le problème est que dans ma méthode "enregistrer" j'ai un traitement en 2 phases, un commit devant être fait entre les deux phases.
    Je me demande si je suis obligé de passer par l'accès à l'objet transactionManager et faire un commit, ou si je pouvais le faire au niveau configuration, ce qui serait bcp plus propre pour moi.

    J'ai pensé à un moment faire appeler deux méthodes pour mes deux phases à partir de ma méthode "enregistrer" (genre "phase1" et "phase2"). Au niveau configuration spring, spécifier un PROPAGATION_REQUIRES_NEW pour les deux sous méthodes. Mais étant donné que ces méthodes sont appelées à partir de la classe B et non du proxy, il n'y a visiblement pas de prise en compte de la configuration, est-ce bien cela ?

    Des idées ?
    Merci

  2. #2
    Rédacteur
    Avatar de Hikage
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 177
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 177
    Par défaut
    Je suppose que ce que tu fais est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public maMethodeA{
     
    this.appelSousMethode1();
    this.appelSousMethode2();
     
    }
    alors effectivement, l'appel étant fait directement sur l'objet This et non le Proxy, la configuration des transactions pour les "appelSousMethode" n'est pas prises en compte.

    Il y a divers solutions ( plus au moins bonnes ) possible :

    - au lieu de faire this.appelSousMethode, faire un applicationContext.getBean(tonService).appelSousMethode -> Résultat tu passe par le proxy

    - Utiliser une couche supplémentaire dans laquelle tu met tes sousMethode, et sur laquelle tu configure les transation new
    - Utiliser le loadtime weaving, je pense qu'il règle d'office le problème du this. Mais il nécessite une configuration speciale
    Hikage
    SCJP / SCWCD & SCWSJD Certified / Spring Framework Certified
    [Personal Web] [CV]

    F.A.Q Spring Framework - Participez !

  3. #3
    Membre éclairé Avatar de le Daoud
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2002
    Messages : 287
    Par défaut
    Ok merci bcp, je regarde cela tout de suite.
    Je ne connais pas le loadtime weaving, je vais me renseigner. J'avoue que j'aimerais bien éviter les deux premières solutions

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

Discussions similaires

  1. [C#] histoire de commit et de roolback
    Par dupin40 dans le forum ASP.NET
    Réponses: 6
    Dernier message: 18/05/2021, 17h45
  2. Interbase en réseau:commit ne s'appliquent pa aux autres pc?
    Par Harry dans le forum Bases de données
    Réponses: 9
    Dernier message: 27/05/2004, 14h10
  3. read committed, serializable... et par défaut k'en est-il?
    Par superdada dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 01/12/2003, 18h58
  4. Query Begin et Commit son sur un bateau....
    Par faoz75 dans le forum Requêtes
    Réponses: 5
    Dernier message: 15/08/2003, 11h48
  5. commit et rollback....?
    Par The_Nail dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 06/06/2003, 14h36

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