Sun Java System Application Server Enterprise Edition 8.1 2005Q2 관리 설명서

11장 트랜잭션

분할할 수 없는 작업 단위에 하나 이상의 단계를 포함시켜 트랜잭션에서 데이터 무결성과 일관성을 보장합니다. 이 장은 다음 내용으로 구성되어 있습니다.

트랜잭션 정보

트랜잭션

트랜잭션은 응용 프로그램에서 모두 성공적으로 완료하지 않으면 각 작업의 변경 사항이 철회되는 일련의 작업입니다. 예를 들어 당좌 계좌의 자금을 저축 계좌로 대체하는 것은 다음 단계로 구성된 트랜잭션입니다.

  1. 당좌 계좌에 대체에 충분한 자금이 있는지 확인합니다.

  2. 당좌 계좌에 충분한 자금이 있을 경우 당좌 계좌의 금액을 차변에 기입합니다.

  3. 저축 계좌의 대변에 자금을 기입합니다.

  4. 당좌 계좌 로그에 대체를 기록합니다.

  5. 저축 계좌 로그에 대체를 기록합니다.

이 단계 중 어느 한 단계라도 실패할 경우 이전 단계의 모든 변경 사항이 철회되고 당좌 계좌와 저축 계좌는 트랜잭션 시작 전과 동일한 상태가 되어야 합니다. 이 이벤트를 롤백이라고 합니다. 모든 단계가 성공적으로 완료되면 트랜잭션은 완결된 상태에 있습니다. 트랜잭션은 완결 또는 롤백 상태로 종료됩니다.

J2EE 기술의 트랜잭션

J2EE 기술에서 트랜잭션을 처리하는 데는 다음 5명의 참가자가 관련됩니다.

각 엔티티는 다음에서 설명하는 여러 API 및 기능을 구현하여 신뢰할 수 있는 방법으로 트랜잭션을 처리합니다.

트랜잭션에 대한 관리 콘솔 작업

Application Server는 관리 콘솔의 설정을 기반으로 트랜잭션을 처리합니다.

트랜잭션 구성

이 절에서는 트랜잭션 설정을 구성하는 방법에 대해 설명합니다.

트랜잭션에 대한 자세한 내용은 다음 절을 참조하십시오.

Procedure Application Server가 트랜잭션을 복구하는 방법을 구성하는 방법

서버나 자원 관리자의 문제로 인해 트랜잭션이 완료되지 않을 수 있습니다. 이 경우, 문제가 있는 트랜잭션을 완료하고 실패를 복구해야 합니다. Application Server는 이 실패를 복구하고 서버 시작 시 트랜잭션을 완료하도록 설계되었습니다.

복구를 수행하는 중 일부 자원에 연결할 수 없을 경우 트랜잭션 복구를 시도하기 때문에 서버 재시작이 지연될 수 있습니다.

트랜잭션이 여러 서버에 걸쳐 있는 경우 트랜잭션을 시작한 서버는 다른 서버에 연결하여 트랜잭션의 결과를 가져올 수 있습니다. 다른 서버에 연결할 수 없는 경우 트랜잭션은 발견적 판단 필드를 사용하여 결과를 확인합니다.

  1. 트리 구성 요소에서 구성 노드를 선택합니다.

  2. 구성할 인스턴스를 선택합니다.

    • 특정 인스턴스를 구성하려면 해당 인스턴스 구성 노드를 선택합니다. 예를 들어, 기본 인스턴스 server에 대해 server-config 노드를 선택합니다.

    • 모든 인스턴스의 기본 설정을 구성하려면 default-config 노드를 선택합니다.

  3. 트랜잭션 서비스 노드를 선택합니다.

  4. 완료되지 않은 트랜잭션 복구를 활성화하려면 다시 시작할 때 복구 필드를 선택합니다.

  5. 재시도 시간 초과 필드에 Application Server가 연결할 수 없는 서버에 연결을 시도하는 시간(초)을 설정합니다. 기본값은 10분(600초)입니다.

  6. 발견적 판단 필드에서 트랜잭션 중 연결할 수 없는 서버에 대한 정책을 설정합니다.

    이 필드를 완결로 설정할 이유가 없을 경우 발견적 판단을 롤백으로 설정해 둡니다. 확정되지 않은 트랜잭션을 완결하면 응용 프로그램의 데이터 무결성이 손상될 수 있습니다.

  7. 저장을 누릅니다.

  8. Application Server를 다시 시작합니다.

