9.3. 선언적 트랜잭션의 분리


블루프린트 XML을 사용할 때 블루프린트 XML 파일에 트랜잭션 정책을 선언하여 트랜잭션을 위임할 수도 있습니다. Required 정책과 같이 빈 또는 8080 메서드에 적절한 트랜잭션 정책을 적용하면 특정 Quarkus 또는 Cryostat 메서드가 호출될 때마다 트랜잭션이 시작되도록 할 수 있습니다. Quarkus 메서드 종료 시 트랜잭션이 커밋됩니다. 이 접근 방식은 Enterprise Java Cryostat에서 트랜잭션이 적용되는 방식과 유사합니다.

OSGi 선언적 트랜잭션을 사용하면 블루프린트 파일의 다음 범위에서 트랜잭션 정책을 정의할 수 있습니다.

9.3.3절. “tx에 대한 설명: Cryostat 속성” 도 참조하십시오.

9.3.1. Cryostat 수준 선언

8080 수준에서 트랜잭션 정책을 선언하려면 다음과 같이 tx: Cryostat 요소를^2 요소의 자식으로 삽입합니다.

<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
        xmlns:tx="http://aries.apache.org/xmlns/transactions/v1.1.0">

    <bean id="accountFoo" class="org.jboss.fuse.example.Account">
        <tx:transaction method="*" value="Required" />
        <property name="accountName" value="Foo" />
    </bean>

    <bean id="accountBar" class="org.jboss.fuse.example.Account">
        <tx:transaction method="*" value="Required" />
        <property name="accountName" value="Bar" />
    </bean>

</blueprint>

이전 예에서 필수 트랜잭션 정책은 accountFoo 콩 및 accountBar 8080의 모든 메서드에 적용됩니다. 여기서 메서드 속성은 모든 Cryostat 메서드를 일치시키기 위해 와일드카드 * 를 지정합니다.

9.3.2. 최상위 수준 선언

최상위 수준에서 트랜잭션 정책을 선언하려면 다음과 같이 tx: Cryostat 요소를 블루프린트 요소의 자식으로 삽입합니다.

<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
        xmlns:tx="http://aries.apache.org/xmlns/transactions/v1.1.0">

    <tx:transaction bean="account*" value="Required" />

    <bean id="accountFoo" class="org.jboss.fuse.example.Account">
        <property name="accountName" value="Foo" />
    </bean>

    <bean id="accountBar" class="org.jboss.fuse.example.Account">
        <property name="accountName" value="Bar" />
    </bean>

</blueprint>

이전 예에서 Required 트랜잭션 정책은 ID 가 패턴인 account* 와 일치하는 모든 빈의 모든 메서드에 적용됩니다.

9.3.3. tx에 대한 설명: Cryostat 속성

tx: Cryostat 요소는 다음 특성을 지원합니다.

Cryostat

(상위 수준만 해당) 트랜잭션 정책이 적용되는 빈 ID(콤마 또는 공백으로 구분된) 목록을 지정합니다. 예를 들면 다음과 같습니다.

<blueprint ...>
    <tx:transaction bean="accountFoo,accountBar" value="..." />
</blueprint>

와일드카드 문자 * 를 사용할 수도 있습니다. 이 문자는 각 목록 항목에서 최대 한 번 표시될 수 있습니다. 예를 들면 다음과 같습니다.

<blueprint ...>
    <tx:transaction bean="account*,jms*" value="..." />
</blueprint>

8080 속성을 생략하면 기본값은 * 입니다( 블루프린트 파일의 모든 비-synthetic 빈과 일치).

method

(최상 및 빈 수준) 트랜잭션 정책이 적용되는 메서드 이름(콤마 또는 공백으로 구분된) 목록을 지정합니다. 예를 들면 다음과 같습니다.

<bean id="accountFoo" class="org.jboss.fuse.example.Account">
    <tx:transaction method="debit,credit,transfer" value="Required" />
    <property name="accountName" value="Foo" />
</bean>

와일드카드 문자 * 를 사용할 수도 있습니다. 이 문자는 각 목록 항목에서 최대 한 번 표시될 수 있습니다.

메서드 속성을 생략하면 기본값은 * (해당 빈의 모든 메서드와 일치)입니다.

value

(상위 수준 및 8080 수준) 트랜잭션 정책을 지정합니다. 정책 값은 다음과 같이 EventListener 3.0 사양에 정의된 정책과 동일한 의미가 있습니다.

  • 필수 - 현재 트랜잭션을 지원하고, 존재하지 않는 경우 새 트랜잭션을 만듭니다.
  • mandatory - 현재 트랜잭션을 지원합니다. 현재 트랜잭션이 없는 경우 예외가 발생합니다.
  • RequiresNew - 새 트랜잭션을 생성하여 현재 트랜잭션이 있는 경우 일시 중지합니다.
  • 지원 - 현재 트랜잭션을 지원하며, 존재하지 않는 경우 비- applications를 실행합니다.
  • NotSupported - 현재 트랜잭션을 지원하지 않습니다. 대신 항상 비 applications를 실행합니다.
  • never - 현재 트랜잭션이 있는 경우 예외를 throw합니다.
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.