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