警告:使用0登记资源执行事务:Bitronix [英] WARNING: executing transaction with 0 enlisted resource: Bitronix

查看:313
本文介绍了警告:使用0登记资源执行事务:Bitronix的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在使用Bitronix将分布式事务执行到两个数据源中时,我收到此警告使用0登记的资源执行事务".有人可以帮助您了解如何招募资源进行全球交易.我的代码是:

I am getting this warning "executing transaction with 0 enlisted resource" while executing a distributed transaction with Bitronix into two datasources. Can some one help to understand how to enlist resources to global transaction. My code is:

   import java.sql.Connection;
   import java.sql.PreparedStatement;
   import java.sql.SQLException;

   import javax.sql.DataSource;
   import javax.transaction.HeuristicMixedException;
   import javax.transaction.HeuristicRollbackException;
   import javax.transaction.NotSupportedException;
   import javax.transaction.RollbackException;
   import javax.transaction.SystemException;

   import bitronix.tm.BitronixTransactionManager;
   import bitronix.tm.TransactionManagerServices;

   public class TestMain {

     public static void main(String[] args) {

     new TestMain().TestDT();

   }

   private void TestDT(){

     DataSource dataSourceRemote = ConnectionManager.getDatasourceRemote();
     DataSource dataSourceLocal = ConnectionManager.getDatasourceLocal();
     Connection con, conn = null;
     try {


        /*String remoteDS = "remoteDS";
        String localDS = "localDS";
        InitialContext ctxRemote = new InitialContext();
        ctxRemote.bind(remoteDS, dataSourceRemote);*/

        String INSERT_QUERY = "insert emp values (?,?,?,?)";

        /*InitialContext ctxLocal = new InitialContext();
        ctxLocal.bind(localDS, dataSourceLocal);*/
        BitronixTransactionManager btx =         TransactionManagerServices.getTransactionManager();
        //DataSource dsRemote = null;
        //btx.ge
    //UserTransaction us =  


        try {

            btx.begin();


            //DataSource dsRemote = (DataSource) ctxRemote.lookup(remoteDS);
            con = dataSourceRemote.getConnection();
            //con.setAutoCommit(false);
            PreparedStatement pstmt = con.prepareStatement(INSERT_QUERY);

            for(int i=1; i<=5; i++){
                pstmt.setInt(1, i);
                pstmt.setString(2, "Sanjay_"+i);
                pstmt.setString(3, "123"+i);
                pstmt.setString(4, "1000"+i);
                pstmt.execute();
            }



            //DataSource dsLocal = (DataSource) ctxLocal.lookup(localDS);
            conn = dataSourceLocal.getConnection();
            //conn.setAutoCommit(false);
            PreparedStatement ps = conn.prepareStatement(INSERT_QUERY);
            for(int i=1; i<=5; i++){
                ps.setInt(1, i);
                ps.setString(2, "Nikhil_"+i);
                ps.setString(3, "123"+i);
                ps.setString(4, "1000"+i);
                ps.execute();
            }

            btx.commit();
            con.close();
            conn.close();

        } catch (NotSupportedException e) {
            e.printStackTrace();
        } catch (SystemException e) {
            e.printStackTrace();
        }catch (SQLException e) {
            try{
                btx.rollback();
            }catch (Exception ex) {
                ex.printStackTrace();
            }
            e.printStackTrace();
        }catch (HeuristicRollbackException e) {
            try{
                btx.rollback();
            }catch (Exception ex) {
                ex.printStackTrace();
            }
            e.printStackTrace();
        }catch (HeuristicMixedException e) {
            try{
                btx.rollback();
            }catch (Exception ex) {
                ex.printStackTrace();
            }
            e.printStackTrace();
        }catch (RollbackException e) {
            try{
                btx.rollback();
            }catch (Exception ex) {
                ex.printStackTrace();
            }
            e.printStackTrace();
        }finally{
            //try{
                btx.shutdown();
                //con.close();
                //conn.close();
            /*}catch (Exception e) {
                e.printStackTrace();
            }*/
        }

        //btx.getTransaction()
    }catch (Exception e) {

        e.printStackTrace();
    }

}
      }

推荐答案

使用0个已登记资源执行事务" 只是意味着您的数据源未与Bitronix事务管理器映射.

"executing transaction with 0 enlisted resource" simply means that your data-sources are not mapped with Bitronix transaction manager.

这篇关于警告:使用0登记资源执行事务:Bitronix的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