进过一段时间的呕心沥血,实战了spring的事务配置(主要是Jta事务),虽然结果大家都知道,但是能一点一点的实战出来还是很值得高兴的。
操作系统 winXp
J2EE容器 OC4J / glassFish
数据库 Oracle 10g
spring2.5
开始!!
(一) 一个数据源
在容器中配置一个dataSource,在spring配置中用JNDI引用
然后配置TransactionManage
还可以配置容器自己的TransactionManage如:org.springframework.transaction.jta.OC4JJtaTransactionManager
配置事务控制在
execution(* test.domain..*Service.*(..))
场景:Service -> Sa (test.domain.ServiceA) 中的方法 ma
1 Sa.ma中插入数据 成功;
2 Sa.ma中插入数据,之后抛出uncheckedException,数据回滚;
3 使用不在test.domain..* Service的service插入数据,之后抛出uncheckedException,数据不回滚
4 实战timeout参数
Sa.ma中插入数据,之后sleep 10秒,数据回滚
5 将timeout参数去除,sleep 10秒,数据不回滚
6 自定义test.exception.TestException,Sa.ma中插入数据,之后抛出TestException,数据不回滚
spring默认定义,抛出checkedException,数据不rollbank
7 使用参数
Sa.ma中插入数据,之后抛出TestException,数据回滚
debug信息:
8 使用参数
Sa.ma中插入数据,之后抛出uncheckedException,数据回滚
9 使用参数
Sa.ma中插入数据,之后抛出Test2Exception,数据不回滚
debug信息:
10 使用参数
Sa.ma中插入数据,之后抛出uncheckedException、TestException、Test2Exception 数据都回滚
11 使用参数
Sa.ma方法抛出Test2Exception,数据不回滚
12 将某个方法配制为REQUIRES_NEW
14 datasource不用JNDI,在spring配置文件里配置一个datasource
org.springframework.transaction.jta.JtaTransactionManage
不能控制事务,需要使用
JTA事务还是需要依赖于容器,由容器控制datasource
未完,待续。。。

没有评论:
发表评论