Java Transaction API(Java事務(wù)API) (JTA)Java Transaction API(Application Programming Interface)
什么是JTA Transaction?它有怎樣的特點(diǎn)呢?JTA Transaction是指由J2EE Transactionmanager去管理的事務(wù)。其最大的特點(diǎn)是調(diào)用UserTransaction接口的begin,commit和rollback方法來完成事務(wù)范圍的界定,事務(wù)的提交和回滾。JTA Transaction可以實(shí)現(xiàn)同一事務(wù)對(duì)應(yīng)不同的數(shù)據(jù)庫,但是它仍然無法實(shí)現(xiàn)事務(wù)的嵌套。
分布式事務(wù)的規(guī)范由OMG的OTS所描述。
JTA是只是一組java接口用于描述,J2ee框架中事務(wù)管理器與應(yīng)用程序,資源管理器,以及應(yīng)用服務(wù)器之間的事務(wù)通訊。
它主要包括高層接口即面向應(yīng)用程序的接口;XAResource接口即面向資源的接口;以及事務(wù)管理器的接口。值得注意的是JTA只提供了接口,沒有具體的實(shí)現(xiàn)。
JTS是服務(wù)OTS的JTA的實(shí)現(xiàn)。簡單的說JTS實(shí)現(xiàn)了JTA接口,并且符合OTS的規(guī)范。
資源管理器只要其提供給事務(wù)管理器的接口符合XA接口規(guī)范,就可以被事務(wù)管理器處理。
所以,JTA可以處理任何提供符合XA接口的資源。包括:數(shù)據(jù)庫,JMS,商業(yè)對(duì)象等等
“Java 事務(wù) API”(JTA)啟用兩階段提交功能。當(dāng)配置 WebSphere Application Server 以訪問數(shù)據(jù)庫時(shí),可選擇具有 JTA 能力的驅(qū)動(dòng)程序。如果需要兩階段提交功能,則必須使用啟用 JTA 的驅(qū)動(dòng)程序。
只要您在事務(wù)中調(diào)用了多個(gè)數(shù)據(jù)庫連接,就需要 JTA。只要您在事務(wù)中調(diào)用了多個(gè)數(shù)據(jù)庫服務(wù)器,就需要兩階段提交。這些連接可以是相同的物理數(shù)據(jù)庫服務(wù)器或多個(gè)數(shù)據(jù)庫服務(wù)器。例如:
[list=1][*]實(shí)體企業(yè) Bean Entity1 在應(yīng)用程序服務(wù)器 AppServer1 中部署。[*]實(shí)體企業(yè) BeanEntity2 在應(yīng)用程序服務(wù)器 AppServer1 中部署。[*]會(huì)話企業(yè) Bean Session1 在應(yīng)用程序服務(wù)器AppServer1 中部署。[/list]如果 Session1 對(duì)同一事務(wù)內(nèi)的 Entity1 和 Entity2 調(diào)用了方法而這兩個(gè)企業(yè)Bean 正在使用不同的物理數(shù)據(jù)庫連接,則必須對(duì) Entity1 和 Entity2 使用的數(shù)據(jù)源啟用JTA。當(dāng)從相同的數(shù)據(jù)源對(duì)象獲取那些連接時(shí),這也是成立的。這需要具有 JTA 能力的驅(qū)動(dòng)程序以提交事務(wù)。
當(dāng)事務(wù)涉及到多個(gè)進(jìn)程時(shí),JTA 也是必需的。例如,一個(gè)事務(wù)可能會(huì)涉及在多個(gè)應(yīng)用程序服務(wù)器中部署的企業(yè) Bean。
[list=1][*]實(shí)體企業(yè) Bean Entity1 在應(yīng)用程序服務(wù)器 AppServer1 中部署。[*]實(shí)體企業(yè) BeanEntity2 在應(yīng)用程序服務(wù)器 AppServer2 中部署。[*]會(huì)話企業(yè) Bean Session1 在應(yīng)用程序服務(wù)器AppServer1 中部署。[/list]如果 Session1 對(duì)同一事務(wù)(此事務(wù)構(gòu)成一個(gè)分布式事務(wù))內(nèi)的 Entity1 和Entity2 調(diào)用了方法,則必須對(duì) Entity1 和 Entity2 使用的數(shù)據(jù)源啟用 JTA。
性能實(shí)現(xiàn)JTA 啟用的連接與非 JTA 啟用的連接執(zhí)行情況不同?;诖嗽颍绻膽?yīng)用程序不需要 JTA,則最好使用非 JTA 啟用的驅(qū)動(dòng)程序。
其它信息有關(guān) WebSphere Application Server 如何支持 JTA 的信息,參見
WebSphere Application Server 和 DB2 UDB iSeries 版的事務(wù)處理及其子主題。