2016-07-19 8 views
0

distributed transactionsJava EE으로 이해하려고합니다. 일부 온라인 자료와 책을 읽은 후에 Java EE에는 분산 트랜잭션을 처리하기위한 Java EE의 기술 스택 중 하나 인 JTA이라는 특정 API가 있습니다. JTA 외에도 다음과 같은 다른 개념이 있습니다. 2PC (two-phase commit) strategy, XA, the eXtended Architecture. 전용 데이터베이스를 고려데이터베이스 드라이버가 분산 트랜잭션을 지원해야하거나 데이터베이스 자체가 지원해야합니까?

, 내가 분산 트랜잭션에 관해서 다음과 같은 질문 한 : 분산 트랜잭션에 대한 실제 지원는 데이터베이스 드라이버 자체에서

Q1)를 제공합니까?

Q2) 데이터베이스 (실제 데이터베이스)는 분산 트랜잭션을 인식합니까? 아니면 다른 구성 요소가주의를 기울이고 있습니까?

누구든지 나를 도와 주실 수 있습니까?

답변

1

요약하면 트랜잭션 기능이 실제로있는 데이터베이스입니다. 커밋 후 데이터가 일관되고 디스크에 올바르게 저장되도록 신경 써야하는 데이터베이스입니다.

동시에 드라이버는 트랜잭션 관리를 도와 줄 수 있습니다. 예를 들어, 첫 번째 요청시 열리거나 자동으로 커밋합니다.

편집 : 죄송합니다. 가장 중요한 질문은 분산 트랜잭션입니다. 분산 트랜잭션은 드라이버 및 트랜잭션 관리자에 의해 처리됩니다. 이 거래에는 데이터베이스의 관점에서 특별한 것이 하나도 없습니다.

+0

답장을 보내 주셔서 감사합니다. 누가 JTA 사양을 구현합니까? 애플리케이션 서버가 JTA 사양을 구현합니까? 그리고 트랜잭션 관리자는 응용 프로그램 서버의 일부입니까? 추가 포인터가 도움이 될 것입니다. 참고로 많은 문서를 읽었지만 그 개념을 설명하기 위해 샘플 애플리케이션을 제공 한 사람이 아무도 없었기 때문에 아직 혼란스러워하고 있습니다. – CuriousMind

+1

JTA는 EE 사양의 일부이며 따라서 EE라고 주장하는 모든 컨테이너 컨테이너가이를 구현해야합니다. 다시 말해, EE 사양은 다음과 같이 말합니다. 자신을 엔터프라이즈 컨테이너라고 부르는 경우 이러한 기능을 구현하십시오. –

+1

예를 들어 Weblogic은 EE 컨테이너입니다. JTA를 구현합니다 (다른 EE 기능 : 서블릿, JMS 등) –

0

JTA (Java EE 사양)는 응용 프로그램 서버 (예 : WildFly), 응용 프로그램 (코드) 및 리소스 (예 : 데이터베이스)와의 트랜잭션 관리자 통신을위한 인터페이스 (http://docs.oracle.com/javaee/7/api/javax/transaction/package-summary.html)를 정의합니다. 트랜잭션 관리자는 사양을 구현하며 XA 트랜잭션을 관리하는 것이 목적입니다. 트랜잭션 관리자는 Java EE 응용 프로그램 서버의 일부입니다.

는 질문

A1) 분산/XA 트랜잭션이 응용 프로그램 서버의 일부로 트랜잭션 관리자에 의해 관리되는 대답합니다. 데이터베이스가있는 응용 프로그램 서버와의 모든 상호 작용은 응용 프로그램 서버에 기반한 jdbc 드라이버를 통해 수행됩니다. XA 트랜잭션의 전체 참여자가되는 데이터베이스의 경우 데이터베이스 및 드라이버에는 해당 기능이 있어야합니다.

Jdbc 스펙은 jdbc가 트랜잭션 관리 프로그램이이를 관리 할 수 ​​있도록 제공해야하는 인터페이스를 정의합니다. 예를 들어, PostgreSQL jdbc 드라이버 패키지 xa (https://github.com/pgjdbc/pgjdbc/tree/master/pgjdbc/src/main/java/org/postgresql/xa)를 보거나 jdbc 스펙 자체를 확인하십시오.

데이터베이스는 jdbc 드라이버 xa 호출에 올바르게 응답하는 기능을 제공해야하며 특별히 2PC를 구현해야합니다. 트랜잭션 관리자 명령이 일 때 데이터베이스를 준비 할 때 트랜잭션 관리자가 을 호출 한 후을 호출 한 후 완료 할 수 있도록 이러한 데이터와 함께 작동하는 준비된 트랜잭션이 있다는 것을 기억해야합니다.

A2) 여러 리소스 (일부 데이터베이스, jms 브로커)에서 XA 트랜잭션을 트랜잭션 합성으로 이해하면 데이터베이스 자체에는 다른 참가자 인 개념이 없습니다 (XA 트랜잭션의 크기) .데이터베이스는 XA 트랜잭션 만 있고, 나는 참여자라는 것을 알고있다.

모든 XA 트랜잭션 관리는 트랜잭션 관리자의 책임입니다. 데이터베이스는 트랜잭션 관리자에 의해 구동되는 2PC를 실행합니다. 데이터베이스는 이러한 2 단계 커밋의 일부인 데이터만을 처리하고 XA 사양에 따라 트랜잭션 관리자에서 오는 호출에 응답합니다.