2016-04-04 8 views
0

Ich habe einen Java EE-Web-App mit einer Gruppe von JSF geerbt, die für den Zugriff auf einen @Remote Schnittstelle Verwendung von EJB-Injektion gemacht:@EJB Lookup als Parameter statt hart codiert

@EJB(lookup = "java:global/myapp-business/myapp-services/CustomerFacadeBean") 

Es funktioniert, aber als ich Ich überprüfe die Anwendung für die Deployment-Jungs, die ich als Parameter machen möchte.

Ich nehme an, es muss einen guten Grund für den Entwickler geben, nur lookup verwendet zu haben, so wie ein erster Versuch, ich bin bereit, das gleiche Szenario zu replizieren.

Aber ich hätte gerne eine Meinung, um diese Injektion so "portabel" und "konfigurierbar" wie möglich zu machen. Wenn ich mich in den alten Tagen von Ejb 2 nicht irrte, gab es das ejb-ref in der web.xml.

Antwort

1

Die @EJB deklariert eine EJB-Verweise und Anwendungsserver sind erforderlich, um konfigurierbare Bindungen für EJB-Verweise zum Zeitpunkt der Bereitstellung zu unterstützen. Das Attribut lookup der Annotation ermöglicht es dem Entwickler, eine Standardbindung anzugeben, sofern der Implementierer sie nicht überschreibt. Sie müssen die Dokumentation Ihres Anwendungsservers lesen, um zu ermitteln, wie diese Bindung konfiguriert wird.

Hinweis, @EJB Anmerkung hat ein name Attribut, das der Deployer konfigurieren muss. Wenn das name-Attribut nicht angegeben wird, wird standardmäßig <class>/<member> verwendet. Wenn die Klasse beispielsweise test.MyBean und das Feld myEjb lautet, lautet der EJB-Referenzname test.MyBean/myEjb.

0

Von J2EE 6+ Lookup-Attribut ist für JNDI-Lookup erforderlich, um das Ziel zu lösen. Die anderen Möglichkeiten der JNDI-Suche in älteren Versionen sind zum Beispiel: @EJB (name = "myBean") erstellt ein Referenz-Java: comp/env/myBean im Komponentennamensraum. Und wenn Name nicht im Attribut angegeben ist, erstellt es einen Verweis als Java: comp/env/com.example.MyClass/myField

Verwandte Themen