2016-05-14 12 views
0
arbeiten

ich habe eine Bohne, die wie folgt kommentiert wird:EJB @DependsOn zusammen mit CDI Instanz nicht

@Stateless 
@DependsOn("Bar") 
public class Foo implements Inf {} 

und eine Bohne namens "Bar" wie folgt aus:

@Stateless 
public class Bar implements Inf {} 

und i jeder sammeln Bohne über:

@Startup 
@Singleton 
public class Boo { 

@Inject 
Instance<Inf> infs; 

} 

Das funktioniert gut. Es scheint jedoch, dass @ DependsOn nicht richtig funktioniert. Jedes Mal, wenn ich meinen Container starte, wird die Klasse "Foo" vor "Bar" ausgeführt.

Hat jemand eine Ahnung?

Vielen Dank im Voraus

+0

wie sagt man Klasse 'foo', bevor 'Bar' ausgeführt werden ?? fügen Sie bitte ein Fehler StackTrace oder Beweis zu diesem Thank You hinzu. @Christopher –

Antwort

1

@DependsOn für Singletons nur gültig ist, macht es keinen Sinn im Zusammenhang mit staatenlos Bohnen

+0

ahh ich sehe! Danke für das Einatmen. Aber gibt es eine Möglichkeit, eine "Abhängigkeit" zu einer anderen Bohne zu haben, die nicht als @Singleton markiert ist? Eigentlich möchte ich nicht, dass diese Bohne für immer in den Haufen –

+0

Sie können Bohnen miteinander injizieren mit \ @EJB oder wenn Sie CDI dann \ @Inject verwenden. Mit CDI können Sie auch kleinere Bereiche als \ @Singleton verwenden, z. B. \ @RequestScoped oder Ihren benutzerdefinierten Bereich. \ @Stateless Bohnen per Definition, obwohl nicht State halten, so sollten Sie nur auf Funktionalität nicht tatsächlich gehaltenen Daten verlassen – highstakes

+0

Vielen Dank! Wirklich gute Antwort! –