애플리케이션 클라이언트에서 SFSB (Stateful Session Bean)에 액세스하는 데 문제가 있습니다. JBoss 5.0.1.GA를 사용하고 있습니다. 응용 프로그램 클라이언트와 EJB는 모두 배포되는 EAR에 패키지되어 있으며 문제없이 작동하는 다른 응용 프로그램 클라이언트가 있습니다. 지금까지는 SLSB 만 사용했지만 SLSB와 SFSB의 차이점은 응용 프로그램 클라이언트에서 액세스 할 수있는 방법에 영향을 미치지 않아야합니다.EJB 3 : 애플리케이션 클라이언트로부터 상태 세션빈 액세스
클래스/인터페이스의 구조는 : "How to use an application client in JBoss 5"에 기재된
@Local public interface A {...}
@Stateless public class ABean implements A {...}
@Remote public interface B {...}
@Stateful public class BBean implements B {
@EJB private A anInstanceOfA;
@PostConstruct private void init() {
this.anInstanceOfA.someMethod();
}
}
애플리케이션 클라이언트는 "응용 프로그램 클라이언트 발사기"로 실행된다. "BBean"의 조회는 init()을 실행하는 동안 (로컬) ABean의 someMethod()가 호출 될 때까지 잘 작동합니다. 이 호출 중에 컨테이너는 InvalidStateException ("로컬 호출 : 보안 컨텍스트가 null입니다")을 (루트 원인으로) throw합니다. 상태없는 빈을 상태없는 빈으로 변경하면 모든 것이 정상적으로 작동합니다 (물론 상태는 보존되지 않습니다). 흥미롭게도 JSF 관리 빈에서 웹 애플리케이션의 정확한 SFSB를 사용할 수 있습니다.
내가 잘못 했나요? 응용 프로그램 클라이언트에서 SFSB를 사용하려면 어떻게해야합니까?
지금까지이 특정 문제에 대해 유용한 정보를 찾지 못했습니다. 예외는 [#JBAS-4317] Security Context over the invocation의 비슷한 문맥에서 언급되었지만 완료로 표시되고 JBoss 5.0.0.Beta3에서 수정되었다고 생각하면 동일한 문제가 아닌 것 같습니다.
또한 포장되는 웹 응용 프로그램 : 난 아직도 내 원래의 설정이이 상태 세션 빈에 대한 무 상태 세션 빈에 대해 완벽하게 작동하지만 이유를 알고 싶습니다 비록
흥미로운 정보를 제공합니다. 그러나 이것이 어떻게 상태를 설명하는지 확신 할 수 없습니다. 특히 상태없는 bean에서 "작동"하고 문제는 내 보안 도메인을 사용할 때만 발생합니다. 어쨌든, 나는 더 이상 프로젝트와 아무 관계가 없으며 그 이후로 Java EE 개발을 수행하지 않았으므로,이 물건이 실제로 어떻게 작동 하는지를 알기위한 동기가별로 없습니다. 어쨌든 고마워! –