-
public interface XAResourceXAResource接口是基于X / Open CAE规范(分布式事务处理:XA规范)的行业标准XA接口的Java映射。XA接口定义分布式事务处理(DTP)环境中资源管理器和事务管理器之间的协定。 JDBC驱动程序或JMS提供程序实现此接口以支持全局事务与数据库或消息服务连接之间的关联。
任何事务资源都可以支持XAResource接口,该资源旨在由事务由外部事务管理器控制的环境中的应用程序使用。 这种资源的一个例子是数据库管理系统。 应用程序可以通过多个数据库连接访问数据。 每个数据库连接都作为事务资源与事务管理器一起登记。 事务管理器为参与全局事务的每个连接获取XAResource。 事务管理器使用
start方法将全局事务与资源相关联,并使用end方法取消事务与资源的关联。 资源管理器负责将全局事务与在start和end方法调用之间对其数据执行的所有工作相关联。在事务提交时,事务管理器通知资源管理器根据两阶段提交协议准备,提交或回滚事务。
- 从以下版本开始:
- 1.4
-
-
字段汇总
字段 变量和类型 字段 描述 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事务分支是只读的并且已提交。
-
方法摘要
所有方法 实例方法 抽象方法 变量和类型 方法 描述 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
结束恢复扫描。- 另请参见:
- 常数字段值
-
TMFAIL
static final int TMFAIL
取消关联调用方并标记事务分支仅回滚。- 另请参见:
- 常数字段值
-
TMJOIN
static final int TMJOIN
调用者正在加入现有的事务分支。- 另请参见:
- 常数字段值
-
TMNOFLAGS
static final int TMNOFLAGS
使用TMNOFLAGS表示未选择任何标志值。- 另请参见:
- 常数字段值
-
TMONEPHASE
static final int TMONEPHASE
调用者正在使用单阶段优化。- 另请参见:
- 常数字段值
-
TMRESUME
static final int TMRESUME
呼叫者正在恢复与暂停的事务分支的关联。- 另请参见:
- 常数字段值
-
TMSTARTRSCAN
static final int TMSTARTRSCAN
开始恢复扫描。- 另请参见:
- 常数字段值
-
TMSUCCESS
static final int TMSUCCESS
解除调用者与事务分支的关联。- 另请参见:
- 常数字段值
-
TMSUSPEND
static final int TMSUSPEND
调用者暂停(不结束)与事务分支的关联。- 另请参见:
- 常数字段值
-
XA_RDONLY
static final int XA_RDONLY
事务分支是只读的并且已提交。- 另请参见:
- 常数字段值
-
XA_OK
static final int XA_OK
交易工作已正常准备。- 另请参见:
- 常数字段值
-
-
方法详细信息
-
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,则start适用于加入资源管理器先前看到的事务。 如果指定了TMRESUME,则start适用于恢复参数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。
-
-