JTA事务管理

       有段时间没写博客了,主要原因还是换了工作环境,会忙会迷茫会惆怅,不知道大家会不会这样,从一个熟悉的城市来到一个陌生的城市(一个这辈子没有想过的城市---天津),一个天津本地人都觉得很LOW的一个城市,来这里的目的也只有一个。。。。。。。好,我们看JTA蠢话

       来到公司有段时间,公司用的框架SSM+Druid+JTA+Dubbo+Redis,主要是一个微型分布式框架,以spring+springMVC+Mybatis为基础,加上Dubbo去暴露和接受消费,JTA管理事务的方式来实现编程,Redis用来缓存,Druid做连接池(管理多个数据源),废话有点多了,来说JTA事务

        事务在前面的博客写过一点Spring管理实务,毕竟现在培训班对于事务讲的很少,例如:达内(不推荐去培训),事务最主要的是,保持数据库一致,让我们用百度都能搜到一个例子来说明一下,银行取钱:我们去取钱,插卡,提交取1000的请求,银行接收请求,从银行出1000,并且在你账户扣掉1000,如果你中途不取了,那么这个事务必须回滚,也就是说回银行1000,你的账户退回1000,这样才能保证一致性,让银行和客户都不损失钱。这是事务。

       Spring中的事务很少,他只是提供管理事务的接口,例如我们可以用JDBC,来管理事务

       JTA管理事务主要是:

a、UserTransaction接口:让应用程序得以控制事务的开始、挂起、提交、回滚 等。由Java客户端程序或EJB调用。

b、TransactionManager 接口:用于应用服务器管理事务状态
c、Transaction接口:用于执行相关事务操作
d、XAResource接口:用于在分布式事务环境下,协调事务管理器和资源管理器的工作
e、Xid接口:为事务标识符的Java映射

     JTA编程的基本步骤:
a、首先配置JTA ,建立相应的数据源
b、建立事务:通过创建UserTransaction类的实例来开始一个事务。代码如下:
  Context ctx = new InitialContext(p) ;
    UserTransaction trans = (UserTransaction) ctx.lookup("javax.Transaction.UserTransaction")
c、开始事务:代码为 trans.begin() ;
d、找出数据源:从Weblogic Server上找到数据源,代码如下:
   DataSource ds = (DataSource) ctx.lookup(“mysqldb") ;
e、建立数据库连接:Connection mycon = ds.getConnection() ;
f、执行SQL操作:stmt.executeUpdate(sqlS);
g、完成事务:trans.commit(); / trans.rollback();
h、关闭连接:mycon.close() ;

参考文献:http://www.cnblogs.com/drizzlewithwind/p/5711653.html

猜你喜欢

转载自929194891.iteye.com/blog/2385140