Sun Java System Application Server Enterprise Edition 8.2 관리 설명서

11장 트랜잭션

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

트랜잭션

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

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

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

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

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

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

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

J2EE 기술의 트랜잭션

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

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

트랜잭션 복구

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

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

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

관리 콘솔을 사용하여 Application Server가 트랜잭션을 복구하도록 구성할 수 있습니다. 이 작업에 대한 자세한 절차는 관리 콘솔 온라인 도움말을 참조하십시오.

트랜잭션 시간 초과 값

기본적으로 서버는 트랜잭션을 시간 초과하지 않습니다. 즉, 서버는 트랜잭션이 완료될 때까지 무기한 기다립니다. 트랜잭션의 시간 초과 값을 설정하면 트랜잭션이 구성된 시간 내에 완료되지 않을 경우 Application Server에서 트랜잭션을 롤백합니다. 이 작업에 대한 자세한 절차는 관리 콘솔 온라인 도움말을 참조하십시오.

트랜잭션 로그

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

키포인트 간격

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