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 :

pb de configuration du transactionnel


Sujet :

Spring Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2007
    Messages : 12
    Par défaut pb de configuration du transactionnel
    Salut !

    J'utilise Spring avec Hibernate 3. Outre la définition de ma sessionFactory Hibernate (qui n'a pas d'importance ici selon moi), j'ai défini les beans suivants :

    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
    <bean id="transactionManager"
    		class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    		<property name="sessionFactory" ref="sessionFactory" />
    	</bean>
     
    	<aop:config>
    		<aop:pointcut id="sequencerIntercept"
    			expression="execution(* com.rohan.sequencer.api.RohanSequencer.*(..))" />
    		<aop:advisor advice-ref="transactionSequencerAdvice" pointcut-ref="sequencerIntercept" />
    	</aop:config>	
     
    	<tx:advice id="transactionSequencerAdvice" transaction-manager="transactionManager">
    		<tx:attributes>
    			<tx:method name="doInTransaction" propagation="REQUIRED" />
    		</tx:attributes>
    	</tx:advice>
    Mon problème : quand la méthode doInTransaction est appelée à l'extérieur de l'objet qui implémente l'Interface com.rohan.sequencer.api.RohanSequencer, pas de pb. Mais quand la méthode est appelée par l'objet qui implémente l'interface com.rohan.sequencer.api.RohanSequencer (i.e une méthode de l'objet de classe A appelle doInTransaction définie dans le même objet de classe A), alors mon transactionnel ne se fait pas. c'est comme si la configuration aop ne servait à rien...

    Quelqu'un peut-il m'expliquer la raison de ce comportement ?

    Cordialement,
    Eric Lewandowski

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 74
    Par défaut
    C'est un comportement tout a fait logique... tu ne passe pas par le proxy transactionnel de Spring (ou plus précisement par l'aspect qui gère les transaction)... pour quel cela fonctionne, il faudrait que injecte un RohanSequencer dans la classe qui l'implémente et que tu utilises (je suis clair là ?) ou alors faudrait faire de l'aop statique (modification directe du bytecode), mais là, je laisse les experts se prononcer ;-)



    Citation Envoyé par elewandowski Voir le message
    Salut !

    J'utilise Spring avec Hibernate 3. Outre la définition de ma sessionFactory Hibernate (qui n'a pas d'importance ici selon moi), j'ai défini les beans suivants :

    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
    <bean id="transactionManager"
    		class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    		<property name="sessionFactory" ref="sessionFactory" />
    	</bean>
     
    	<aop:config>
    		<aop:pointcut id="sequencerIntercept"
    			expression="execution(* com.rohan.sequencer.api.RohanSequencer.*(..))" />
    		<aop:advisor advice-ref="transactionSequencerAdvice" pointcut-ref="sequencerIntercept" />
    	</aop:config>	
     
    	<tx:advice id="transactionSequencerAdvice" transaction-manager="transactionManager">
    		<tx:attributes>
    			<tx:method name="doInTransaction" propagation="REQUIRED" />
    		</tx:attributes>
    	</tx:advice>
    Mon problème : quand la méthode doInTransaction est appelée à l'extérieur de l'objet qui implémente l'Interface com.rohan.sequencer.api.RohanSequencer, pas de pb. Mais quand la méthode est appelée par l'objet qui implémente l'interface com.rohan.sequencer.api.RohanSequencer (i.e une méthode de l'objet de classe A appelle doInTransaction définie dans le même objet de classe A), alors mon transactionnel ne se fait pas. c'est comme si la configuration aop ne servait à rien...

    Quelqu'un peut-il m'expliquer la raison de ce comportement ?

    Cordialement,
    Eric Lewandowski

Discussions similaires

  1. configurer sql pour envoyer des mails
    Par arwen dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 29/07/2003, 15h28
  2. [postgresql]configuration serveur
    Par Fyna dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 16/06/2003, 19h22
  3. [configuration] lancer plusieurs serveurs Tomcat
    Par polo54 dans le forum JBuilder
    Réponses: 4
    Dernier message: 13/06/2003, 15h52
  4. Configurer OpenGL/Glut avec C++Bluider
    Par MiGoN dans le forum OpenGL
    Réponses: 2
    Dernier message: 13/09/2002, 23h18
  5. BDE : Configurer automatiquement le NETDIR
    Par Harry dans le forum Paradox
    Réponses: 10
    Dernier message: 29/07/2002, 11h33

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