In WebLogic- und JBoss-Anwendungen definiert das Element <local-jndi-name> den JNDI-Namen für die lokale Ausgangsposition der Bean in der globalen JNDI-Baumstruktur. Dieses Element wird in der Datei weblogic-ejb-jar.xml oder in der Datei jboss.xml definiert.
WebSphere(R) lässt die Zuordnung lokaler Ausgangspositionen zu JNDI-Namen in der globalen JNDI-Baumstruktur nicht zu. Stattdessen werden diese Ausgangspositionen der JNDI-Baumstruktur des lokalen Containers zugeordnet. Aus diesem Grund müssen Programmierer über eine JNDI-Referenz im lokalen Namespace und nicht über den JNDI-Namen im globalen Namespace auf lokale Enterprise-Beans zugreifen.
Diese Regel wird ausgelöst, wenn ein Element <local-jndi-name> in der Datei weblogic-ejb-jar.xml oder in der Datei jboss.xml gefunden wird. Es ist eine Schnellkorrektur im Quellenscanner verfügbar. Die Schnellkorrektur verarbeitet Java-Dateien, Implementierungsdeskriptoren und Bindungen, damit diese Referenzen in WebSphere funktionieren können.
Alle Pakete, die sich auf die Anwendung beziehen, in der sich das Element <local-jndi-name> befindet, werden verarbeitet. Wenn Ihr Anwendungs-EAR-Projekt nicht gefunden wird oder dem gefundenen EJB-Projekt nicht zugeordnet ist, wird nur das EJB-Projekt verarbeitet. Es ist von entscheidender Bedeutung, dass die zugehörigen Projekte ordnungsgemäß definiert sind.
Wenn Sie die Schnellkorrektur im Quellenscanner ausführen, werden alle Java-Dateien in der Anwendung überprüft, in der sich das Element <local-jndi-name> befindet. Es werden direkte Kontext-Lookups des lokalen JNDI-Namens und Lookups der EJB-Referenz auf diesen Namen überprüft.
Wenn der lokale JNDI-Name beispielsweise ejb/myBeanLocalHome lautet, lösen die folgenden Codemuster Aktualisierungen des Codes, der Implementierungsdeskriptoren und Bindungen aus.|
ctx.lookup("ejb/myBeanLocalHome"); ctx.lookup("java:comp/ejb/myBeanLocalHome"); ctx.lookup(myBeanLocalHomeNameVariable); |
Der Java-Code wird im ersten Beispiel in ctx.lookup("java:comp/ejb/myBeanLocalHome") geändert, so dass eine EJB-Referenz-Lookup durchgeführt wird. Die anderen beiden Java-Beispiele bleiben unverändert. In allen drei Fällen aktualisiert die Schnellkorrektur die Implementierungsdeskriptoren und Bindungen für das Projekt.
Wenn ein Lookup des spezifischen lokalen JNDI-Namens für ein Projekt gefunden wird und eine Variable verwendet wird, das Lookup aber nicht bestimmt werden kann, wird die Datei web.xml oder die Datei ejb-jar.xml geändert und ein Element <ejb-local-ref> für die Bean eingefügt, die den lokalen JNDI-Namen definiert. Im Fall eines EJB-Projekts wird jeder Bean, die in der Datei ejb-jar.xml definiert ist, das Element <ejb-local-ref> hinzugefügt. In der Datei web.xml wird eine einzige Referenz für die Bean hinzugefügt, die den lokalen JNDI-Namen definiert. In beiden Fällen wird der JNDI-Name aus dem Element <ejb-local-ref> der Bindungsdatei für das Projekt hinzugefügt.