0

我在 Apache Tomcat 6.0.29 上使用 Spring 3.0.3、MyBatis 3.0.2 和 mybatis-spring 1.0.0。

我使用 spring 的声明式事务进行事务管理。问题是这些交易对我不起作用。交易只工作一次,之后就没有了。

我试过检查我所有的配置,但没有任何线索。任何指针?

我的配置看起来像这样 -

    <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>

评论后编辑 -------------

我启动服务器并执行一些事务功能,有时它可以工作,有时它不能。有时它会继续工作5-6次,然后突然停止。

TX 管理器和 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>
4

1 回答 1

0

Have you configured you datasource in Spring or Tomcat? (Tomcat has some weird default setting that auto commits after every statement which I guess makes it hard to run a DataSourceTransactionManager on top)

于 2010-12-15T20:57:45.820 回答