首页 新闻 赞助 找找看

spring配置的事务是起作用的,但是打开一个新窗口或新页面时貌似就不起作用了

0
悬赏园豆:5 [待解决问题]

点击事务测试时action会调用createUserInfo方法,该方法会睡眠很长时间,所以之后再点击事务测试不会再调用createUserInfo方法;但是打开一个新页面,同样的地址点击事务测试就能调用createUserInfo方法,再次点击也不会在调用;但是再切到第一个页面又能调用;总之在一个页面只能调用一次,但是切换页面又能调用一次;

createUserInfo方法:

public void createUserInfo(UserInfo userInfo) {

System.out.println("====================================");

try {

Thread.sleep(10000000000L);

} catch (InterruptedException e1) {

e1.printStackTrace();

}

userInfoDao.createUserInfo(userInfo);

}

 

spring配置:

<bean id="transactionManager"

class="org.springframework.orm.hibernate3.HibernateTransactionManager">

<property name="sessionFactory" ref="sessionFactory" />

</bean>

 

<tx:advice id="txAdvice" transaction-manager="transactionManager">

<tx:attributes>

<tx:method name="create*" />

<tx:method name="modify*" />

<tx:method name="remove*" />

<tx:method name="*" read-only="true" />

</tx:attributes>

</tx:advice>

<!-- 配置一个事务切面 -->   

    <aop:config>   

        <aop:pointcut expression="execution(* fengx.service.*.*(..))" id="txManager" />   

        <aop:advisor advice-ref="txAdvice" pointcut-ref="txManager" />   

    </aop:config>

秋风净的主页 秋风净 | 初学一级 | 园豆:175
提问于:2013-05-14 13:11
< >
分享
所有回答(1)
0

<aop:pointcut expression="execution(* fengx.service.*.*(..))" id="txManager" />  ,你看看你的需要事务的java文件是否在service包下,对于应用事务的包execution(* fengx.service..*.*(..))" id="txManager" />那个更好些,他指的是service包下以及它的子包下的所有文件都应用事务

cel | 园豆:380 (菜鸟二级) | 2013-05-14 16:02

试过了不行

原来事务的配置是起作用的,只不过在一个页面上是起作用的,在多个页面切换点击就不起作用了

支持(0) 反对(0) 秋风净 | 园豆:175 (初学一级) | 2013-05-15 09:34
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册