14.4. JMS 트랜잭션 구성


14.4.1. 개요

CXF 3.0은 단방향 메시징을 사용할 때 CXF 끝점에서 로컬 JMS 트랜잭션과 JTA 트랜잭션을 모두 지원합니다.

14.4.2. 로컬 트랜잭션

로컬 리소스를 사용하는 트랜잭션은 예외가 발생하는 경우에만 JMS 메시지를 롤백합니다. 데이터베이스 트랜잭션과 같은 다른 리소스를 직접 조정하지 않습니다.

로컬 트랜잭션을 설정하려면 일반적으로 끝점을 구성하고 속성 sessionTrasnsactedtrue 로 설정합니다.

참고

트랜잭션 및 풀링에 대한 자세한 내용은 Red Hat JBoss Fuse 트랜잭션 가이드를 참조하십시오.

14.4.3. JTA 트랜잭션

JTA 트랜잭션을 사용하면 모든 XA 리소스를 조정할 수 있습니다. CXF 끝점이 JTA 트랜잭션용으로 구성된 경우 서비스 구현을 호출하기 전에 트랜잭션을 시작합니다. 예외가 발생하지 않으면 트랜잭션이 커밋됩니다. 그렇지 않으면 롤백됩니다.

JTA 트랜잭션에서는 JMS 메시지가 사용되고 데이터베이스에 기록된 데이터를 사용합니다. 예외가 발생하면 두 리소스가 모두 롤백되므로 메시지가 소비되고 데이터가 데이터베이스에 기록되거나 메시지가 롤백되고 데이터가 데이터베이스에 기록되지 않습니다.

JTA 트랜잭션을 구성하려면 다음 두 단계가 필요합니다.

  1. 트랜잭션 관리자 정의

    • 빈 메서드

      • 트랜잭션 관리자 정의

        <bean id="transactionManager"
           class="org.apache.geronimo.transaction.manager.GeronimoTransactionManager"/>
      • JMS URI에서 트랜잭션 관리자의 이름을 설정합니다.

        jms:queue:myqueue?jndiTransactionManager=TransactionManager

        이 예에서는 ID TransactionManager 가 있는 빈을 찾습니다.

    • OSGi 참조 방법

      • Blueprint를 사용하여 OSGi 서비스로 트랜잭션 관리자를 조회합니다.

        <reference id="TransactionManager" interface="javax.transaction.TransactionManager"/>
      • JMS URI에서 트랜잭션 관리자의 이름을 설정합니다.

        jms:jndi:myqueue?jndiTransactionManager=java:comp/env/TransactionManager

        이 예에서는 JNDI에서 트랜잭션 관리자를 조회합니다.

  2. JCA 풀링 연결 팩토리 구성

    Spring을 사용하여 JCA 풀링 연결 팩토리를 정의합니다.

    <bean id="xacf" class="org.apache.activemq.ActiveMQXAConnectionFactory">
      <property name="brokerURL" value="tcp://localhost:61616" />
    </bean>
    
    <bean id="ConnectionFactory" class="org.apache.activemq.jms.pool.JcaPooledConnectionFactory">
      <property name="transactionManager" ref="transactionManager" />
      <property name="connectionFactory" ref="xacf" />
    </bean>

    이 예에서 첫 번째 빈은 JcaPooledConnectionFactory 에 제공되는 ActiveMQ XA 연결 팩토리를 정의합니다. 그런 다음 JcaPooledConnectionFactory 가 id ConnectionFactory 와 기본 빈으로 제공됩니다.

    JcaPooledConnectionFactory 는 일반 ConnectionFactory처럼 보입니다. 그러나 새 연결 및 세션이 열리면 XA 트랜잭션을 확인하고 있는 경우 JMS 세션을 XA 리소스로 자동으로 등록합니다. 이를 통해 JMS 세션이 JMS 트랜잭션에 참여할 수 있습니다.

    중요

    JMS 전송에서 XA ConnectionFactory를 직접 설정하는 것은 작동하지 않습니다!

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.