데이터베이스 트랜잭션 복구 방법
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 파일의 구성
설정을 사용하여 애플리케이션 정의 데이터 소스를 복구할 수
없습니다.