Изменение логики поиска объектов EJB в предыдущих версиях Liberty

В Liberty версиях ниже 20.0.0.12 компоненты EJB не связывались с корневым пространством имен JNDI сервера, как это происходит в WebSphere Application Server traditional, поэтому может потребоваться миграция операций поиска и связывания @EJB в файлах ibm-ejb-jar-bnd.xml и ibm-web-bnd.xml. Если не применяется Liberty 20.0.0.12 и выше, то в этих операциях поиска должен использоваться синтаксис JNDI для компонентов EJB, которые находятся на том же сервере, и URL corbaname: для компонентов EJB, находящихся на другом сервере.

В Liberty версиях ниже 20.0.0.12 принимались только следующие пространства имен:

Это правило помечает аннотации @EJB с атрибутом lookup, чье значение не начинается с одного из перечисленных выше пространств имен.


//этот поиск будет помечен
@Stateless
@EJB(lookup="ejb/myApp/myModule/MyBeanComponent")

Данное правило также отмечает строковые литералы, начинающиеся с "ejblocal:".


//это будет помечено
new InitialContext().lookup("ejblocal:" + getEJBName());

Это правило также помечает имена JNDI, которые не используют одно из перечисленных выше пространств имен для значения атрибута binding-name в элементе <ejb-ref> в файлах ibm-ejb-jar-bnd.xml и ibm-web-bnd.xml..


//эта привязка не будет помечена
<ejb-ref name="TestBean" binding-name="java:global/TestApp/TestModule/TestBean!test.TestRemoteInterface">

Правило также помечает имена JNDI, которые не используют одно из перечисленных выше пространств имен для значения атрибута jndiName в элементе <ejbRefBindings> в файлах ibm-ejb-jar-bnd.xmi и ibm-web-bnd.xmi.


//это имя JNDI будет помечено
<ejbRefBindings jndiName="java:myFolder/">

Дополнительная информация о применении EJB 2.x в Liberty приведена в разделе Использование EJB с удаленными интерфейсами в Liberty.