데이터베이스 트랜잭션을 복구하는 방법

Liberty 트랜잭션 관리자가 인다우트 데이터베이스 트랜잭션을 복구하는 경우, 이는 고유 ID 또는 JNDI 이름을 사용하여 현재 dataSource 요소를 찾은 후에 복구에 사용할 사용자 ID 및 비밀번호를 판별합니다.

server.xml 구성 파일에서 dataSource 요소의 속성을 지정하여 데이터 소스를 구성하십시오. 다음과 같이 데이터 소스의 고유 ID나 jndiName 속성을 지정할 수 있습니다.

 <dataSource id="ds1" jndiName="jdbc/ds1"... />

데이터 소스가 참여한 트랜잭션에 대한 복구가 보류 중인 경우, id 또는 jndiName 속성 값을 변경해서는 안 됩니다. dataSource 요소의 다른 속성을 변경하는 경우 해당 변경은 복구를 위해 보존됩니다. 그러므로 예를 들어 복구에 사용할 데이터베이스 사용자 ID와 비밀번호를 지정하는 recoveryAuthDataRef 속성을 추가할 수 있습니다.

복구에 사용할 데이터베이스 사용자 ID와 비밀번호는 다음 우선순위에 따라서 판별됩니다.
  1. dataSource 요소에 recoveryAuthDataRef 속성이 정의되어 있는 경우 authData 요소의 사용자 ID 및 비밀번호가 사용됩니다. 예:
    <authData id="recoveryAuth" user="dbuser1" password="{xor}Oz0vKDtu"/>
    <dataSource id="ds1" jndiName="jdbc/ds1" jdbcDriverRef="DB2" 
                recoveryAuthDataRef="recoveryAuth" .../>
  2. 컨테이너 관리 인증이 사용되는 경우 컨테이너 관리 인증 별명의 사용자 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" .../>
  3. dataSource 요소의 사용자 ID와 비밀번호가 사용됩니다. 예:
    <dataSource id="ds1" jndiName="jdbc/ds1" jdbcDriverRef="DB2" ...>
         <properties.db2.jcc databaseName="testdb" user="dbuser1" password="{xor}Oz0vKDtu"/>
    </dataSource>
  4. 이전의 어떤 조건도 충족되지 않고 사용자 ID 및 비밀번호 없이 복구가 시도되는 경우, JDBC 드라이버 및 데이터베이스에 의해 동작이 판별됩니다.
참고: 트랜잭션 복구가 @DataSourceDefinition 어노테이션 또는 배치 디스크립터의 <data-source> 요소 등과 같은 애플리케이션 정의 데이터 소스에 의해 수행되는 경우에는 복구가 발생할 때 연관된 애플리케이션이 실행 중인지 확인해야 합니다. server.xml 파일의 구성 설정을 사용하여 애플리케이션 정의 데이터 소스를 복구할 수 없습니다.

주제의 유형을 표시하는 아이콘 참조 주제

파일 이름: rwlp_ds_tx_recovery.html