Использовать привязки WebSphere для определения имен JNDI локальных ссылок на EJB

Специальный файл описания WebLogic для EJB, weblogic-ejb-jar.xml, может содержать имена JNDI для локальных ссылок на EJB, определенных в ejb-jar.xml. Таким образом определяется связь между локальной ссылкой на EJB и именем JNDI. Для того чтобы эти связи правильно работали в WebSphere Application Server, информацию необходимо перенести в файл привязок WebSphere Application Server.

Это правило отмечает локальные ссылки на EJB, содержащиеся в файле weblogic-ejb-jar.xml. В сканере исходного кода доступно быстрое исправление. После применения быстрого исправления в XML WebLogic добавляется комментарий о том, что информация была перенесена. Это позволяет определить, нужно ли выполнять быстрое исправление, и может применяться в конце миграции для определения того, какая часть файла XML была перенесена.

Процедура быстрого исправления копирует имя JNDI из файла weblogic-ejb-jar.xml в файл привязок EJB WebSphere traditional и Liberty. Например, приведенный ниже MyBean2 определяет ссылку на MyBean. Вначале определяется элемент <ejb-local-ref> в файле ejb-jar.xml:

<ejb-jar>
<enterprise-beans>
<session>
<display-name>MyBean</display-name>
<ejb-name>MyBean</ejb-name>
<home>com.ibm.ejb.MyBeanHome</home>
<remote>com.ibm.ejb.MyBean</remote>
<ejb-class>com.ibm.ejb.MyBeanBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
<jndi-name>ejb.MyBean</ejb-name>
...
</session>
<session>
<display-name>MyBean2</display-name>
<ejb-name>MyBean2</ejb-name>
<home>com.ibm.ejb.MyBean2Home</home>
<remote>com.ibm.ejb.MyBean2</remote>
<ejb-class>com.ibm.ejb.MyBean2Bean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
<ejb-local-ref>
<description></description>
<ejb-ref-name>ejb/MyBean</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<local-home>com.ibm.ejb.MyBeanHome</local-home>
<local>com.ibm.ejb.MyBean</local>
</ejb-local-ref>
<jndi-name>ejb.MyBean2</ejb-name>
...
</session>
<enterprise-beans>
<ejb-jar>

Затем имя JNDI, соответствующее <ejb-local-ref>, определяется в файле weblogic-ejb-jar.xml:


<weblogic-ejb-jar>
<weblogic-enterprise-bean>
<ejb-name>MyBean</ejb-name>
<jndi-name>ejb.MyBean</jndi-name>
</weblogic-enterprise-bean>
<weblogic-enterprise-bean>
<ejb-name>MyBean2</ejb-name>
<ejb-local-reference-description>
<ejb-ref-name>ejb/MyBean</ejb-ref-name>
<jndi-name>ejb.MyBean</jndi-name>
</ejb-local-reference-description>
<jndi-name>ejb.MyBean2</jndi-name>
</weblogic-enterprise-bean>
</weblogic-ejb-jar>

Процедура быстрого исправления добавляет имя JNDI ejb.MyBean в файл привязок и связывает его с локальной ссылкой ejb/MyBean в MyBean2. Если файл привязок не существует, то он создается.

В коде на Java контекст именования можно указать, как показано в следующем примере:

javax.naming.Context ctx = new javax.naming.InitialContext();
Object beanRef = ctx.lookup("java:comp/env/ejb/MyBean");