Module  java.sql
软件包  javax.transaction.xa

Interface XAResource



  • public interface XAResource
    XAResource接口是基于X / Open CAE规范(分布式事务处理:XA规范)的行业标准XA接口的Java映射。

    XA接口在分布式事务处理(DTP)环境中定义资源管理器和事务管理器之间的合同。 JDBC驱动程序或JMS提供程序实现此接口来支持全局事务与数据库或消息服务连接之间的关联。

    XAResource接口可以由任何事务资源支持,这些资源旨在由应用程序在外部事务管理器控制事务的环境中使用。 这种资源的一个例子是数据库管理系统。 应用程序可以通过多个数据库连接访问数据。 每个数据库连接都作为事务资源与事务管理器一起登记。 事务管理器为参与全局事务的每个连接获取XAResource。 事务管理器使用start方法将全局事务与资源相关联,并使用end方法将事务与资源取消关联。 资源管理器负责将全局事务与在开始和结束方法调用之间的数据执行的所有工作相关联。

    在事务提交时,资源管理器由事务管理器通知,根据两阶段提交协议来准备,提交或回滚事务。

    从以下版本开始:
    1.4
    • Field Summary

      Fields  
      Modifier and Type Field 描述
      static int TMENDRSCAN
      结束恢复扫描。
      static int TMFAIL
      将呼叫方解除关联,并标记事务分支回滚。
      static int TMJOIN
      来电者正在加入现有的交易分支。
      static int TMNOFLAGS
      使用TMNOFLAGS表示没有选择标志值。
      static int TMONEPHASE
      来电者正在使用单相优化。
      static int TMRESUME
      来电者正在恢复与暂停的交易分支的关联。
      static int TMSTARTRSCAN
      启动恢复扫描。
      static int TMSUCCESS
      从一个事务分支解除呼叫者。
      static int TMSUSPEND
      来电者暂停(不结束)其与交易分支的关联。
      static int XA_OK
      交易工作已正常准备。
      static int XA_RDONLY
      事务分支是只读的,已经被提交。
    • 方法摘要

      所有方法  接口方法  抽象方法 
      Modifier and Type 方法 描述
      void commit​(Xid xid, boolean onePhase)
      提交由xid指定的全局事务。
      void end​(Xid xid, int flags)
      结束代表交易分支执行的工作。
      void forget​(Xid xid)
      告诉资源管理器忘记一个启发式完成的事务分支。
      int getTransactionTimeout​()
      获取为此XAResource实例设置的当前事务超时值。
      boolean isSameRM​(XAResource xares)
      调用此方法来确定由目标对象表示的资源管理器实例是否与由参数 xares表示的资源管理器实例 相同
      int prepare​(Xid xid)
      请求资源管理器准备xid中指定的事务的事务提交。
      Xid[] recover​(int flag)
      从资源管理器获取准备的事务分支列表。
      void rollback​(Xid xid)
      通知资源管理器代表交易分支回滚完成的工作。
      boolean setTransactionTimeout​(int seconds)
      设置此 XAResource实例的当前事务超时值。
      void start​(Xid xid, int flags)
      代表 xid指定的事务处理开始工作。
    • 字段详细信息

      • TMFAIL

        static final int TMFAIL
        将呼叫方解除关联,并标记事务分支回滚。
        另请参见:
        Constant Field Values
      • TMJOIN

        static final int TMJOIN
        来电者正在加入现有的交易分支。
        另请参见:
        Constant Field Values
      • TMNOFLAGS

        static final int TMNOFLAGS
        使用TMNOFLAGS表示没有选择标志值。
        另请参见:
        Constant Field Values
      • TMONEPHASE

        static final int TMONEPHASE
        来电者正在使用单相优化。
        另请参见:
        Constant Field Values
      • TMRESUME

        static final int TMRESUME
        来电者正在恢复与暂停的交易分支的关联。
        另请参见:
        Constant Field Values
      • TMSTARTRSCAN

        static final int TMSTARTRSCAN
        启动恢复扫描。
        另请参见:
        Constant Field Values
      • TMSUCCESS

        static final int TMSUCCESS
        从一个事务分支解除呼叫者。
        另请参见:
        Constant Field Values
      • TMSUSPEND

        static final int TMSUSPEND
        来电者暂停(不结束)其与交易分支的关联。
        另请参见:
        Constant Field Values
      • XA_RDONLY

        static final int XA_RDONLY
        事务分支是只读的,已经被提交。
        另请参见:
        Constant Field Values
    • 方法详细信息

      • commit

        void commit​(Xid xid,
                    boolean onePhase)
             throws XAException
        提交由xid指定的全局事务。
        参数
        xid - 全局事务标识符
        onePhase - 如果为true,资源管理器应使用一阶段提交协议来代表xid完成工作。
        异常
        XAException - 发生错误。 XAExceptions是XA_HEURHAZ,XA_HEURCOM,XA_HEURRB,XA_HEURMIX,XAER_RMERR,XAER_RMFAIL,XAER_NOTA,XAER_INVAL或XAER_PROTO。

        如果资源管理器没有提交事务并且参数onePhase被设置为true,资源管理器可能会抛出一个XA_RB *异常。 返回后,资源管理器已经回滚了分支机构的工作,并已发布了所有持有的资源。

      • end

        void end​(Xid xid,
                 int flags)
          throws XAException
        结束代表交易分支执行的工作。 资源管理器将XA资源与指定的事务分支分离,并使事务完成。

        如果在标志中指定了TMSUSPEND,则事务分支将暂停在不完整状态。 事务上下文处于暂停状态,必须通过指定start方法恢复。

        如果指定了TMFAIL,则该部分工作失败。 资源管理器可以将事务标记为仅回滚

        如果指定了TMSUCCESS,则部分工作已成功完成。

        参数
        xid - 与以前在 start方法中使用的标识符相同的全局事务标识符。
        flags - TMSUCCESS,TMFAIL或TMSUSPEND之一。
        异常
        XAException - 发生错误。 可能的XAException值为XAER_RMERR,XAER_RMFAILED,XAER_NOTA,XAER_INVAL,XAER_PROTO或XA_RB *。
      • forget

        void forget​(Xid xid)
             throws XAException
        告诉资源管理器忘记一个启发式完成的事务分支。
        参数
        xid - 全局事务标识符。
        异常
        XAException - 发生错误。 可能的异常值为XAER_RMERR,XAER_RMFAIL,XAER_NOTA,XAER_INVAL或XAER_PROTO。
      • getTransactionTimeout

        int getTransactionTimeout​()
                           throws XAException
        获取为此XAResource实例设置的当前事务超时值。 如果在调用此方法之前未使用XAResource.setTransactionTimeout ,则返回值是为资源管理器设置的默认超时值; 否则返回上一次setTransactionTimeout调用中使用的值。
        结果
        事务超时值(以秒为单位)。
        异常
        XAException - 发生错误。 可能的异常值为XAER_RMERR和XAER_RMFAIL。
      • isSameRM

        boolean isSameRM​(XAResource xares)
                  throws XAException
        调用此方法来确定由目标对象表示的资源管理器实例是否与由参数 xares表示的资源管理器实例 相同
        参数
        xares - 将资源管理器实例与目标对象的资源管理器实例进行比较的XAResource对象。
        结果
        如果是相同的RM实例,则为true ; 否则为虚假
        异常
        XAException - 发生错误。 可能的异常值为XAER_RMERR和XAER_RMFAIL。
      • prepare

        int prepare​(Xid xid)
             throws XAException
        请求资源管理器准备xid中指定的事务的事务提交。
        参数
        xid - 全局事务标识符。
        结果
        一个值,表示资源经理对交易结果的投票。 可能的值为:XA_RDONLY或XA_OK。 如果资源管理器想要回滚事务,则应该通过在prepare方法中引发适当的XAException来实现。
        异常
        XAException - 发生错误。 可能的异常值为:XA_RB *,XAER_RMERR,XAER_RMFAIL,XAER_NOTA,XAER_INVAL或XAER_PROTO。
      • recover

        Xid[] recover​(int flag)
               throws XAException
        从资源管理器获取准备的事务分支列表。 事务管理器在恢复期间调用此方法以获取当前处于准备状态或启发式完成状态的事务分支列表。
        参数
        flag - TMSTARTRSCAN,TMENDRSCAN,TMNOFLAGS之一。 在参数中不设置其他标志时,必须使用TMNOFLAGS。
        结果
        资源管理器返回当前处于准备或启发式完成状态的事务分支的零个或多个XID。 如果在操作期间发生错误,资源管理器应该抛出适当的XAException。
        异常
        XAException - 发生错误。 可能的值为XAER_RMERR,XAER_RMFAIL,XAER_INVAL和XAER_PROTO。
      • rollback

        void rollback​(Xid xid)
               throws XAException
        通知资源管理器代表交易分支回滚完成的工作。
        参数
        xid - 全局事务标识符。
        异常
        XAException - 发生错误。
      • setTransactionTimeout

        boolean setTransactionTimeout​(int seconds)
                               throws XAException
        设置此XAResource实例的当前事务超时值。 一旦设置,此超时值将有效,直到使用不同的值再次调用setTransactionTimeout 要将超时值重置为资源管理器使用的默认值,请将该值设置为零。 如果超时操作成功执行,该方法返回true ; 否则为虚假 如果资源管理器不支持明确设置事务超时值,则此方法返回false
        参数
        seconds - 事务超时值(以秒为单位)。
        结果
        如果事务超时值设置成功,则为true ; 否则为虚假
        异常
        XAException - 发生错误。 可能的异常值为XAER_RMERR,XAER_RMFAIL或XAER_INVAL。
      • start

        void start​(Xid xid,
                   int flags)
            throws XAException
        代表xid指定的事务处理开始工作。 如果指定了TMJOIN,则启动适用于加入资源管理器以前看到的事务。 如果指定了TMRESUME,则开始适用于恢复参数xid指定的挂起事务。 如果既未指定TMJOIN也不指定xid ,并且资源管理器先前已经看到xid指定的事务,资源管理器会使用XAER_DUPID错误代码引发XAException异常。
        参数
        xid - 与资源关联的全局事务标识符。
        flags - TMNOFLAGS,TMJOIN或TMRESUME之一。
        异常
        XAException - 发生错误。 可能的例外是XA_RB *,XAER_RMERR,XAER_RMFAIL,XAER_DUPID,XAER_OUTSIDE,XAER_NOTA,XAER_INVAL或XAER_PROTO。