Jotm 分布式事物管理入门实例

import java.sql.Connection;

import javax.transaction.TransactionManager;
import javax.transaction.UserTransaction;

import org.enhydra.jdbc.standard.StandardXADataSource;
import org.objectweb.jotm.Jotm;


public class JotmMain {
 public static void main(String[]arges) throws Exception{
  //startDabase();
  //创建JTA的UserTransaction 与TransactionManager
  //使用UserTransaction 进行事物的提交回滚
  //使用TransactionManager 进行事物源的管理
  Jotm jotm=new Jotm(true,false);
  TransactionManager transactionManager=jotm.getTransactionManager();
  UserTransaction userTransaction=jotm.getUserTransaction();
  
  //创建分布式数据源
  StandardXADataSource datasource1=new StandardXADataSource();
  datasource1.setDriverName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
  datasource1.setUrl("jdbc:sqlserver://localhost:1433;DatabaseName=bid3");
  datasource1.setPassword("sa");
  datasource1.setUser("sa");
  datasource1.setTransactionManager(transactionManager);//将事物源交给transactionManager管理
  
  StandardXADataSource datasource2=new StandardXADataSource();
  datasource2.setDriverName("com.mysql.jdbc.Driver");
  datasource2.setUrl("jdbc:mysql://localhost:3306/springdata");
  datasource2.setPassword("sa");
  datasource2.setUser("root");
  datasource2.setTransactionManager(transactionManager);
  
  //得到分布式数据源的连接
  Connection con=datasource1.getXAConnection().getConnection();
  Connection con2=datasource2.getXAConnection().getConnection();
  
  userTransaction.begin();//启动分布式事物边界
   try{
    con.createStatement().execute("update t_b_ftp set ftpserverip='127.0.0.2'");
    con2.createStatement().execute("update testcb set age=3");
    int i=1/0;
    System.out.println(""+i);
    userTransaction.commit();
   }catch(Exception e){
    userTransaction.rollback();
    e.printStackTrace();
   }finally{
   
    con.close();
    con2.close();
   }
  
 }

引用的jar报/;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值