5.2.3. ClientTransaction 주석

@org.jboss.ejb.client.annotation.ClientTransaction 주석은 자카르타 엔터프라이즈 빈 클라이언트의 트랜잭션 전파를 처리합니다. 클라이언트에 트랜잭션이 없는 경우 전파가 실패하도록 지시하거나 클라이언트가 하나의 활성 상태인 경우에도 트랜잭션 전파를 방지할 수 있습니다. org.jboss.ejb.client.annotation.ClientTransactionPolicy 인터페이스의 상수를 사용하여 ClientTransaction 주석의 정책을 제어할 수 있습니다. 다음은 org.jboss.ejb.client.annotation.ClientTransactionPolicy 인터페이스의 상수입니다.

  • 필수 항목: 클라이언트측 트랜잭션 컨텍스트가 없는 경우 예외적으로 실패합니다. 클라이언트 측 트랜잭션 컨텍스트가 존재하면 전파됩니다.
  • NEVER: 트랜잭션 컨텍스트를 전파하지 않고 호출합니다. 클라이언트 측 트랜잭션 컨텍스트가 있는 경우 예외가 발생합니다.
  • NOT_SUPPORTED: 클라이언트 측 트랜잭션 컨텍스트가 있는지 여부에 관계없이 트랜잭션 컨텍스트를 전파하지 않고 를 호출합니다.
  • 지원: 클라이언트측 트랜잭션 컨텍스트가 없는 경우 트랜잭션 없이 을 호출하고, 클라이언트 측 트랜잭션 컨텍스트가 있는 경우 전파합니다.

주석이 없으면 기본 정책은 org.jboss.ejb.client.annotation.ClientTransactionPolicy#SUPPORTS 입니다. 이는 트랜잭션이 존재하는 경우 트랜잭션이 전파되지만 트랜잭션이 있는지 여부에 관계없이 전파가 실패하지 않습니다.

@ClientTransaction(ClientTransactionPolicy.MANDATORY)
@Remote
public interface RemoteCalculator  {
   public void callRemoteEjb() { }
}
@Stateless
@Remote(RemoteCalculator.class)
public class CalculatorBean implements RemoteCalculator {

   @Override
   public void callRemoteEjb()  {   }
}

이 주석을 사용하면 원격 인터페이스 프로바이더에서 원격 인터페이스 소비자에게 메서드에 트랜잭션이 필요한지 여부를 알릴 수 있습니다.