Java Transaction API(Java事務(wù)API) (JTA)Java Transaction API(Application Programming Interface)
什么是JTA Transaction?它有怎樣的特點呢?JTA Transaction是指由J2EE Transaction manager去管理的事務(wù)。其最大的
特點是調(diào)用UserTransaction接口的begin,commit和rollback方法來完成事務(wù)范圍的界定,事務(wù)的提交和回滾。JTA
Transaction可以實現(xiàn)同一事務(wù)對應(yīng)不同的數(shù)據(jù)庫,但是它仍然無法實現(xiàn)事務(wù)的嵌套。
分布式事務(wù)的規(guī)范由OMG的OTS所描述。
JTA是只是一組java接口用于描述,J2ee框架中事務(wù)管理器與應(yīng)用程序,資源管理器,以及應(yīng)用服務(wù)器之間的事務(wù)通訊。
它主要包括高層接口即面向應(yīng)用程序的接口;XAResource接口即面向資源的接口;以及事務(wù)管理器的接口。值得注意的是JTA
只提供了接口,沒有具體的實現(xiàn)。
JTS是服務(wù)OTS的JTA的實現(xiàn)。簡單的說JTS實現(xiàn)了JTA接口,并且符合OTS的規(guī)范。
資源管理器只要其提供給事務(wù)管理器的接口符合XA接口規(guī)范,就可以被事務(wù)管理器處理。
所以,JTA可以處理任何提供符合XA接口的資源。包括:數(shù)據(jù)庫,JMS,商業(yè)對象等等
“Java 事務(wù) API”(JTA)啟用兩階段提交功能。當(dāng)配置 WebSphere Application Server 以訪問數(shù)據(jù)庫時,可選擇具有
JTA 能力的驅(qū)動程序。如果需要兩階段提交功能,則必須使用啟用 JTA 的驅(qū)動程序。
只要您在事務(wù)中調(diào)用了多個數(shù)據(jù)庫連接,就需要 JTA。只要您在事務(wù)中調(diào)用了多個數(shù)據(jù)庫服務(wù)器,就需要兩階段提交。這些
連接可以是相同的物理數(shù)據(jù)庫服務(wù)器或多個數(shù)據(jù)庫服務(wù)器。例如:
* 實體企業(yè) Bean Entity1 在應(yīng)用程序服務(wù)器 AppServer1 中部署。
* 實體企業(yè) Bean Entity2 在應(yīng)用程序服務(wù)器 AppServer1 中部署。
* 會話企業(yè) Bean Session1 在應(yīng)用程序服務(wù)器 AppServer1 中部署。
如果 Session1 對同一事務(wù)內(nèi)的 Entity1 和 Entity2 調(diào)用了方法而這兩個企業(yè) Bean 正在使用不同的物理數(shù)據(jù)庫連接,則
必須對 Entity1 和 Entity2 使用的數(shù)據(jù)源啟用 JTA。當(dāng)從相同的數(shù)據(jù)源對象獲取那些連接時,這也是成立的。這需要具有
JTA 能力的驅(qū)動程序以提交事務(wù)。
當(dāng)事務(wù)涉及到多個進程時,JTA 也是必需的。例如,一個事務(wù)可能會涉及在多個應(yīng)用程序服務(wù)器中部署的企業(yè) Bean。
* 實體企業(yè) Bean Entity1 在應(yīng)用程序服務(wù)器 AppServer1 中部署。
* 實體企業(yè) Bean Entity2 在應(yīng)用程序服務(wù)器 AppServer2 中部署。
* 會話企業(yè) Bean Session1 在應(yīng)用程序服務(wù)器 AppServer1 中部署。
如果 Session1 對同一事務(wù)(此事務(wù)構(gòu)成一個分布式事務(wù))內(nèi)的 Entity1 和 Entity2 調(diào)用了方法,則必須對 Entity1 和
Entity2 使用的數(shù)據(jù)源啟用 JTA。
性能實現(xiàn)JTA 啟用的連接與非 JTA 啟用的連接執(zhí)行情況不同。基于此原因,如果您的應(yīng)用程序不需要 JTA,則最好使用非
JTA 啟用的驅(qū)動程序。
posted on 2009-10-16 14:23
王永慶 閱讀(768)
評論(0) 編輯 收藏 所屬分類:
設(shè)計思想