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

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

Это правило помечает локальные ссылки EJB, найденные в jboss.xml файле, когда автоматическое исправление станет доступным, JBoss XML будет помечен комментарием, указывающим на то, что он был перенесен. Это значение используется для определения необходимости запуска автоматического исправления, а также может быть использовано в в конце миграции, чтобы указать, какая часть XML-файла была перенесена.

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

< span class="Code"> < ejb-jar>
< span class= "indent2"> < /span> < Enterprise-beans>
< span class= "indent4"> < /span> < 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>Без сохранения состояния</session-type>
<transaction-type>Контейнер</transaction-type>
< span class= "indent4"> < /span> < span class="indent2"> < /span> < jndi-name>ejb.MyBean< /ejb-name>
...
</session>
< span class= "indent4"> < /span> < 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>Без сохранения состояния</session-type>
<transaction-type>Контейнер</transaction-type>
< span class= "indent4"> < /span> < span class="indent2"> < /span> < ejb-local-ref>
<description></description>
<ejb-ref-name>ejb/MyBean</ejb-ref-name>
<ejb-ref-type>Сеанс</ejb-ref-type>
<local-home>com.ibm.ejb.MyBeanHome</local-home>
<local>com.ibm.ejb.MyBean</local>
</ejb-local-ref>
< span class= "indent4"> < /span> < span class="indent2"><jndi-name>ejb.MyBean2</ejb-name>
...
</session>
< span class= "indent2"> < /span> < Enterprise-beans>
< ejb-jar>

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


< jboss>
< span class= "indent2"> < /span> < Enterprise-beans>
< span class= "indent4"> < /span> < session>
<ejb-name>MyBean</ejb-name>
<jndi-name>ejb.MyBean</jndi-name>
</session>
< span class= "indent4"> < /span> < session>
<ejb-name>MyBean2</ejb-name>
<jndi-name>ejb.MyBean2</jndi-name>
< span class= "indent4"> < /span> < span class="indent2"> < /span> < ejb-local-ref>
<ejb-ref-name>ejb/MyBean</ejb-ref-name>
< span class= "indent4"> < /span> < span class="indent4"> < /span> < local-jndi-name>ejb.MyBean< /jndi-name>
</ejb-local-ref>
</session>
</enterprise-beans>
</jboss>

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

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

< span class="Code"> < span class= "indent4"> < /span>javax.naming.Context ctx = new javax.naming.InitialContext();
Object beanRef = ctx.lookup("java:comp/env/ejb/MyBean");