-
public interface XAResourceXAResource接口是基于X / Open CAE规范(分布式事务处理:XA规范)的行业标准XA接口的Java映射。XA接口在分布式事务处理(DTP)环境中定义资源管理器和事务管理器之间的合同。 JDBC驱动程序或JMS提供程序实现此接口来支持全局事务与数据库或消息服务连接之间的关联。
XAResource接口可以由任何事务资源支持,这些资源旨在由应用程序在外部事务管理器控制事务的环境中使用。 这种资源的一个例子是数据库管理系统。 应用程序可以通过多个数据库连接访问数据。 每个数据库连接都作为事务资源与事务管理器一起登记。 事务管理器为参与全局事务的每个连接获取XAResource。 事务管理器使用
start方法将全局事务与资源相关联,并使用end方法将事务与资源取消关联。 资源管理器负责将全局事务与在开始和结束方法调用之间的数据执行的所有工作相关联。在事务提交时,资源管理器由事务管理器通知,根据两阶段提交协议来准备,提交或回滚事务。
- 从以下版本开始:
- 1.4
-
-
Field Summary
Fields Modifier and Type Field 描述 static intTMENDRSCAN结束恢复扫描。static intTMFAIL将呼叫方解除关联,并标记事务分支回滚。static intTMJOIN来电者正在加入现有的交易分支。static intTMNOFLAGS使用TMNOFLAGS表示没有选择标志值。static intTMONEPHASE来电者正在使用单相优化。static intTMRESUME来电者正在恢复与暂停的交易分支的关联。static intTMSTARTRSCAN启动恢复扫描。static intTMSUCCESS从一个事务分支解除呼叫者。static intTMSUSPEND来电者暂停(不结束)其与交易分支的关联。static intXA_OK交易工作已正常准备。static intXA_RDONLY事务分支是只读的,已经被提交。
-
方法摘要
所有方法 接口方法 抽象方法 Modifier and Type 方法 描述 voidcommit(Xid xid, boolean onePhase)提交由xid指定的全局事务。voidend(Xid xid, int flags)结束代表交易分支执行的工作。voidforget(Xid xid)告诉资源管理器忘记一个启发式完成的事务分支。intgetTransactionTimeout()获取为此XAResource实例设置的当前事务超时值。booleanisSameRM(XAResource xares)调用此方法来确定由目标对象表示的资源管理器实例是否与由参数 xares表示的资源管理器实例 相同 。intprepare(Xid xid)请求资源管理器准备xid中指定的事务的事务提交。Xid[]recover(int flag)从资源管理器获取准备的事务分支列表。voidrollback(Xid xid)通知资源管理器代表交易分支回滚完成的工作。booleansetTransactionTimeout(int seconds)设置此XAResource实例的当前事务超时值。voidstart(Xid xid, int flags)代表xid指定的事务处理开始工作。
-
-
-
字段详细信息
-
TMENDRSCAN
static final int TMENDRSCAN
结束恢复扫描。- 另请参见:
- Constant Field Values
-
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
-
XA_OK
static final int XA_OK
交易工作已正常准备。- 另请参见:
- 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。
-
-