wannaqueen
  • Initial page
  • Spring boot
    • 스프링부트의 소개
      • 8. 스프링 부트 소개 by ks
      • 9. 시스템 요구사항 by ks
      • 10. 스프링 부트 설치 by ks
      • 11. 첫 번째 Spring Boot 애플리케이션 개발하기 by ys
        • 11.1 POM 만들기
        • 11.2 클래스 패스 의존성 추가하기
        • 11.3 코드 작성하기
        • 11.4 예제 실행하기
        • 11.5 실행 가능한 jar 만들기
      • 12. 다음에 읽을 내용 by ys
      • 13. 빌드 시스템 by sh
        • 13.1 의존성 관리
        • 13.2 Maven
        • 13.3 Gradle
        • 13.4 Ant
        • 13.5 Starters
    • 스프링부트의 기능
      • 23. Spring Application by ys
        • 23.1 startup 실패
        • 23.2 배너를 내가 원하는 대로 바꾸기
        • 23.3 SpringApplication 커스터마이징하기
        • 23.4 Fluent Builder API
        • 23.5 어플리케이션 이벤트와 리스너들
        • 23.6 웹 환경
        • 23.7 Application 인자에 접근하기
        • 23.8 ApplicationRunner 또는 CommandLineRunner 사용
        • 23.9 어플리케이션 종료
        • 23.10 관리자 기능
      • 24. 외부화된 구성 by ys
        • 24.1 임의의 값 구성
        • 24.2 명령행 특성 액세스
        • 24.3 응용 프로그램 속성 파일
        • 24.4 프로파일 관련 프라퍼티들
        • 24.5 프라퍼티들에서 플레이스홀더들
        • 24.6 속성의 암호화
        • 24.7 속성대신 yaml 사용하기 - 다시
        • 24.8 Type-safe Configuration Properties
      • 25. 프로파일 by ks
        • 25.1 Active 프로파일 더하기
        • 25.2 프로그램적으로 프로파일 세팅
        • 25.3 프로파일 별 구성파일
      • 26. 로깅 by ks
        • 26.1 로그 형식
        • 26.2 콘솔 출력
        • 26.3 파일 출력
        • 26.4 로거 레벨
        • 26.5 로그 그룹
        • 26.6 사용자 정의 로그 설정
        • 26.7 로그백 확장
      • 27 국제화 by ks
      • 28. SQL 데이터베이스 작업 by sh
      • 29. NoSQL 기술 사용 by sh
      • 30. 메시징 by sh
      • 31. 이메일 전송 by sh
      • 28. JSON by sh (다시 시작!)
        • 28.1 Jackson
        • 28.2 Gson
        • 28.3 JSON-B
      • 29. 웹 응용 프로그램 개발 by sh
        • 29.1 The “Spring Web MVC Framework”
        • 29.2 The “Spring WebFlux Framework”
        • 29.3 JAX-RS and Jersey
        • 29.4 내장된 서블릿 컨테이너 지원
        • 29.5 내장된 반응형 서버 지원
        • 29.6 반응형 서버 리소스 구성
      • 30. Security by ys
        • 30.1 MVC 보안
        • 30.2 WebFlux 보안
        • 30.3 OAuth2
        • 30.4 Actuator 보안
      • 31. SQL 데이터베이스 작업 by ys
        • 31.1 Configure a DataSource
        • 31.2 JdbcTemplate 사용
        • 31.3 JPA와 스프링 데이터 JPA
        • 31.4 스프링 데이터 JDBC
        • 31.5 H2의 웹 콘솔 사용
        • 31.6 jOOQ 사용하기
      • 32. NoSQL 기술로 작업하기 by ks
      • 33 Caching by ks
      • 34. 메시징
        • 34.1 JMS by sh
        • 34.2 AMQP by sh
        • 34.3 Apache Kafka Support by ys
      • 35.REST 서비스 호출 RestTemplate
        • 35.1 RestTemplate 사용자 정의
      • 36. REST 서비스 호출 WebClient by ys
      • 37. 유효성 확인 by ys
      • 38. 이메일 보내기 by ys
      • 39. JTA를 이용한 분산 트랜잭션 by ys
      • 40.하젤캐스트(Hazelcast) by ys
      • 41. Quartz Scheduler by ys
      • 42. 작업 실행 및 스케줄링 by ys
      • 43. 스프링 통합 by ys
      • 44. Spring 세션 by ys
      • 45. JMX를 통한 모니터링 및 관리 by ys
      • 46. Testing by sh
        • 46.3 Testing Spring Boot Applications
          • 46.1~46.3.10
          • 46.3.11 자동 구성된 Spring WebFlux 테스트
          • 46.3.12 자동 구성된 Data JPA 테스트들
          • 46.3.13 자동 구성된 JDBC 테스트들
          • 46.3.14 자동 구성된 Data JDBC 테스트들
          • 46.3.15 자동 구성된 JOOQ 테스트들
          • 46.3.16 자동 구성된 Data MongoDB 테스트들
          • 46.3.17 자동 구성된 Data Neo4j 테스트
          • 46.3.18 자동 구성된 Data Redis 테스트들
          • 46.3.19 자동 구성된 Data LDAP 테스트들
          • 46.3.20 자동 구성된 REST 클라이언트
          • 46.3.21자동 구성된 Spring REST Docs 테스트
          • 46.3.22 추가적인 자동 구성 및 슬라이스
          • 46.3.23 사용자 구성 및 분할
          • 46.3.24 Spock을 사용하여 스프링 부팅 응용 프로그램 테스트
      • 47. 웹 소켓 by sh
      • 48. 웹 서비스 by sh
        • 48.1WebServiceTemplate로 웹 서비스 호출하기
      • 49. 자신만의 자동 구성 생성
        • 49.1 자동 구성된 빈 이해하기 by sh
        • 49.2 자동 구성 후보 찾기 by sh
        • 49.3 Condition 어노테이션들 by sh
        • 49.4 자동구성 테스팅 by ks
        • 49.5 자신만의 스타터 생성하기 by ks
      • 50. Kotlin support by ys
      • 51. What to Read Next by ys
      • 52. Production-ready 기능 활성화 by ys
      • 53. Endpoints
        • 53.1 엔드 포인트 활성화 by ys
        • 53.2 엔드 포인트 노출 by ys
        • 53.3 HTTP endpoints 보안 by ys
        • 53.4 Endpoints 구성
        • 53.5 액츄에이터 웹 엔드 포인트 용 하이퍼 미디어 by ys
        • 53.6 CORS 지원 by ys
        • 53.7 커스텀 엔드포인트 확장 by ks
        • 53.8 Health 정보 by ks
        • 53.9 어플리케이션 정보 by sh
      • 54. HTTP를 통한 모니터링 및 관리 by sh
        • 54.1 관리 엔드 포인트 경로 사용자 정의
        • 54.2 관리 서버 포트 사용자 정의
        • 54.3 관리 관련 SSL 구성
        • 54.4 관리 서버 주소 사용자 정의
        • 54.5 HTTP 끝점 사용안하기
  • spring 5.0
    • 1. IoC 컨테이너
      • 1.1 스프링 IoC 컨테이너와 빈의 도입 by sh
      • 1.2 컨테이너 by ys
      • 1.3 빈 개요 by ks
      • 1.4 의존성 by ks, ys, sh
        • 1.4.1 의존성 주입 by ks
        • 1.4.2 의존성과 configuration by ks
        • 1.4.3 depends-on 사용 by ys
        • 1.4.4 게으른-초기화된 bean by ys
        • 1.4.5 Autowiring Collaborators by ys
        • 1.4.6 메소드 주입 by sh
      • 1.5. 빈의 범위 by sh
      • 1.6 빈의 특성 커스터마이징하기 by ys
        • 1.6.1 라이프 사이클 콜백
        • 1.6.2 ApplicationContextAware과BeanNameAware
        • 1.6.3 기타 Aware인터페이스
      • 1.7 빈 정의 상속by ys
        • 1.7.1 빈 정의 상속
      • 1.8 컨테이너 확장 포인트 by ks
      • 1.9 어노테이션 기반의 컨테이너 구성 by sh
      • 1.10 클래스패스 스캔 및 관리 by ys
        • 1.10.1 @Component 및 추가 스테레오 타입 어노테이션
        • 1.10.2 meta-annotation 및 composed annotation 사용
        • 1.10.3 자동으로 클래스 검색 및 Bean 정의 등록
        • 1.10.4 스캐닝을 커스터마이징 하기위해 필터를 사용
        • 1.10.5 component 내에 Bean 메타 데이터 정의
        • 1.10.6 이름으로 자동탐지되는 컴포넌트
        • 1.10.7 범위로 자동 감지되는 컴포넌트
        • 1.10.8 annotation과 함께 한정된 메타데이터 제공
        • 1.10.9 후보 component의 index 생성
      • 1.11 JSR 330 표준 어노테이션 사용하기 by sh
      • 1.12 자바 기반의 컨테이너 구성 by sh, ks
        • 1.12.1 기본 개념: @Bean 및 @Configuration by sh
        • 1.12.2 AnnotationConfigApplicationContext를 사용한 스프링 컨테이너 인스턴스화 by sh
        • 1.12.3 @Bean 사용 by ks
        • 1.12.4 @Configuration 어노테이션 by ks
        • 1.12.5 자바 기반 Configuration구성 by ks
      • 1.13 환경 추상화 by ys
        • 1.13.1 빈 정의 프로파일
        • 1.13.2 PropertySource추출
        • 1.13.3 @PropertySource 사용
        • 1.13.4 Placeholder Resolution in Statements
      • 1.14 LoadTimeWeaver 등록 by ks
      • 1.15 ApplicationContext의 부가 수용가능성들 by ks, sh
        • 1.15.1 MesageSource를 사용한 국제화 by ks
        • 1.15.2 표준과 커스텀 이벤트 by ks
        • 1.15.3 로우 레벨 리소스에 대한 편리한 접근 by sh
        • 1.15.4 웹 어플리케이션에 대한 간편한 Application 인스턴스화 by sh
        • 1.15.5 스프링 ApplicationContext를 Java EE RAR 파일로 배포하가ㅣ by sh
        • 1.15.3 Low-level 리소스로 편리한 접근
        • 1.15.4 웹 어플리케이션을 위한 편리한 ApplicationContext 인스턴스화
      • 1.16 BeanFactory by sh
    • 2. Resource by ks
      • 2.1 소개
      • 2.2 Resource interface
      • 2.3 내장 리소스 확장
      • 2.4 ResourceReader
      • 2.5 ResourceLoaderAware 인터페이스
      • 2.6 Resources 의존성
      • 2.7 어플리케이션 컨텍스트와 리소스 경로
    • 3. 유효성 검사, 데이터 바인딩 및 유형 변환 by ys, sh
      • 3.1. Spring의 Validator 인터페이스를 사용하여 유효성 검사 by ys
      • 3.2. 오류 메시지로 코드 해결 by ys
      • 3.3. bean 조작과 BeanWrapper by ys
        • 3.3.1. 기본 및 중첩 된 프로퍼티를 설정 및 가져 오기
        • 3.3.2. 내장 된 PropertyEditor구현
      • 3.4 스프링 타입 변환 by sh
        • 3.4.1 Converter SPI
        • 3.4.2 ConverterFactory 사용하기
        • 3.4.3 GenericConverter 사용하기
        • 3.4.4 ConversionService API
        • 3.4.5 ConversionService 구성
        • 3.4.6 프로그래밍 방식으로 ConversionService 사용하기
      • 3.5 스프링 필드 포맷팅 by sh
        • 3.5.1 Formatter SPI
        • 3.5.2 Annotation 기반의 포맷팅
        • 3.5.3 FormatterRegistry SPI
        • 3.5.4 FormatterRegistrar SPI
        • 3.5.5 스프링 MVC에서 포맷팅 구성하기
      • 3.6 전역 Date and Time 포맷 구성 by sh
      • 3.7 스프링 유효성 검사 by sh
        • 3.7.1 by sh
        • 3.7.2 by sh
        • 3.7.3 by sh
    • 4 스프링 표현식 언어 (SpEL)
      • 4.1 평가 by sh
      • 4.2 빈 정의에 있는 표현식 by sh
      • 4.3 Language Reference
        • 4.3.1 리터럴 표현식 by ys
        • 4.3.2 프로퍼티,배열,목록,지도 및 인덱서 by ys
        • 4.3.3 인라인 목록 by ys
        • 4.3.4 인라인 Maps by ys
        • 4.3.5 배열 구성 by ys
        • 4.3.6 행동 양식 by ys
        • 4.3.7 연산자 by ys
        • 4.3.8 유형 by ys
        • 4.3.9 생성자 by ys
        • 4.3.10 변수 by ks
        • 4.3.11 함수 by ks
        • 4.3.12 빈 참조 by ks
        • 4.3.13 삼항 연산자 (If-Then-Else) by ks
        • 4.3.14 엘비스 연산자 by ks
        • 4.3.15 안전한 네비게이션 연산자 by ks
        • 4.3.16 컬렉션 셀렉션 by ks
        • 4.3.17 컬렉션 프로젝션 by ks
        • 4.3.18 표현 템플릿 by ks
    • 5 spring을 이용한 aspect 지향 프로그래밍
      • 5.1 AOP 개념 by ys
      • 5.2 Spring AOP 기능 및 목표 by ys
      • 5.3 AOP 프록시 by ys
      • 5.4 @AspectJ 지원 by ys,ks
        • 5.4.1 @AspectJ 지원 활성화 by ys
        • 5.4.2 Aspect 선언하기 by ys
        • 5.4.3 Pointcut 선언하기 by ys
        • 5.4.4 Advice 선언 by ks
        • 5.4.5 소개 by ks
        • 5.4.6 Aspect 초기화 모델 by ks
        • 5.4.7 AOP 예제 by ks
      • 5.5 스키마 기반 AOP 지원 by sh
        • 5.5.1 Aspect 선언 by sh
        • 5.5.2 Pointcut 선언 by sh
        • 5.5.3 Advice 선언 by sh
        • 5.5.4 인트로덕션 by sh
        • 5.5.5 Aspect 인스턴스화 모델 by sh
        • 5.5.6 Advisors by sh
        • 5.5.7 AOP 스키마 예제 by sh
    • 6 Spring AOP API
      • 6.1 Spring의 Pointcut API
        • 6.1.1 개념들 by ys
        • 6.1.2 Pointcuts에 대한 작업 by ys
        • 6.1.3 AspectJ Expression Pointcuts by ys
        • 6.1.4 편리한 Pointcut 구현 by ys
        • 6.1.5 포인트 컷 수퍼 클래스 by ys
        • 6.1.6. 사용자 정의 Pointcut by ys
      • 6.2 Spring의 Advice API
        • 6.2.1. 조언 라이프 사이클 by ys
        • 6.2.2 Spring의 advice 유형 by ys
      • 6.3 Spring의 Advisor API by ks
      • 6.4 ProxyFactoryBean을 사용해서 AOP 프록시 생성 by ks
        • 6.4.1 기본
        • 6.4.2 자바빈 프로퍼티
        • 6.4.3 JDK 및 CGLIB 기반 프록시
        • 6.4.4 프록시 인터페이스
        • 6.4 5 프록시 클래스
        • 6.4.6 "Global" advisor 사용
      • 6.5 간결한 프록시 정의 by sh
      • 6.6 ProxyFactory를 사용하여 프로그래밍 방식으로 AOP 프록시 만들기 by sh
      • 6.7 Advised 객체들 조작하기 by sh
      • 6.8 "자동 프록시" 기능 사용 by sh
      • 6.9 TargetSource구현체 사용하기 by sh
      • 6.10 새로운 Advice 타입 정의하기 by sh
    • 7. 데이터 버퍼와 코덱 by ks
