5.4. XA 등록 문제 해결


XA 리소스를 등록하기 위한 표준 JTA 접근 방식은 현재 트랜잭션을 나타내는 현재 javax. Cryostat.Transaction 오브젝트에 XA 리소스를 명시적으로 추가하는 것입니다. 즉, 새 트랜잭션이 시작될 때마다 XA 리소스를 명시적으로 추가해야 합니다.

5.4.1. XA 리소스에 가입하는 방법

트랜잭션을 사용하여 XA 리소스를 등록하려면 트랜잭션 인터페이스에서 enlistResource() 메서드를 호출해야 합니다. 예를 들어 TransactionManager 개체와 XAResource 개체가 지정되면 다음과 같이 XAResource 개체를 등록할 수 있습니다.For example, given a TransactionManager object and an XAResource object, you could enlist the XAResource object as follows:

// Java
import javax.transaction.Transaction;
import javax.transaction.TransactionManager;
import javax.transaction.xa.XAResource;
...
// Given:
// 'tm' of type TransactionManager
// 'xaResource' of type XAResource

// Start the transaction
tm.begin();

Transaction transaction = tm.getTransaction();
transaction.enlistResource(xaResource);

// Do some work...
...

// End the transaction
tm.commit();

리소스 등록의 까다로운 측면은 새 트랜잭션에 리소스를 등록해야 하며 리소스를 사용하기 전에 리소스를 등록해야 한다는 것입니다. 리소스를 명시적으로 추가하는 경우 enlistResource() 호출을 사용하여 리터링된 오류-prone 코드로 끝날 수 있습니다. 또한 적절한 위치에서 enlistResource() 를 호출하기 어려울 수 있습니다. 예를 들어 일부 트랜잭션 세부 정보를 숨기는 프레임워크를 사용하는 경우입니다.

5.4.2. 자동 목록 정보

XA 리소스를 명시적으로 등록하지 않고 XA 리소스의 자동 목록을 지원하는 기능을 사용하는 것이 더 쉽고 안전합니다. 예를 들어 JMS 및 JDBC 리소스 사용 컨텍스트에서 표준 기술은 자동 목록을 지원하는 래퍼 클래스를 사용하는 것입니다.

JDBC 및 JMS 액세스 모두에 대한 일반적인 패턴은 다음과 같습니다.

  1. 애플리케이션 코드는 JDBC 액세스에는 javax.sql.DataSource 와 JMS의 경우 javax.jms.ConnectionFactory 가 JDBC 또는 JMS 연결을 가져와야 합니다.
  2. 애플리케이션/OSGi 서버 내에서 이러한 인터페이스의 데이터베이스 또는 브로커 특정 구현이 등록됩니다.
  3. 애플리케이션/OSGi 서버는 데이터베이스/broker별 팩토리를 일반, 풀링, 인 목록에 포함된 팩토리로 래핑 합니다.

이러한 방식으로 애플리케이션 코드는 여전히 javax.sql.DataSourcejavax.jms.ConnectionFactory 를 사용하지만 내부적으로 액세스하면 일반적으로 다음과 같은 추가 기능이 있습니다.

  • 연결 풀링 - 매번 데이터베이스/메시지 브로커에 대한 새 연결을 생성하는 대신 사전 초기화된 연결 풀이 사용됩니다. 풀링 의 또 다른 측면은 예를 들어 연결의 주기적인 검증일 수 있습니다.
  • JTA 등록 - java.sql.Connection (JDBC) 또는 javax.jms.Connection (JMS)의 인스턴스를 반환하기 전에 실제 연결 개체가 실제 XA 리소스인 경우 등록됩니다. JTA 트랜잭션에서 등록이 가능한 경우 등록이 수행됩니다.

자동 목록을 사용하면 애플리케이션 코드를 변경할 필요가 없습니다.

JDBC 데이터 소스 및 JMS 연결 팩토리에 대한 래퍼 풀링 및 등록에 대한 자세한 내용은 6장. JDBC 데이터 소스 사용7장. JMS 연결 팩토리 사용 를 참조하십시오.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.