2013-10-24 2 views
1

을 구축 할 경우 싱글 세션 빈의 메소드를 호출 할 수 없습니다.IllegalLoopbackException : 나는 다음과 같은 예외를 받고 있어요 빈 인스턴스

나는 Foo와 Bar를 모두 주입하는 Stateless Session Bean이 있습니다.

@Singleton 
public class FooProducer { 

    @Produces 
    public Foo getFoo() { 
     return new Foo(); 
    } 
} 

나는 싱글 줄을 만들어 다른 생산자가 :

@Stateless 
public class MySessBean { 

    @Inject 
    private Foo foo; 

    @Inject 
    private Bar bar; 

    public SomeData myMethod1(...){ 
     //does something with Foo 
     foo.xyz(); 
    } 

    public SomeData myMethod2(...){ 
     //does something with Bar 
     bar.xyz(); 
    } 

} 

은 내가 싱글 푸를 만드는 프로듀서가 있습니다. I에서는 WebSphere 8 (OpenWebBeans)를 사용하고

@Singleton 
public class BarProducer { 

    @Inject 
    private Foo foo; 

    @Produces 
    public Bar getBar() { 
      //uses Foo 
     foo.xyz(); 
    } 
} 

: 위해 내가 푸를 주입 할 필요가 줄을 만들 수 있습니다. 나는 그것이 바 싱글 튼을 만들기 전에 컨테이너가 Foo 싱글 톤을 craete 할 필요가 있다는 것을 알 것이라고 생각했다 ??

답변

1

여기 실제로 CDI를 사용하지 않습니다. 이것은 EJB 문제입니다. 문제는 EJB에 대해 @DependsOn을 지정하지 않는다는 것입니다. 여기를 참조하십시오 : http://docs.oracle.com/javaee/6/api/javax/ejb/DependsOn.html

+1

와우, 내가 알고 있지 않은 또 다른 JEE6 개념. 주어진 예제에서 @DependsOn을 사용하는 방법을 보여주는 스 니플 릿을 추가 할 수 있습니까? –

+0

'BarProducer'에 클래스 수준에서'@DependsOn ("FooProducer")를 추가하십시오. –

+0

고마워요. 하나의 수정 : 구성 요소가 @Named가 아니기 때문에 "fooProducer"라는 뜻인가요? –

관련 문제