事务执行期间,有可能事务回滚。
事务失败后该如何收拾残局?
一、终止业务过程。
二、可以重做事务若干次。
对于无状态会话Bean,放弃业务过程是一件很简单的事情,我们只需要将异常抛给客户。
但对于有状态SessionBean,事情变得复杂了,因为它持有会话状态。它需要智能(即重复事务若干次)的取消所做的工作,就需要被告知事务状态。实现SessionSynchronization接口就可获取到事务状态。
只有在使用了有状态会话Bean时,而且启用了容器事务管理(CMT),开发者才需要实现SessionSynchronization接口。如果EJB组件采用Bean管理事务(BMT),此时事务在begin()、commit()、rollback()语句的掌控中,因此开发者没必要去实现这一接口。
本文讨论了在事务执行过程中可能出现的回滚情况,并介绍了如何通过终止业务过程或重做事务来解决这些问题。对于有状态会话Bean,需要实现SessionSynchronization接口以获取事务状态并进行智能的取消工作。
&spm=1001.2101.3001.5002&articleId=1711251&d=1&t=3&u=71d6d76a81bc4a008d13118b21a0dd2e)
1635

被折叠的 条评论
为什么被折叠?



