2013-10-24 49 views
1

我得到以下異常無法在單會話bean調用的方法。IllegalLoopbackException:在構造bean實例

我有一個注入Foo和Bar的無狀態會話Bean。

@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(); 
    } 

} 

我有一個創建辛格爾頓富製片人:

@Singleton 
public class FooProducer { 

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

我有一個創建的單身酒吧另一位製片人。 爲了營造酒吧我需要注入富:

@Singleton 
public class BarProducer { 

    @Inject 
    private Foo foo; 

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

我使用WebSphere 8(的OpenWebBeans)。我覺得容器知道它需要在創建Bar單身人士之前瘋狂地使用Foo單身人士?

回答

1

你實際上並沒有在這裏使用CDI。這是一個EJB問題。問題是你沒有爲你的EJB指定一個@DependsOn。看到這裏:http://docs.oracle.com/javaee/6/api/javax/ejb/DependsOn.html

+1

哇,另一個JEE6的概念,我沒有意識到。你可以添加一個sniplet來展示@DependsOn在給定的例子中如何使用? –

+0

在'BarProducer'上添加'@DependsOn(「FooProducer」)'在課堂上。 –

+0

謝謝...一個更正:因爲組件不是@Named,我想你的意思是「fooProducer」,對不對? –