随笔分类 -  5 事务

摘要:引言: Spring 通过AOP技术可以让我们在脱离EJB的情况下享受声明式事务的丰盛大餐。 通过配合使用ObjectWeb的JOTM开源项目,在不需要Java EE应用服务器的情况下,Spring也可以提供JTA事务。Sping对JTA支持的三种方式: 1. 直接集成JOTM提供JTA事务管理(无应用服务器支持,常用于单元测试) 2. 引用应用服务器(如Tomcat)的JNDI数据源,间接实现JTA事务管理 3. 使用特定于应用服务器的事务管理器,使用JTA事务的高级功能(Weblogic,Websphere)1. JOTM直接集成1.1. 将JOTM以下类库添加到类路径中: ... 阅读全文
posted @ 2012-06-17 16:53 万法自然~ 阅读(3264) 评论(0) 推荐(0)
摘要:Web services transactions specifications由IBM、BEA和Microsoft 重量级公司开发。被分成了三个主要工作组:WS-Coordination, WS-Atomic Transaction以及WS-Business Activity。根据http://www.oschina.net/p/apache+kandula的说法,Apache中有一个项目Kandula专门用来实现web服务的事务。但是奇怪的是,这个项目已经在Apache网上找不到了。其他相关网站如下:Axis2 与 JAX-WS规范 http://www.blogjava.net/oran 阅读全文
posted @ 2012-05-02 21:58 万法自然~ 阅读(168) 评论(0) 推荐(0)
摘要:首先要声明,不推荐在web service中实现分布式事务。原因如下: 1、webservice在通信层上是一种无连接的协议,每两次调用之间,tcp连接是断开的。而分布式事务需要保存事务上下文,这是一个难点 2、web service是一种以松耦合为指导思想的集成方式,一般主张采用无状态方法,一次请求即完成一次完整的处理,两次调用之间没有上下文关系; 而事务处理更强调多次调用间的紧耦合关系 3、异构平台不一定都支持两段事务提交模式。一般的面向DCOM的分布式应用中,分布式事务支持策略如下: 采用两段式事务提交的办法,第一次提交是预提交,预提交之后是可以回滚的。 第二次提交是永久... 阅读全文
posted @ 2012-05-02 20:36 万法自然~ 阅读(588) 评论(0) 推荐(0)
摘要:JTA,即Java Transaction API,译为Java事务API。JTA允许应用程序执行分布式事务处理——在两个或多个网络计算机资源上访问并且更新数据。JDBC驱动程序的JTA支持极大地增强了数据访问能力。Java事务API(JTA:Java Transaction API)和它的同胞Java事务服务(JTS:Java Transaction Service),为J2EE平台提供了分布式事务服务(distributed transaction)。一个分布式事务(distributed transaction)包括一个事务管理器(transaction manager)和一个或多个资源 阅读全文
posted @ 2012-02-12 22:18 万法自然~ 阅读(315) 评论(0) 推荐(0)
摘要:Oracle数据库:SET TRANSACTION ISOLATION LEVEL语句来设置ORACLE事务隔离级别。JDBC:设置Connection的setTransactionIsolation()Spring中:设置在方的注解里。如:@Transactional(readOnly=true, propagation=Propagation.NOT_SUPPORTED,isolation=Isolation.DEFAULT)public void find(Integer id) { em.find(Person.class, id);} 阅读全文
posted @ 2012-02-02 22:29 万法自然~ 阅读(248) 评论(0) 推荐(0)
摘要:Isolation 属性一共支持五种事务设置:1、DEFAULT 使用数据库设置的隔离级别 (默认) ,由 DBA 默认的设置来决定隔离级别 . 2、READ_UNCOMMITTED 会出现脏读、不可重复读、幻读 (隔离级别最低,并发性能高)3、READ_COMMITTED 会出现不可重复读、幻读问题(锁定正在读取的行,适合于大多数系统) 4、REPEATABLE_READ 会出现幻读(锁定所读取的所有行) 5、SERIALIZABLE 保证所有的情况不会发生(锁表)三种恼人的问题:1: Dirty reads:读脏数据。 也就是说,比如事务A的未提交(还依然缓存)的数据被事务B读走,如果事. 阅读全文
posted @ 2012-02-02 21:56 万法自然~ 阅读(577) 评论(0) 推荐(0)
摘要:Spring支持七种传播属性(Propagration):1、PROPAGATION_REQUIRED --支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。2、PROPAGATION_SUPPORTS --支持当前事务,如果当前没有事务,就以非事务方式执行。3、PROPAGATION_MANDATORY --支持当前事务,如果当前没有事务,就抛出异常。4、PROPAGATION_REQUIRES_NEW --新建事务,如果当前存在事务,把当前事务挂起。5、PROPAGATION_NOT_SUPPORTED --以非事务方式执行操作,如果当前存在事务,就把当前事务挂起... 阅读全文
posted @ 2012-02-02 21:29 万法自然~ 阅读(1257) 评论(0) 推荐(0)
摘要:Spring配置文件中关于事务配置总是由三个部分组成 DataSource TransactionManager 代理机制无论哪种配置方式,一般变化的只是代理机制这部分。DataSource、TransactionManager这两部分只是会根据数据访问方式有所变化。比如使用Hibernate进行数据访问时,DataSource实际为SessionFactory,TransactionManager的实现为HibernateTransactionManager。具体如下图:五种不同配置方法的共同部分配置如下: <bean id="sessionFactory" ... 阅读全文
posted @ 2012-02-02 11:54 万法自然~ 阅读(386) 评论(1) 推荐(1)