Nie używaj lokalnych nazw JNDI

W aplikacjach WebLogic i JBoss element <local-jndi-name> definiuje nazwę JNDI lokalnego katalogu głównego komponentu bean w globalnym drzewie JNDI. Jest on zdefiniowany w pliku weblogic-ejb-jar.xml lub jboss.xml.

Produkt WebSphere(R) nie zezwala na odwzorowywanie lokalnych katalogów głównych na nazwy JNDI w globalnym drzewie JNDI. Zamiast tego są one odwzorowywane na drzewo JNDI lokalnego kontenera. Z tego powodu programiści muszą uzyskiwać dostęp do lokalnych komponentów EJB przy użyciu odwołania JNDI w lokalnej przestrzeni nazw, a nie nazwy JNDI w globalnej przestrzeni nazw.

Ta reguła jest uruchamiana, gdy element <local-jndi-name> zostanie znaleziony w pliku weblogic-ejb-jar.xml lub w jboss.xml. Zautomatyzowana poprawka przetworzy pliki Java, deskryptory wdrożenia i powiązania, aby włączyć te odniesienia do pracy na WebSphere.

Przetwarzane są wszystkie pakiety powiązane z aplikacją, w której znajduje się element <local-jndi-name>. Jeśli projekt EAR aplikacji nie zostanie znaleziony lub nie jest powiązany ze znalezionym projektem EJB, przetwarzany jest tylko projekt EJB. Ważną kwestią jest poprawne zdefiniowanie projektów pokrewnych.

Gdy automatyczna poprawka jest dostępna i została zastosowana, przeskanuje ona wszystkie pliki Java w aplikacji, w której znaleziono <local-jndi-name>. Poszukuje bezpośrednich wyszukiwań kontekstu lokalnej nazwy JNDI oraz wyszukiwań odwołania komponentu EJB do tej nazwy.

Na przykład, jeśli lokalna nazwa JNDI to ejb/myBeanLocalHome , poniższe przykłady kodu wyzwalają aktualizacje kodu, deskryptorów wdrażania i powiązań lub obu tych elementów.

Przykłady wyszukiwań Java:

ctx.lookup("ejb/myBeanLocalHome");

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

ctx.lookup(myBeanLocalHomeNameVariable);

Kod Java został zmieniony w pierwszym przykładzie na ctx.lookup("java:comp/ejb/myBeanLocalHome") aby wykonywane jest wyszukiwanie referencyjne EJB. Pozostałe dwa przykłady kodu Java pozostają niezmienione. We wszystkich trzech przypadkach automatyczna poprawka zaktualizuje deskryptory wdrożenia i powiązania dla projektu.

Gdy dla projektu zostanie wykryte wyszukiwanie określonej lokalnej nazwy JNDI i gdy używana jest zmienna i nie można określić wyszukiwania, plik web.xml lub plik ejb-jar.xml jest modyfikowany, aby zawierał <ejb-local-ref> dla fasoli jest modyfikowany tak, aby zawierał <ejb-local-ref> dla fasoli który zdefiniował lokalną nazwę JNDI. W przypadku projektu EJB, element <ejb-local-ref> jest dodawany do każdej fasoli zdefiniowanej w pliku ejb-jar.xml. W przypadku pliku web.xml, jedno odniesienie jest dodawane dla fasoli, która zdefiniował lokalną nazwę JNDI. W obu przypadkach nazwa <ejb-local-ref> JNDI jest dodawana do pliku pliku powiązań dla projektu.