2014-07-12 11 views
1

나는 EJB 3.1 사양을 통해가는 클라이언트 요청이 거래와 관련된 및 인스턴스가 이미되어 있지 않은 경우 다음 scenarios.Could 누군가가 예를트랜잭션 전파

• 함께 설명 관련이 없습니다 트랜잭션 T2와 연관된 컨테이너는 인스턴스 (T2)와 연관된 트랜잭션을 사용하여 인스턴스를 호출합니다. 이 경우는 Stateless Session Bean, Singleton Session Bean 또는 Message-Driven Bean에서 결코 발생할 수 없습니다. Stateful Session Bean에서만 발생할 수 있습니다.

클라이언트가 트랜잭션 T1과 연관되어 있고 인스턴스가 이미 트랜잭션 T2와 연관되어있는 경우 컨테이너는 클라이언트의 트랜잭션 연결을 일시 중단하고 인스턴스 (T2)와 연관된 트랜잭션 컨텍스트로 메소드를 호출합니다. . 메소드는 (연관된 인터셉터 메소드와 함께) 완료 될 때 클라이언트의 트랜잭션 연관 (T1)을 재개합니다. 이 경우는 Stateless Session Bean, Singleton Session Bean 또는 Message-Driven Bean에서 결코 발생할 수 없습니다. Stateful Session Bean에서만 발생할 수 있습니다.

트랜잭션 범위의 지속성 컨텍스트가있는 EJB가 확장 된 지속성 컨텍스트를 사용하는 상태 저장 세션 bean에서 호출하는 경우 오류가 발생합니다. 그 이유는 무엇입니까? 상태 비 저장 세션 빈의 트랜잭션을 일시 중단 한 다음 상태있는 세션 빈과 관련된 트랜잭션 컨텍스트

답변

0

무엇이 문제인가? Stateful Session Bean에 관한 것입니다. 이러한 종류의 bean만이 메소드 호출간에 트랜잭션을 보유 할 수 있습니다. 따라서 이미 활성 트랜잭션이있는 Stateful Session Bean을 호출하면 Stateful Session Bean 트랜잭션 내에서 메소드 호출이 실행됩니다.