Mit Wildfly 8.1 Ich habe mehrere Bohnen, die ich versuche, mehrere EJB ineinander zu injizieren. Sagen wir, ich habe 3 Bohnen:Warum statusfreie Beans als Pseudo-Scoped behandelt werden und keine zirkulären Abhängigkeiten haben können?
@Stateless
public class A{
@Inject
private B b;
}
@Stateless
public class B{
@Inject
private C c;
}
@Stateless
public class C{
@Inject
private A a;
}
Offensichtlich habe ich kreisförmige Abhängigkeit. Laut Spezifikation:
Der Behälter ist erforderlich Zirkularitäten in den Bohne Abhängigkeitsgraphen, wobei mindestens eine bean teilnehmenden in jeder Kreis Kette von Abhängigkeiten hat einen normalen Umfang
Lauf obigen Code zu unterstützen, Behälter resultiert in einem Fehler der Form:
org.jboss.weld.exceptions.DeploymentException: WELD-001.443: Pseudo scoped bean zirkuläre Abhängigkeiten hat. Abhängigkeitspfad:
-Session Bean [Klasse A mit Qualifier [@Default @Any]; lokale Schnittstellen sind [A] BackedAnnotatedField] @Inject Privat B,
[..]
Meine Frage ist: Was ist der Umfang der @Stateless Bohnen? Ist es standardmäßig @ Dependent? Und vor allem, wie kann ich zirkuläre Abhängigkeiten zwischen Stateless Session Beans aktivieren?
Sorry, wenn die Frage zu trivial ist. Ich werde alle guten weiterführenden Quellen schätzen, die das vorgestellte Verhalten erklären werden. Danke im Voraus.
AKTUALISIERT Ok. Ich habe die Problemumgehung gefunden. Ich habe @EJB Annotation anstelle von @Inject verwendet, aber dies erklärt nicht das seltsame Verhalten von @Inject. Die Frage bleibt offen, aber wie Mika vorgeschlagen hat, könnte es ein ungelöstes Problem sowohl in der CDI-Spezifikation als auch in Weld RI sein.
ich keine Antwort haben, aber es ist keine triviale Frage. Es gab eine Diskussion darüber zwischen den CDI-Mitgliedern. Schauen Sie sich die CDI spec jira an, es sollte ein Problem zu diesem Thema geben. –
@MikeBraun Könnten Sie vielleicht einen Link zum Jira-Problem geben? Ich habe gesucht, aber ich bin mir nicht sicher, ob ich auf die richtige suche. – iku
ist es CDI-414, siehe https://issues.jboss.org/browse/CDI-414 –