2009-05-24 7 views
3

Ich möchte die Injektion so definieren, dass nur injiziert wird, wenn die injizierte Schnittstelle EJB hat. Dies wird als Plug-In für den Haupt-EJB verwendet. Wie macht man das? Gibt es dazu eine Anmerkung?Optionale Injektion in EJB3 Bean oder Laufzeitabhängigkeitsprüfungen

Ich kann @PostConstruct verwenden, um die Variable manuell zu "injizieren". Aber dann muss ich die Abhängigkeiten selbst bewältigen. Wie kann ich mit Abhängigkeiten umgehen, wenn ich weiß, dass einer von ihnen optional ist? Wie gehe ich mit der Reihenfolge der Bereitstellung verschiedener abhängiger Module um?

Update: Ich sehe, dass Google eine inject Anmerkung mit optional Parameter hat:

import com.google.inject.Inject; 
@Inject(optional = true) 

Update 2: JBoss hat etwas, das sein kann, was ich suche:

import org.jboss.annotation.IgnoreDependency; 
@IgnoreDependency @EJB OtherBean otherBean; 
+0

Aus Neugier. Was nützt das? Warum es optional machen? – kazanaki

+2

Um eine Art Plug-In-Modul zu implementieren –

Antwort

1

Die Lösung wäre, JNDI und nicht die Injektion in diesem speziellen Fall zu verwenden. Auf diese Weise habe ich die volle Kontrolle über die Abhängigkeiten.