Не использовать локальные имена JNDI

В приложениях WebLogic и JBoss элемент <local-jndi-name> определяет имя JNDI для локального домашнего расположения объекта в глобальном дереве JNDI. Он задается в файле weblogic-ejb-jar.xml или jboss.xml.

WebSphere(R) не поддерживает связи локальных расположений с именами JNDI в глобальном дереве JNDI. Вместо них используются связи с деревом JNDI локального контейнера. Из-за этого программисты должны обращаться к локальным EJB, используя имя JNDI в локальном пространстве имен, а не имя JNDI в глобальном пространстве имен.

Это правило срабатывает, когда элемент <local-jndi-name> встречается в weblogic-ejb-jar.xml или в jboss.xml. Автоматическое исправление обработает файлы Java, дескрипторы развертывания и привязки, чтобы эти ссылки работать на WebSphere.

Обрабатываются все пакеты, связанные с приложением, в котором найден элемент <local-jndi-name>. В том случае, если проект EAR приложения не найден или не связан с проектом EJB, обрабатывается только проект EJB. Важно, чтобы все связанные проекты были определены правильно.

Когда автоматическое исправление будет доступно и применено, оно просканирует все файлы Java в приложении, в которых обнаружена ошибка <local-jndi-name>. Выполняется поиск прямых операций поиска локального имени JNDI в контексте, которые заменяются на поиск ссылки EJB.

Например, если имя локального JNDI- ejb/myBeanLocalHome , следующие примеры кода вызывают обновления кода, дескрипторов развертывания и привязок.

Примеры поиска Java:

ctx.lookup("ejb/myBeanLocalHome");

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

ctx.lookup(myBeanLocalHomeNameVariable);

Код Java изменяется в первом примере на ctx.lookup("java:comp/ejb/myBeanLocalHome") чтобы поиск ссылок на EJB. Другие два примера кода Java не изменяются. Во всех трех случаях автоматическое исправление обновляет дескрипторы развертывания и привязки для проекта.

При обнаружении поиска определенного локального имени JNDI с использованием переменной, который не удается правильно распознать, в файл web.xml или ejb-jar.xml добавляется элемент <ejb-local-ref> для EJB, определяющего локальное имя JNDI. В случае проекта EJB элемент <ejb-local-ref> добавляется в каждый EJB, который определен в ejb-jar.xml. В случае файла web.xml добавляется одно вхождение для EJB, в котором определено локальное имя JNDI. В обоих случаях имя JNDI <ejb-local-ref> добавляется в файл привязок проекта.