11.7.3. 트랜잭션에서 Heuristic Outcome 처리

추론적 트랜잭션 결과는 드물지만 일반적으로 특별한 원인을 갖습니다. 추론적이라는 단어는 "직접"을 의미하며, 일반적으로 이러한 결과를 처리해야 하는 방식입니다. 추론적 거래 결과에 대한 자세한 내용은 Heuristic Outcomes 를 참조하십시오.

다음 절차에서는 Jakarta 트랜잭션을 사용하여 트랜잭션의 복구 결과를 처리하는 방법을 설명합니다.

  1. 트랜잭션 결과의 원인은 리소스 관리자가 커밋하거나 롤백할 수 있다고 약속한 다음 약속을 이행하지 못하기 때문입니다. 이는 타사 구성 요소, 타사 구성 요소와 JBoss EAP 간의 통합 계층 문제 또는 JBoss EAP 자체에 문제가 될 수 있습니다.

    지금까지 가장 일반적인 복구 오류의 원인은 환경에 일시적인 오류와 리소스 관리자를 처리하는 코딩 오류입니다.

  2. 일반적으로 환경에 일시적인 오류가 있는 경우 복구 오류를 확인하기 전에 이를 알 수 있습니다. 이는 네트워크 중단, 하드웨어 오류, 데이터베이스 장애, 정전 또는 기타 여러 가지 문제로 인해 발생할 수 있습니다.

    스트레스 테스트 중에 테스트 환경에서 복구 결과가 나오면 테스트 환경의 약점이 있음을 의미합니다.

    주의

    JBoss EAP는 장애 발생 시 복구되지 않은 상태인 트랜잭션을 자동으로 복구하지만 복구 트랜잭션은 복구하지 않습니다.

  3. 환경에 분명한 오류가 없거나 복구 결과를 쉽게 재현할 수 있는 경우 코딩 오류 때문일 수 있습니다. 솔루션을 사용하려면 타사 벤더에 문의해야 합니다.

    JBoss EAP의 트랜잭션 관리자에 문제가 있다고 생각되는 경우 지원 티켓을 작성해야 합니다.

  4. 관리 CLI를 사용하여 수동으로 트랜잭션 복구를 시도할 수 있습니다. 자세한 내용은 JBoss EAP 에서 트랜잭션 관리의 트랜잭션 참가자 복구 섹션을 참조하십시오.
  5. 트랜잭션 결과를 수동으로 확인하는 프로세스는 오류의 정확한 상황에 따라 달라집니다. 환경에 적용할 수 있는 다음 단계를 수행합니다.

    1. 관련된 리소스 관리자를 식별합니다.
    2. 트랜잭션 관리자 및 리소스 관리자의 상태를 검사합니다.
    3. 관련된 구성 요소 중 하나 이상에서 로그 정리 및 데이터 조정을 수동으로 강제 적용합니다.
  6. 테스트 환경에서 또는 데이터의 무결성에 관심이 없는 경우 트랜잭션 로그를 삭제하고 JBoss EAP를 다시 시작하면 복구 결과가 제거됩니다. 기본적으로 트랜잭션 로그는 독립 실행형 서버의 EAP_HOME/standalone/data/tx-object-store/ 디렉터리에 또는 관리형 도메인의 EAP_HOME/domain/servers/SERVER_NAME/data/tx-object-store/ 디렉터리에 있습니다. 관리형 도메인의 경우 SERVER_NAME 은 서버 그룹에 참여하는 개별 서버의 이름을 나타냅니다.

    참고

    트랜잭션 로그의 위치는 사용 중인 오브젝트 저장소와 object-store- relative-to 및 object-store- path 매개변수에 설정된 값에 따라 달라집니다. 파일 시스템 로그(예: 표준 섀도우 및 Apache ActiveMQ Artemis 로그)의 경우 기본 디렉터리 위치가 사용되지만 JDBC 오브젝트 저장소를 사용하는 경우 트랜잭션 로그가 데이터베이스에 저장됩니다.