XA協(xié)議是一個基于數(shù)據(jù)庫的分布式事務(wù)協(xié)議,其分為兩部分:事務(wù)管理器和本地資源管理器。事務(wù)管理器作為一個全局的調(diào)度者,負責對各個本地資源管理器統(tǒng)一號令提交或者回滾。二階提交協(xié)議(2PC)和三階提交協(xié)議(3PC)就是根據(jù)此協(xié)議衍生出來而來。主流的諸如Oracle、MySQL等數(shù)據(jù)庫均已實現(xiàn)了XA接口。
XA接口是雙向的系統(tǒng)接口,在事務(wù)管理器(Transaction Manager)以及一個或多個資源管理器(Resource Manager)之間形成通信橋梁。也就是說,在基于XA的一個事務(wù)中,我們可以針對多個資源進行事務(wù)管理,例如一個系統(tǒng)訪問多個數(shù)據(jù)庫,或即訪問數(shù)據(jù)庫、又訪問像消息中間件這樣的資源。這樣我們就能夠?qū)崿F(xiàn)在多個數(shù)據(jù)庫和消息中間件直接實現(xiàn)全部提交、或全部取消的事務(wù)。XA規(guī)范不是java的規(guī)范,而是一種通用的規(guī)范。