Ne használjon helyi JNDI neveket

A WebLogic és JBoss alkalmazásokban a <local-jndi-name> elem a komponens helyi alapkönyvtárának JNDI nevét határozza meg a globális JNDI fában. A weblogic-ejb-jar.xml vagy a jboss.xml fájlban kerül meghatározásra.

A WebSphere(R) nem engedélyezi a helyi alapkönyvtárak JNDI nevekre való leképezését a globális JNDI fában. Helyette azok a helyi konténer JNDI fájára kerülnek leképezésre. Emiatt a programozóknak egy helyi névtérbeli JNDI hivatkozás segítségével kell elérniük a helyi EJB-komponenseket, nem pedig a globális névtérbeli JNDI név felhasználásával.

Ez a szabály akkor lép működésbe, ha a <local-jndi-name> elemet a weblogic-ejb-jar.xml vagy a jboss.xml-ban. Az automatikus javítás feldolgozza a Java fájlokat, a telepítési leírókat és a kötéseket, hogy lehetővé tegye ezeket a hivatkozások működjenek a WebSphere.

Az összes olyan csomag feldolgozásra kerül, mely a talált <local-jndi-name> elemet tartalmazó alkalmazáshoz kapcsolódik. Ha az alkalmazás EAR törekvésje nem található vagy nincs a talált EJB törekvéshez társítva, akkor csak az EJB törekvés kerül feldolgozásra. A kapcsolódó törekvéseket fontos megfelelően meghatározni.

Ha az automatikus javítás elérhető és alkalmazásra került, akkor az alkalmazásban lévő összes Java fájlt átvizsgálja, ahol a <local-jndi-név> található. Az elemzés során megkeresi a helyi JNDI név közvetlen kontextuskikereséseit, valamint a kérdéses névre vonatkozó EJB hivatkozás kikereséseit.

Ha például a helyi JNDI név ejb/myBeanLocalHome A következő kódpéldák a kód, a telepítésleírók és -kötések frissítéseit, vagy mindkettőt aktiválják.

Java kikeresési példák:

ctx.lookup("ejb/myBeanLocalHome");

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

ctx.lookup(myBeanLocalHomeNameVariable);

A Java kód az első példában a következőre módosul ctx.lookup("java:comp/ejb/myBeanLocalHome") hogy eJB-hivatkozás keresése megtörténik. A másik két Java példa változatlan marad. Mindhárom esetben az automatikus javítás frissíti a projekt telepítési leíróit és kötéseit.

Ha egy projekt esetében egy adott helyi JNDI névre történő keresést észlelünk és a amikor egy változót használnak, és a keresés nem határozható meg, a web.xml fájl vagy a ejb-jar.xml fájl úgy módosul, hogy tartalmazzon egy <ejb-local-ref>-t a babhoz amely a helyi JNDI nevet definiálta. Egy EJB projekt esetében, a <ejb-local-ref> elemet minden olyan babhoz hozzáadjuk, amely az EJB projektben definiálva van ejb-jar.xml. A web.xml fájl esetében egy hivatkozás kerül hozzáadásra ahhoz a babhoz, amelyet a helyi JNDI nevet definiálta. Mindkét esetben a <ejb-local-ref> JNDI név hozzáadásra kerül a kötözési fájlba a projekthez.