데이터베이스 트랜잭션 복구 방법
Liberty 프로파일 트랜잭션 관리자가 의심이 가는 데이터베이스 트랜잭션을 복구할 때, 고유 ID나 JNDI 이름을 사용하여 현재 dataSource 요소를 찾고 복구에 사용할 사용자 ID와 비밀번호를 판별합니다.
server.xml 구성 파일에서 dataSource 요소의 속성을 지정하여 데이터 소스를 구성하십시오. 다음과 같이 데이터 소스의 고유 ID나 jndiName 속성을 지정할 수 있습니다.
<dataSource id="ds1" jndiName="jdbc/ds1"... />
데이터 소스가 참여한 트랜잭션에 대한 복구가 보류 중인 경우, id 또는 jndiName 속성 값을 변경해서는 안 됩니다. dataSource 요소의 다른 속성을 변경하는 경우 해당 변경은 복구를 위해 보존됩니다. 그러므로 예를 들어 복구에 사용할 데이터베이스 사용자 ID와 비밀번호를 지정하는 recoveryAuthDataRef 속성을 추가할 수 있습니다.
복구에 사용할 데이터베이스 사용자 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 파일의 구성
설정을 사용하여 애플리케이션 정의 데이터 소스를 복구할 수
없습니다.