论坛首页 Java企业应用论坛

CXF WebService 事务控制问题

浏览 7468 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2013-08-05  
    服务端发布webService服务采用CXF来发布,通过Spring AOP来控制事务,如下:
<aop:config>
		<aop:pointcut expression="execution(* *..*Service.*(..))" id="daoMethod" />
		<aop:advisor advice-ref="transactionInterceptor" pointcut-ref="daoMethod" />
	</aop:config>

事务控制在webservice入口处,在服务端写main函数直接测试是没问题,但是通过客户端调用webservice服务的时候事务就得不到控制,出错后事务不能自动回滚,啥问题呢?
   发表时间:2013-08-06  
哪位高人来解答下。。
0 请登录后投票
   发表时间:2013-08-06  
daoMethod 方法的调用者是自己?还是其他类?
0 请登录后投票
   发表时间:2013-08-06  
kingsfighter 写道
daoMethod 方法的调用者是自己?还是其他类?


其它的类,类似webservice的服务入口,CXF框架会调用到这个类。
0 请登录后投票
   发表时间:2013-08-06  
lzf0112 写道
kingsfighter 写道
daoMethod 方法的调用者是自己?还是其他类?


其它的类,类似webservice的服务入口,CXF框架会调用到这个类。


把抛出异常的堆栈打出来,或者其他信息,单看这一点配置,是无法看出问题的。
0 请登录后投票
   发表时间:2013-08-06   最后修改:2013-08-06
kingsfighter 写道
lzf0112 写道
kingsfighter 写道
daoMethod 方法的调用者是自己?还是其他类?


其它的类,类似webservice的服务入口,CXF框架会调用到这个类。


把抛出异常的堆栈打出来,或者其他信息,单看这一点配置,是无法看出问题的。


就是程序异常,数据库数据无法回滚,具体的配置:
<bean id="transactionManager"
		class="org.springframework.orm.hibernate4.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory" />
	</bean>

	<bean id="transactionInterceptor"
		class="org.springframework.transaction.interceptor.TransactionInterceptor">
		<property name="transactionManager" ref="transactionManager" />
		<!-- 配置事务属性 -->
		<property name="transactionAttributes">
			<props>
				<!-- 以下方法开头需要事务 -->
				<prop key="save*">PROPAGATION_REQUIRED,-Exception</prop>
				<prop key="add*">PROPAGATION_REQUIRED,-Exception</prop>
				<prop key="insert*">PROPAGATION_REQUIRED,-Exception</prop>
				<prop key="update*">PROPAGATION_REQUIRED,-Exception</prop>
				<prop key="del*">PROPAGATION_REQUIRED,-Exception</prop>
				<prop key="cancel*">PROPAGATION_REQUIRED,-Exception</prop>
				<prop key="callBack*">PROPAGATION_REQUIRED,-Exception</prop>
				<prop key="set*">PROPAGATION_REQUIRED,-Exception</prop>
				<prop key="do*">PROPAGATION_REQUIRED,-Exception</prop>
				<prop key="mod*">PROPAGATION_REQUIRED,-Exception</prop>
				<!-- 以下方法开头只查询无事务 -->
				<prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
			</props>
		</property>
	</bean>
	
	<aop:config>
		<aop:pointcut expression="execution(* com.etong..*CtrlImpl*.*(..))" id="daoMethod" />
		<aop:advisor advice-ref="transactionInterceptor" pointcut-ref="daoMethod" />
	</aop:config>
0 请登录后投票
   发表时间:2013-10-09  
给的信息太少了,很难判断,感觉像是业务类出的问题,在你调用daoMethod的类,同时也是被webservice调用的类里,当出现异常且需要事务处理时,在finally块里,有没有调用daoMethod的事物处理,比如回滚
0 请登录后投票
   发表时间:2014-04-28  
且学且珍惜,得认学习真正消化
0 请登录后投票
   发表时间:2014-05-14  
看一下你 CXF 配置文件怎么写的?
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics