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합니다.
-