public interface XAResource
XAResource接口是基于X / Open CAE规范(分布式事务处理:XA规范)的行业标准XA接口的Java映射。
XA接口在分布式事务处理(DTP)环境中定义资源管理器和事务管理器之间的合同。 JDBC驱动程序或JMS提供程序实现此接口来支持全局事务与数据库或消息服务连接之间的关联。
XAResource接口可以由任何事务资源支持,这些资源旨在由应用程序在外部事务管理器控制事务的环境中使用。 这种资源的一个例子是数据库管理系统。 应用程序可以通过多个数据库连接访问数据。 每个数据库连接都作为事务资源与事务管理器一起登记。 事务管理器为参与全局事务的每个连接获取XAResource。 事务管理器使用start
方法将全局事务与资源关联,并使用end
方法将事务与资源取消关联。 资源管理器负责将全局事务与在开始和结束方法调用之间的数据执行的所有工作相关联。
在事务提交时,资源管理器由事务管理器通知,根据两阶段提交协议来准备,提交或回滚事务。
Modifier and Type | Field and Description |
---|---|
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 | Method and Description |
---|---|
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 。
|
static final int TMENDRSCAN
static final int TMFAIL
static final int TMJOIN
static final int TMNOFLAGS
static final int TMONEPHASE
static final int TMRESUME
static final int TMSTARTRSCAN
static final int TMSUCCESS
static final int TMSUSPEND
static final int XA_RDONLY
static final int XA_OK
void commit(Xid xid, boolean onePhase) throws XAException
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 *异常。 返回后,资源管理器已经回滚了分支机构的工作,并已发布了所有持有的资源。
void end(Xid xid, int flags) throws XAException
如果在标志中指定了TMSUSPEND,则事务分支将暂停在不完整状态。 交易上下文处于挂起状态,必须通过指定TMRESUME的start
方法恢复。
如果指定了TMFAIL,则该部分工作失败。 资源管理器可以将事务标记为仅回滚
如果指定了TMSUCCESS,则部分工作已成功完成。
xid
- 与以前在
start
方法中使用的标识符相同的全局事务标识符。
flags
- TMSUCCESS,TMFAIL或TMSUSPEND之一。
XAException
- 发生错误。
可能的XAException值为XAER_RMERR,XAER_RMFAILED,XAER_NOTA,XAER_INVAL,XAER_PROTO或XA_RB *。
void forget(Xid xid) throws XAException
xid
- 全局事务标识符。
XAException
- 发生错误。
可能的异常值为XAER_RMERR,XAER_RMFAIL,XAER_NOTA,XAER_INVAL或XAER_PROTO。
int getTransactionTimeout() throws XAException
XAResource.setTransactionTimeout
,则返回值是为资源管理器设置的默认超时值;
否则返回在前setTransactionTimeout
通话中使用的值。
XAException
- 发生错误。
可能的异常值为XAER_RMERR和XAER_RMFAIL。
boolean isSameRM(XAResource xares) throws XAException
xares
- 其资源管理器实例与目标对象的资源管理器实例进行比较的XAResource对象。
XAException
- 发生错误。
可能的异常值为XAER_RMERR和XAER_RMFAIL。
int prepare(Xid xid) throws XAException
xid
- 全局事务标识符。
XAException
- 发生错误。
可能的异常值为:XA_RB *,XAER_RMERR,XAER_RMFAIL,XAER_NOTA,XAER_INVAL或XAER_PROTO。
Xid[] recover(int flag) throws XAException
flag
- TMSTARTRSCAN,TMENDRSCAN,TMNOFLAGS之一。
在参数中不设置其他标志时,必须使用TMNOFLAGS。
XAException
- 发生错误。
可能的值为XAER_RMERR,XAER_RMFAIL,XAER_INVAL和XAER_PROTO。
void rollback(Xid xid) throws XAException
xid
- 全局事务标识符。
XAException
- 发生错误。
boolean setTransactionTimeout(int seconds) throws XAException
设置此XAResource
实例的当前事务超时值。 一旦设置,此超时值将有效,直到setTransactionTimeout
被再次调用不同的值。 要将超时值重置为资源管理器使用的默认值,请将该值设置为零。 如果超时操作成功执行,该方法返回true ; 否则为虚假 。 如果资源管理器不支持明确设置事务超时值,则此方法返回false 。
seconds
- 事务超时值(以秒为单位)。
XAException
- 发生错误。
可能的异常值为XAER_RMERR,XAER_RMFAIL或XAER_INVAL。
void start(Xid xid, int flags) throws XAException
xid
事务处理开始工作。
如果指定了TMJOIN,则启动适用于加入资源管理器以前看到的事务。
如果指定了TMRESUME,则开始适用于恢复参数xid中指定的挂起xid
。
如果既不指定TMJOIN也不指定TMRESUME,并且资源管理器先前已看到由xid指定的xid
,则资源管理器将使用XAER_DUPID错误代码引发XAException异常。
xid
- 与资源
xid
的全局事务标识符。
flags
- TMNOFLAGS,TMJOIN或TMRESUME之一。
XAException
- 发生错误。
可能的例外是XA_RB *,XAER_RMERR,XAER_RMFAIL,XAER_DUPID,XAER_OUTSIDE,XAER_NOTA,XAER_INVAL或XAER_PROTO。
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.