Ich habe eine wahrscheinlich triviale Frage.
Wenn ich die EJB3+-Schnittstelle definiert habe, sagen wir, sie ist so entfernt:
@Remote
public class FooServiceRemote {
void foo();
}
und eine Implementierung
@Stateless
public class FooService implements FooServiceRemote {
void foo() { ... }
}
Wie löst der Anwendungsserver standardmäßig die welche Implementierung zu verwenden ist (und über Proxy aufrufen), wenn er nur die @EJB-Annotation für die Dependency Injection wie bei der Schnittstelle kennt:
public class SomeClass {
@EJB
private FooServiceRemote fooService;
}
Geschieht dies durch Reflexion (Verkürzung des Namens der Schnittstelle)? Oder er scannt mögliche Implementierungen einer solchen Schnittstelle und wählt eine aus. Oder ? Und was, wenn ich mehrere Implementierungen einer Schnittstelle erstellen möchte, ist es möglich, und wie zu spezifizieren, welche Implementierung instanziiert werden sollte (vielleicht ist es möglich, über einige Argument der Annotation).
Danke:-)