Powered by GitBook
On this page
  • 39.1 Atomikos 트랜잭션 관리자 사용
  • 39.2 Bitronix 트랜잭션 관리자 사용
  • 39.3 Java EE Managed Transaction Manager 사용
  • 39.4 XA 및 비 XA JMS 연결 섞기
  • 39.5 대체 내장 트랜잭션 관리자 지원

Was this helpful?

  1. Spring boot
  2. 스프링부트의 기능

39. JTA를 이용한 분산 트랜잭션 by ys

Previous38. 이메일 보내기 by ysNext40.하젤캐스트(Hazelcast) by ys

Last updated 5 years ago

Was this helpful?

JTA(Java Transaction APIs): 단일 데이터베이스나 데이터베이스 여러개를 이용할 경우 트랜잭션을 제어하기 위한 목적으로 사용한다.

Atomikos : JTA와 XA 를 제공하는 JTA 라이브러리 사이트

What is JTA

JTA(Java Transaction API)은 플랫폼마다 상이한 트랜잭션 매니저들과 어플리케이션들이 상호작용할 수 있는 인터페이스를 정의하고 있다. Java에서 제공되는 대부분의 API와 마찬가지로, JTA는 실제 구현은 다르지만 어플리케이션이 공통적으로 사용할 수 있는 하나의 인터페이스를 제공한다. 이 말은 트랜잭션 처리가 필요한 어플리케이션이 (API의 사용 방식 그대로만 사용한다면) 특정 벤더의 트랜잭션 매니저에 의존할 필요가 없음을 의미한다. Atomikos와 같이 JTA 구현체들을 오픈소스로 제공하는 벤더들도 있고, IBM 같이 JTA 구현체를 어플리케이션 서버의 한 부분으로 제공하는 벤더들도 있다.

