交易類型和連線行為

所有連線使用都在廣域交易或區域交易限制 (LTC) 界限的範圍內進行。 每一個交易類型會對連線提出不同的需求,並以不同的方式影響連線設定。

連線共用及重複使用

您可以在廣域交易範圍內共用連線 (假設符合其他共用規則)。 您也可以在可共用 LTC 內共用連線。 您可以在 LTC 範圍內 循序重複使用 連線。 取得/使用/關閉連線型樣後面接著另一個取得/使用/關閉實例 (指向相同的資料來源或 Connection Factory) ,可讓您重複使用相同的連線。 如需詳細資料,請參閱「不可共用及可共用連線」主題。

JDBC AutoCommit 行為

第一次透過 getConnection () 呼叫取得所有 JDBC 連線時,依預設會包含 AutoCommit = TRUE 設定。 不過,不同的交易範圍和設定可能會導致變更或只是置換 AutoCommit 值。
  • 如果您在 LTC 內操作,並將其解析控制項設為 應用程式,除非應用程式變更,否則 AutoCommit 會保持為 TRUE
  • 如果您在 LTC 內操作,並將其解析控制項設為 ContainerAtBoundary,則應用程式 不得 觸控 AutoCommit 設定。 在工作開始之前,WebSphere® Application Server 執行時期會將 AutoCommit 值設為 FALSE ,然後視情況在 LTC 範圍結束時確定或回復工作。
  • 如果您在廣域交易內使用連線,資料庫會忽略 AutoCommit 設定,以便控制確定及回復處理的交易服務可以管理交易。 不論使用者是否變更 AutoCommit 設定,第一次使用連線來執行工作時,都會執行此動作。 交易完成之後, AutoCommit 值會回到第一次使用連線之前的值。 因此,即使在廣域交易中使用連線之前將 AutoCommit 值設為 TRUE ,您也不需要將值設為 FALSE ,因為資料庫會忽略該值。 在此範例中,交易完成之後,連線的 AutoCommit 值會回到 TRUE
  • 如果您在廣域交易內使用多個不同的連線,則保證所有工作一起確定或回復。 這不是區域交易限制 (LTC 範圍) 的情況。 在 LTC 內,在一個連線上完成的工作會確定或回復,與在 LTC 內任何其他連線上完成的工作無關。

一段式確定及兩段式確定連線

應用程式必須存取的資源管理程式 (例如資料庫伺服器) 類型和數目通常會決定應用程式交易需求。 因此,每一種類型的資源管理程式都會對連線行為提出不同的需求。
  • 兩段式確定資源管理程式可以支援交易的兩段式協調。 對於涉及其他資源管理程式的交易,這項支援是必要的; 這些交易是廣域交易。 請參閱 WebSphere Application Server 中的「交易支援」主題,以取得進一步說明。
  • 一段式確定資源管理程式僅支援一段式交易或 LTC 交易,其中該資源是唯一參與的資料儲存庫。 請參閱 WebSphere Application Server 中的「交易支援」主題,以取得進一步說明。

一段式確定資源可讓在一段式連線上完成的工作無法與其他連線混合,並確保在所有連線上完成或自動失敗。 產品不容許在廣域交易中有多個一段式確定連線。 此外,在具有一或多個兩段式確定連線的廣域交易中,它不容許一段式確定連線。 您只能在廣域交易內協調多個兩段式確定連線。

WebSphere Application Server 提供 最後一個參與者支援,可讓單一一段式確定資源參與具有一或多個兩段式確定資源的廣域交易。

請注意,只要您使用指定 res-sharing-scope=Unshareable 的資源參照來執行多個 getConnection () 呼叫,就會取得多個實體連線。 當 res-sharing-scope=Shareable 但共用規則已岔斷時,也會發生此狀況。 在任一情況下,如果您在廣域交易中執行,請確定所涉及的資源已啟用兩階段確定 (有時也稱為 啟用 JTA)。 如果無法這樣做,會導致 XA 異常狀況,並記載下列訊息:
WTRN0063E: An illegal attempt to enlist a one phase capable resource with existing two phase capable 
resources has occurred.