Я получаю следующее исключение:
Exception data: javax.ejb.IllegalLoopbackException: Cannot call a method on a singleton session bean while constructing the bean instance : MyWar.war#BarProducer
Мой код выглядит следующим образом.
У меня есть сессионный компонент без сохранения состояния, который внедряет как Foo, так и Bar.
@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 Foo:
@Singleton
public class FooProducer {
@Produces
public Foo getFoo() {
return new Foo();
}
}
У меня есть еще один продюсер, который создает Singleton Bar. Чтобы создать Bar, мне нужно ввести Foo:
@Singleton
public class BarProducer {
@Inject
private Foo foo;
@Produces
public Bar getBar() {
//uses Foo
foo.xyz();
}
}
Я использую WebSphere 8 (OpenWebBeans). Я полагал, что контейнер будет знать, что ему нужно создать синглтон Foo, прежде чем он создаст синглтон Bar ??