В 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 принимались только следующие пространства имен:
java:global/java:app/java:module/java:comp/corbaname:Это правило помечает @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 .
< code> // эта привязка не будет помечена флагом < ejb-ref name= "TestBean" binding-name="java:global/TestApp/TestModule/TestBean!test.TestRemoteInterface"> < /code>
Правило также помечает имена JNDI, которые не используют одно из пространств имен, перечисленных выше для jndiName значение атрибута в <ejbRefBindings> в файлах ibm-ejb-jar-bnd.xmi и ibm-web-bnd.xmi .
< code> // это имя JNDI будет помечено тегом <ejbRefBindings jndiName= "java:myFolder/"> < /code>
Дополнительная информация о применении EJB 2.x в Liberty приведена в разделе Использование EJB с удаленными интерфейсами в Liberty.