JTA의 구현체를 사용할 때에는 주의를 기울여야 한다: 자세히 들여다 보면 뭔가 잘 못 되어 있는 것처럼 보이기 때문이다. 믿기 어렵겠지만, ‘J2EE 호환됨’이라고 검증을 받은 어플리케이션 서버들도 트랜잭션 관리를 제대로 지원하지 않거나 가상적으로만 지원할 수도 있다.

What is XA

XA(eXtended Architecture)는 동일한 전역 트랜잭션(Global Transaction) 내에서 몇 개의 백엔드 데이터 저장소에 접근하기 위한 X/Open 그룹 표준의 하나이다. XA 표준 규격은 하나의 트랜잭션 매니저가 어떤 트랜잭션의 한 부분으로 어떤 작업이 수행되고 있는지를 데이터베이스에 통보하는 방식과, 각 트랜잭션이 완료될 때 2단계 커밋(2 Phase Commit)을 수행되는 방식을 관장한다. 또 데이터 저장소에서 지연되고 있는 트랜잭션을 회복시키는 방법도 포함하고 있다.

XA의 장점

XA 역시 하나의 표준이기 때문에, 모든 호환되는 데이터 저장소(혹은 드라이버)들이 전역 (분산) 트랜잭션의 부분으로서의 트랜잭션 매니저와 연동할 수 있다. 다른 말로, 2단계 커밋이 고려되어야 하는 상황이라면 XA는 트랜잭션 매니저와 데이터 저장소를 연결해 주는 역할 담당한다는 말이다. 이것이 Atomikos와 같은 솔루션들이 Oracle이나 Sybase와 같은 데이터베이스와 연동하여 커밋과 롤백 등의 모든 작업을 수행할 수 있는 이유이다. 출처: [Layered's]

(나는 안써봐서 이해가 안돼....)

Spring Boot는 또는 임베디드 트랜잭션 관리자 를 사용하여 여러 XA 리소스에 분산 된 JTA 트랜잭션을 지원합니다 . JTA 트랜잭션은 적합한 Java EE 응용 프로그램 서버에 배포 할 때도 지원됩니다.

JTA 환경이 감지되면 Spring JtaTransactionManager은 트랜잭션을 관리하는 데 사용됩니다. 자동 구성된 JMS, DataSource 및 JPA bean은 XA 트랜잭션을 지원하도록 업그레이드됩니다. 같은 표준 Spring 관용구(@Transactional와 같은)를 사용하여 분산 트랜잭션에 참여할 수있다. JTA 환경에 있지만 여전히 로컬 트랜잭션을 사용하려는 경우 JTA 자동 구성을 사용하지 않도록 spring.jta.enabled속성을 false로 설정할 수 있습니다.

39.1 Atomikos 트랜잭션 관리자 사용

는 Spring Boot 애플리케이션에 내장 될 수있는 인기있는 오픈 소스 트랜잭션 관리자입니다. spring-boot-starter-jta-atomikosStarter를 사용하여 적절한 Atomikos 라이브러리를 가져올 수 있습니다 . Spring Boot는 Atomikos를 자동으로 설정하고 올바른 스타트 업 및 시스템 종료 순서를 위해 적절한 의존설정 depends-on 이 Spring 빈에 적용되도록 합니다.

기본적으로 Atomikos 트랜잭션 로그는 응용 프로그램의 홈 디렉토리 (응용 프로그램 jar 파일이 상주 하는 디렉토리) 의 transaction-logs디렉토리에 기록됩니다 . application.properties 파일에spring.jta.log-dir프로퍼티를 설정하여 이 디렉토리의 위치를 ​​사용자 정의 할 수 있습니다. spring.jta.atomikos.properties에서 시작하는 속성은 Atomikos UserTransactionServiceImp를 사용자 정의하는 데 사용할 수도 있습니다.

여러 트랜잭션 관리자가 동일한 자원 관리자를 안전하게 조정할 수 있도록하려면 각 Atomikos 인스턴스를 고유 한 ID로 구성해야합니다. 기본적으로 이 ID는 Atomikos가 실행중인 시스템의 IP 주소입니다. 프로덕션의 고유성을 보장하려면 응용 프로그램의 각 인스턴스에 대해 다른 값으로 spring.jta.transaction-manager-id특성을 구성해야합니다 .

39.2 Bitronix 트랜잭션 관리자 사용

여러 트랜잭션 관리자가 동일한 리소스 관리자를 안전하게 조정할 수 있도록 각 Bitronix 인스턴스는 고유 한 ID로 구성되어야합니다. 기본적으로이 ID는 Bitronix가 실행중인 시스템의 IP 주소입니다. 프로덕션의 고유성을 보장하려면 응용 프로그램의 각 인스턴스에 대해 다른 값으로 spring.jta.transaction-manager-id 특성을 구성해야합니다

39.3 Java EE Managed Transaction Manager 사용

XA방식의 트랜잭션이란 여러개의 데이터베이스, JMS, 또는 그 외의 리소스들간의 트랜잭션을 보장하는것을 말하고 NonXA방식이란 일반적인 한개의 데이터베이스에서 관리되는 트랜잭션을 말한다.

39.4 XA 및 비 XA JMS 연결 섞기

JTA를 사용할 때 기본 JMS ConnectionFactoryBean은 XA를 인식하고 분산 트랜잭션에 참여합니다. 경우에 따라 ConnectionFactory 비 XA를 사용하여 특정 JMS 메시지를 처리하고자 할 수 있습니다. 예를 들어 JMS 처리 논리가 XA 시간 초과보다 오래 걸릴 수 있습니다.

ConnectionFactory 비 XA를 사용하려면 @PrimaryjmsConnectionFactory bean이 아닌nonXaJmsConnectionFactory bean을 주입 할 수 있습니다. 일관성을 위해 jmsConnectionFactoryBean은 xaJmsConnectionFactory Bean 별명을 사용하여 제공됩니다.

다음 예제에서는 ConnectionFactory인스턴스 를 삽입하는 방법을 보여줍니다 .

// Inject the primary (XA aware) ConnectionFactory
@Autowired
private ConnectionFactory defaultConnectionFactory;

// Inject the XA aware ConnectionFactory (uses the alias and injects the same as above)
@Autowired
@Qualifier("xaJmsConnectionFactory")
private ConnectionFactory xaConnectionFactory;

// Inject the non-XA aware ConnectionFactory
@Autowired
@Qualifier("nonXaJmsConnectionFactory")
private ConnectionFactory nonXaConnectionFactory;

39.5 대체 내장 트랜잭션 관리자 지원

자세한 것은, 를 참조 .

는 인기있는 오픈 소스 JTA 트랜잭션 관리자 구현이다. spring-boot-starter-jta-bitronix스타터를 사용 하여 프로젝트에 적절한 Bitronix 종속성을 추가 할 수 있습니다 . Atomikos와 마찬가지로 Spring Boot는 Bitronix를 자동으로 구성하고 Bean을 사후 처리하여 시작 및 종료 순서가 올바른지 확인합니다.

기본적으로 Bitronix 트랜잭션 로그 파일 ( part1.btm및 part2.btm)은 응용 프로그램 홈 디렉터리의 transaction-logs 디렉터리에 기록됩니다 . spring.jta.log-dir속성 을 설정하여 이 디렉토리의 위치를 ​​사용자 정의 할 수 있습니다 . spring.jta.bitronix.properties와 함께 시작하는 속성은 또한 bitronix.tm.Configuration빈에 바인딩되어 완전한 사용자 정의가 가능합니다. 자세한 내용은 를 참조하십시오.

Spring 부트 애플리케이션을 war또는 ear파일 로 패키징 하고 이를 Java EE 애플리케이션 서버에 배치하는 경우, 애플리케이션 서버의 내장 트랜잭션 관리자를 사용할 수 있습니다. Spring Boot는 일반적인 JNDI 위치 ( java:comp/UserTransaction,java:comp/TransactionManager등) 를 조사하여 트랜잭션 관리자를 자동 구성하려고 시도합니다 . 응용 프로그램 서버에서 제공하는 트랜잭션 서비스를 사용하는 경우 일반적으로 모든 자원이 서버에 의해 관리되고 JNDI를 통해 노출되도록해야합니다. 스프링 부트는 ConnectionFactoryJNDI 경로 ( java:/JmsXA또는 java:/XAConnectionFactory) 에서 JMS를 자동으로 구성하려고 시도하며 , 이 를 사용하여 너의DataSource구성을 구성 할 수 있습니다.

및 인터페이스는 다른 내장 된 트랜잭션 관리자를 지원하는 데 사용할 수 있습니다. 인터페이스는 래핑 XAConnectionFactory및 XADataSource빈을 처리하고 이를 일반 ConnectionFactory및 DataSource빈으로 표시합니다.이 빈은 분산 트랜잭션에 투명하게 등록됩니다. DataSource 및 JMS 자동 구성에서는 JtaTransactionManagerbean과 ApplicationContext 내에 등록된 적절한 XA 래퍼 bean을 가지고있으면 공급된 JTA 변형을 사용합니다 .

및 XA 래퍼를 작성하는 방법의 좋은 예를 제공합니다.

https://layered.tistory.com/entry/번역-JTA와-XA
Atomikos
Bitronix
Atomikos
AtomikosPropertiesJavadoc
해주세요
Bitronix
Bitronix 설명서
spring.datasource.jndi-name등록 정보
XAConnectionFactoryWrapper
XADataSourceWrapper
BitronixXAConnectionFactoryWrapper
BitronixXADataSourceWrapper는
[노트]
[노트]