Używanie Wildfly 8.1 Mam kilka ziaren, które próbuję wprowadzić kilka EJB do siebie. Powiedzmy, że mam 3 ziarna:Dlaczego fasolki bezstanowe są traktowane jako pseudo-zakres i nie mogą mieć zależności cyklicznych?
@Stateless
public class A{
@Inject
private B b;
}
@Stateless
public class B{
@Inject
private C c;
}
@Stateless
public class C{
@Inject
private A a;
}
Oczywiście mam zależność cykliczną. Według specyfikacji:
Pojemnik jest wymagane do obsługi circularities na wykresie fasoli zależności, gdzie co najmniej jeden fasoli udział w każdej zamkniętego łańcucha zależności ma normalny zakres
Uruchamianie powyższy kod wynik pojemnik błędu w postaci:
org.jboss.weld.exceptions.DeploymentException: wspawania 001443: Pseudo zawężona bean okrągłe zależności. Ścieżka zależności:
-Session bean [klasa A z kwalifikacjami [@Default @ Any]; Lokalne interfejsy są [A] BackedAnnotatedField] @Inject prywatny B,
[..]
tutaj moje pytanie: jaki jest zakres @Stateless fasoli? Czy to domyślnie @Dependent? A przede wszystkim, w jaki sposób mogę włączyć zależności cykliczne między bezstanowymi komponentami bean sesji?
Przepraszam, jeśli pytanie jest zbyt banalne. Będę wdzięczny za wszelkie dobre dalsze źródła lektur, które wyjaśnią prezentowane zachowanie. Z góry dziękuję.
ZAKTUALIZOWANE Ok. Znalazłem obejście. Użyłem adnotacji @EJB zamiast @Inject, ale to nie wyjaśnia dziwnego zachowania @Inject. Pytanie pozostaje otwarte, ale Mika zasugerowała, że może to być nierozwiązany problem zarówno w specyfikacji CDI, jak i Weld RI.
nie mam odpowiedzi, ale nie jest to banalne pytanie. Dyskutowano o tym między członkami CDI EG. Spójrz na CDI spec jira, powinien pojawić się problem dotyczący tego tematu. –
@MikeBraun czy mógłbyś podać link do problemu jiry? Szukałem, ale nie jestem pewien, czy patrzę na właściwy. – iku
to CDI-414, zobacz https://issues.jboss.org/browse/CDI-414 –