Nu utilizaţi nume locale JNDI

În aplicaţii WebLogic şi JBoss, elementul <local-jndi-name> defineşte numele JNDI pentru home-ul local al bean-ului în arborele global JNDI. Acesta este definit în fişierul weblogic-ejb-jar.xml sau jboss.xml.

WebSphere(R) nu permite maparea home-urilor locale la nume JNDI în arborele global JNDI. În loc, acestea sunt mapate în arborele JNDI al containerului local. Din acest motiv, programatorii trebuie să acceseze bean-uri enterprise locale folosind o referinţă JNDI în spaţiul de nume local; nu numele JNDI din spaţiul de nume global.

Această regulă este declanșată atunci când un element <local-jndi-name> este găsit în weblogic-ejb-jar.xml sau în jboss.xml. Soluția automată va procesa fișierele Java, descriptorii de implementare și legăturile pentru a permite acestor referințe să funcționeze pe WebSphere.

Sunt procesate toate pachetele înrudite cu aplicaţia în care se află elementul <local-jndi-name>. Dacă nu este găsit proiectul EAR al aplicaţiei dumneavoastră sau dacă aceasta nu este asociată cu proiectul EJB găsit, este procesat numai proiectul EJB. Este important să aveţi proiecte conexe definite corect.

Atunci când soluția automată este disponibilă și a fost aplicată, aceasta va scana toate fișierele Java din aplicația în care <local-jndi-name> este găsit. Scanează pentru căutările de context directe pentru numele JNDI local şi scanează pentru căutările de referinţă EJB la acel nume.

De exemplu, dacă numele local JNDI este ejb/myBeanLocalHome , următoarele exemple de cod declanșează actualizări la cod, descriptori de implementare și legături, sau ambele.

Java lookup examples:

ctx.lookup("ejb/myBeanLocalHome");

ctx.lookup("java:comp/ejb/myBeanLocalHome");

ctx.lookup(myBeanLocalHomeNameVariable);

Java cod Java Java este schimbat în primul exemplu ctx.lookup("java:comp/ejb/myBeanLocalHome") astfel încât se efectuează o căutare a referințelor EJB. Celelalte două exemple Java rămân neschimbate. În toate cele trei cazuri, remedierea automată va actualiza descriptorii de implementare și legăturile pentru proiect.

Când este detectată o căutare de nume JNDI local specific pentru un proiect şi când este folosită o variabilă şi căutarea nu poate fi determinată, fişierul web.xml sau fişierul ejb-jar.xml este modificat pentru a include un <ejb-local-ref> pentru bean-ul care a definit numele JNDI local. În cazul unui proiect EJB, elementul <ejb-local-ref> este adăugat la fiecare bean care este definit în ejb-jar.xml. În cazul fişierului web.xml, o referinţă este adăugată pentru bean-ul care a definit numele JNDI local. Pentru ambele, numele JNDI <ejb-local-ref> este adăugat la fişierul de legări pentru proiect.