studybook
  • Introduction
  • 실무 하며 깨닫는 부분 정리
    • 옵션에 대해서
    • 코드 작성의 순서
    • 자바 프로그램에 문제가 생겼다면
    • 장애 대처법
  • Logstash, Beats 정리
  • Zookeeper 정리
  • Message Queue 정리
    • RabbitMQ 삽질
  • Java 관련 정리
    • Java Primitive Wrapper class
    • Java NIO
    • Java8 Double colon operator
    • Effective Java
      • 4장
      • 5장
      • 6장 - Enum, Annotation
      • 7장 - Method
      • 8장 - 프로그래밍 일반
      • 9장 - Exception
    • Java8 Lambda expression
    • JDBC
    • Linux에서 WatchService 이상동작
  • Spring 관련 정리
    • Spring Bean init, destroy 순서
    • Spring Async Controller
    • Spring Executable jar 웹 개발 및 배포
    • Spring Boot Font 배포 에러
    • Spring AOP
      • Spring AOP로 모든 Request 로그 남기기
    • Spring Cache
    • Spring Cloud
      • Consul로 spring 설정 관리하기
    • Spring Test
      • Spring Test DirtiesContext
      • Spring Test MockBean, SpyBean
      • Spring Test Dynamic @Scheduled
    • Spring JDBC
    • Spring Validation
    • Spring Transaction Management
      • Spring with JTA 삽질
    • Spring에서 효율적으로 Static resource 관리하기
    • Zuul을 사용해서 Spring Reverse proxy 만들기
    • Spring Security
    • 스프링 어노테이션이 안 먹힐 때 의심해볼만한 것
    • Spring Data
    • Spring Webflux
      • Tobi 강연
  • 코드 리팩토링
    • 한번에 하나씩
  • 지속적 통합 (CI)
    • Jenkins pipeline 삽질기
  • Log Aggregator 정리
    • Flume 테스트
    • Fluentd 테스트
  • Web Socket 정리
  • Akka
    • Actor 모델
    • Supervision
  • IE 8 대응 정리
  • 함수형 프로그래밍
    • 모나드
  • Netty
    • Netty 기본 예제
    • Netty 주요 특징
    • Netty 부트스트랩
    • Netty 채널 파이프라인, 코덱
    • Netty 이벤트 모델
    • Netty 바이트 버퍼
  • 스칼라 관련 정리
    • Maven으로 컴파일하기
    • Scala def 괄호 여부의 차이
    • 스칼라 function, method 차이점
    • ScalaTest와 Spring 연동하기
    • Programming in Scala
  • J2S 컨퍼런스
  • Android
    • 테스트
    • NDK
  • DDOS
  • HTTP
  • HttpClient
  • Container
    • Image 개요
    • cri-o
    • kata containers
    • Open Container Initiative Image
    • Buildkit
  • Github pages
  • Static Website
  • Webhook
  • Service Discovery Tools
    • Etcd
    • Eureka
    • Consul
      • ACL
    • 비교
  • React
    • JSX
    • React Element
    • Components, Props
    • State, Lifecycle
    • Handling Event
    • Flux
  • Vagrant
    • SSH 접속
  • Linux
    • Systemd
    • Alternatives
  • Messaging protocols
    • XMPP
    • AMQP
  • Windows
    • Windows10 내장 우분투에 ssh 클라이언트로 접속하기
    • Windows10 Hyper-V와 Virtual Box가 충돌을 일으켰을 때
    • Hyper-V 기반 docker에서 Shared Drives 설정 실패할 때
    • 윈도우 개발환경 설정
    • Docker desktop 없이 docker 환경 세팅하기
    • UWP 앱을 항상 관리자권한으로 실행하는 바로가기 만들기
  • Spring camp 2017
    • Project Reactive
    • 이벤트 소싱
    • CQRS
  • Spring webflux
  • 리액티브 프로그래밍
  • Linux Settings
    • 홈서버 백업 및 복구기
    • 홈서버 트러블슈팅
  • Kubernetes
    • k3s 설치 및 삽질
    • pod resources
    • Argo workflow
    • 트러블 슈팅
      • Kubernetes namespace의 phase가 Terminating에서 멈춰있을 때
    • 쿠버네티스 마스터
    • Knative
    • Knative Pipeline
    • Aggrerated API server
    • Accessing the API
      • Authenticating
  • Sonarqube
  • HTTP/2
  • Go
    • Go Module
    • Go dependency injection
    • Go Error handling
    • Go in Action
      • 3장 패키지
      • 4장 배열, 슬라이스, 맵
      • 5장 GO의 타입 시스템
      • 6장 동시성
      • 7장 동시성 패턴
      • 8장 표준 라이브러리
      • 9장 테스트와 벤치마킹
    • Go Channel 사용법
  • Cloud Native
Powered by GitBook
On this page
  • JTA?
  • XA?
  1. Spring 관련 정리
  2. Spring Transaction Management

Spring with JTA 삽질

JTA?

Java Transaction API의 약자. 각 플랫폼별 트랜잭션 매니저의 인터페이스를 정의한 것. 당연히 여러 구현체들을 가지고 있다. 일반적으로는 웹서버에 딸려있는걸 쓰거나 별도로 서버를 구축해서 쓰는데, 내 경우에는 그정도 규모까진 아직 필요가 없어서 embedded JTA로 찾아보게 되었다. 그에 따라 선택한 것이 atomikos 이다. 우선 오픈소스이고, 개발 기간도 비교적 오래되었으며, 스프링 문서에서도 언급되고 있는 부분이 마음에 들었다.

XA?

eXtended Architecture의 약자. 하나의 같은 global 트랜잭션에서 다른 여러 데이터 저장소들에 접근하기 위한 표준이다. XA는 트랜잭션 매니저의 여러가지 기능을 제어한다. 하나는 우선 트랜잭션의 일부로 어떤 작업이 진행되고 있는지 데이터베이스에게 알리는 기능이고, 다른 것은 각 트랜잭션이 종료될 때 2PC (2-phase commit) 프로토콜을 수행하는 기능이다. 또한 데이터 저장소에서 보류 중인 트랜잭션을 복구하는 기능도 제공한다.

XA는 여러 데이터 저장소에서 호환되는 표준이므로 여러 트랜잭션 매니저들이 global 트랜잭션의 일부로써 동작할 수 있게 해준다. 다르게 말해보면 XA는 서로 다른 트랜잭션 매니저들 사이에서 일종의 풀처럼 동작하는데, 이 풀은 2PC 프로토콜을 사용해서 서로서로를 붙이게 된다.

--> 여기까지 봤는데 JTA는 너무 비싸고 복잡하다는 의견을 발견. 대신에 서로 다른 트랜잭션들을 하나로 묶는 과정에서 Compensating transaction을 사용해보라는듯. 일단 Compensating transaction를 먼저 조사

PreviousSpring Transaction ManagementNextSpring에서 효율적으로 Static resource 관리하기

Last updated 7 years ago