如何回復資料庫交易
當 Liberty 交易管理程式回復不確定的資料庫交易時,它會利用唯一 ID 或 JNDI 名稱來尋找現行 dataSource 元素,然後決定要用於回復的使用者 ID 和密碼。
請在 server.xml 配置檔中指定 dataSource 元素的屬性來配置資料來源。 您可以依照下列方式來指派資料來源的唯一 ID 或 jndiName 屬性:
<dataSource id="ds1" jndiName="jdbc/ds1"... />
當資料來源所參與之交易的回復在擱置中,您不能變更 id 或 jndiName 屬性值。 如果您變更 dataSource 元素的任何其他屬性,回復會保留這些變更。 因此,您可以,比方說,新增一個 recoveryAuthDataRef 屬性來指定要用於回復的資料庫使用者 ID 和密碼。
當判斷要用於回復的資料庫使用者 ID 和密碼時,會根據下列優先順序:
- 如果 dataSource 元素定義了 recoveryAuthDataRef 屬性,就會使用 authData 元素的使用者 ID 和密碼。
例如:
<authData id="recoveryAuth" user="dbuser1" password="{xor}Oz0vKDtu"/> <dataSource id="ds1" jndiName="jdbc/ds1" jdbcDriverRef="DB2" recoveryAuthDataRef="recoveryAuth" .../>
- 如果使用儲存器管理的鑑別,就會使用儲存器管理的鑑別別名中的使用者 ID 和密碼。
例如:
- 在 ibm-web-bnd.xml 檔中,您有下列程式碼:
<resource-ref name="jdbc/ds1ref" binding-name="jdbc/ds1"> <authentication-alias name="user1Auth"/> </resource-ref>
- 在 server.xml 檔中,您必須定義下列程式碼:
<authData id="user1Auth" user="dbuser1" password="{xor}Oz0vKDtu"/> <dataSource id="ds1" jndiName="jdbc/ds1" jdbcDriverRef="DB2" .../>
- 在 ibm-web-bnd.xml 檔中,您有下列程式碼:
- 使用 dataSource 元素中的使用者 ID 和密碼。
例如:
<dataSource id="ds1" jndiName="jdbc/ds1" jdbcDriverRef="DB2" ...> <properties.db2.jcc databaseName="testdb" user="dbuser1" password="{xor}Oz0vKDtu"/> </dataSource>
- 如果不符合上述任何條件,且試圖在沒有使用者 ID 和密碼的情況下進行回復,就由 JDBC 驅動程式和資料庫來決定行為。
註: 如果由應用程式定義的資料來源來執行交易回復,例如 @DataSourceDefinition 註譯或部署描述子中的 <data-source> 元素,您必須確定在進行回復時,相關聯的應用程式在執行中。
您無法利用 server.xml 檔中的配置設定來回復應用程式定義的資料來源。