2010-10-26 25 views
0

J'utilise Spring 3.0.3, MyBatis 3.0.2 et mybatis-spring 1.0.0 sur Apache Tomcat 6.0.29.La transaction «Spring aop» ne valide pas la transaction

J'ai utilisé des transactions déclaratives de printemps pour la gestion des transactions. Le problème est que les transactions ne fonctionnent pas pour moi. La transaction ne fonctionne qu'une seule fois et par la suite rien.

J'ai essayé de vérifier toutes mes configs mais aucune idée. Des pointeurs?

Mes configurations ressemble à ceci -

<tx:advice id="txAdvice" transaction-manager="transactionManager"> 
     <tx:attributes> 
      <tx:method name="*" propagation="REQUIRED" /> 
     </tx:attributes> 
    </tx:advice> 

    <aop:config> 
     <aop:pointcut id="dtxops" 
      expression="execution(* com.service.*.*(..))" /> 
     <aop:advisor advice-ref="txAdvice" pointcut-ref="dtxops" /> 
    </aop:config> 

EDIT après commentaire -------------

Je commence le serveur et exécuter certaines fonctionnalités transactionnelles et quelques fois il fonctionne et parfois non. Parfois, il continue à travailler pendant 5-6 fois et soudainement il s'arrête.

TX Manager et configuration DS -

<bean id="transactionManager" 
     class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 
     <property name="dataSource"> 
      <ref bean="dataSource" /> 
     </property> 
    </bean> 

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> 
     <property name="resourceRef" value="true" /> 
     <property name="jndiName" value="java:comp/env/jdbc/MyDBInstance" /> 
    </bean> 
+0

Quelle est la configuration de 'transactionManager'? –

+0

J'ai ajouté la configuration de txManager à la question –

+0

Je vous suggérerais de déboguer votre application - alors vous pourrez voir si les trucs de transaction sont ajoutés, une autre bonne idée est d'activer la journalisation des transactions au printemps. –

Répondre

0

Avez-vous configuré vous datasource au printemps ou Tomcat? (Tomcat a des paramètres par défaut étranges que l'auto commet après chaque instruction qui rend difficile l'exécution d'un DataSourceTransactionManager)

+0

Oui, en utilisant Tomcat 6, y a-t-il une solution? –

+0

Si vous avez configuré la source de données dans Tomcat, assurez-vous que defaultAutoCommit est défini sur false – Konstantin