Procedure트랜잭션 시간 초과 값을 설정하는 방법

기본적으로 서버는 트랜잭션을 시간 초과하지 않습니다. 즉, 서버는 트랜잭션이 완료될 때까지 무기한 기다립니다. 트랜잭션의 시간 초과 값을 설정하면 트랜잭션이 구성된 시간 내에 완료되지 않을 경우 Application Server에서 트랜잭션을 롤백합니다.

  1. 트리 구성 요소에서 구성 노드를 선택합니다.

  2. 구성할 인스턴스를 선택합니다.

    • 특정 인스턴스를 구성하려면 해당 인스턴스 구성 노드를 선택합니다. 예를 들어, 기본 인스턴스 server에 대해 server-config 노드를 선택합니다.

    • 모든 인스턴스의 기본 설정을 구성하려면 default-config 노드를 선택합니다.

  3. 트랜잭션 서비스 노드를 선택합니다.

  4. 트랜잭션 시간 초과 필드에 트랜잭션이 시간 초과되기 전의 시간(초)을 입력합니다.

    트랜잭션 시간 초과의 기본값은 0초입니다. 그러면 트랜잭션 시간 초과가 비활성화됩니다.

  5. 저장을 누릅니다.

  6. Application Server를 다시 시작합니다.

Procedure트랜잭션 로그 위치를 설정하는 방법

트랜잭션 로그는 관련된 자원의 데이터 무결성을 유지하고 오류를 복구하기 위해 각 트랜잭션에 대한 정보를 기록합니다. 트랜잭션 로그 위치 필드에서 지정한 디렉토리의 tx 하위 디렉토리에 트랜잭션 로그가 저장됩니다. 이 로그는 사람이 읽을 수 없습니다.

  1. 트리 구성 요소에서 구성 노드를 선택합니다.

  2. 구성할 인스턴스를 선택합니다.

    • 특정 인스턴스를 구성하려면 해당 인스턴스 구성 노드를 선택합니다. 예를 들어, 기본 인스턴스 server에 대해 server-config 노드를 선택합니다.

    • 모든 인스턴스의 기본 설정을 구성하려면 default-config 노드를 선택합니다.

  3. 트랜잭션 서비스 노드를 선택합니다.

  4. 트랜잭션 로그 위치 필드에 트랜잭션 로그 위치를 입력합니다.

    tx 하위 디렉토리가 만들어지고 트랜잭션 로그가 해당 디렉토리 아래에 저장됩니다.

    기본값은 ${com.sun.aas.instanceRoot}/logs입니다. ${com.sun.aas.instanceRoot} 변수는 인스턴스의 이름이고 Application Server 인스턴스를 시작할 때 설정됩니다. ${com.sun.aas.instanceRoot} 값을 보려면 실제 값을 클릭합니다.

  5. 저장을 누릅니다.

  6. Application Server를 다시 시작합니다.

Procedure키 포인트 간격을 설정하는 방법

키 포인트 작업은 트랜잭션 로그 파일을 압축합니다. 키 포인트 간격은 로그 상의 키 포인트 작업 간 트랜잭션 수입니다. 키 포인트 작업으로 트랜잭션 로그 파일 크기가 줄어들 수 있습니다. 키 포인트 간격이 크면(예: 2048) 트랜잭션 로그 파일이 더 커지고 키 포인트 작업이 적어질수록 성능이 더 좋아질 가능성이 있습니다. 키포인트 간격이 작아지면(예: 256) 로그 파일이 작아지지만, 키 포인트 작업 빈도가 높아져서 성능이 약간 낮아질 수 있습니다.

  1. 트리 구성 요소에서 구성 노드를 선택합니다.

  2. 구성할 인스턴스를 선택합니다.

    • 특정 인스턴스를 구성하려면 해당 인스턴스 구성 노드를 선택합니다. 예를 들어, 기본 인스턴스 server에 대해 server-config 노드를 선택합니다.

    • 모든 인스턴스의 기본 설정을 구성하려면 default-config 노드를 선택합니다.

  3. 트랜잭션 서비스 노드를 선택합니다.

  4. 키포인트 간격 필드에서 키포인트 작업 간의 트랜잭션 수를 입력합니다.

    기본값은 2048입니다.

  5. 저장을 누릅니다.

  6. Application Server를 다시 시작합니다.