Używaj powiązań produktu WebSphere do definiowania nazw JNDI lokalnych odwołań do komponentów EJB

Specyficzny dla serwera WebLogic deskryptor wdrażania dla komponentów EJB (weblogic-ejb-jar.xml) może zawierać nazwy JNDI dla lokalnych odwołań do komponentów EJB zdefiniowanych w pliku ejb-jar.xml. Odwołania te odwzorowują lokalne odwołanie do komponentu EJB na jego nazwę JNDI. Aby te odwołania działały poprawnie na serwerze WebSphere Application Server, należy przenieść informacje do pliku powiązań serwera WebSphere Application Server.

Ta reguła powoduje oznaczenie lokalnych odwołań do komponentów EJB znalezionych w pliku weblogic-ejb-jar.xml. W skanerze kodu źródłowego dostępna jest szybka poprawka. Po zastosowaniu szybkiej poprawki plik XML serwera WebLogic zostaje oznaczony za pomocą komentarza wskazującego, że plik został już poddany migracji. Umożliwia to określenie, czy konieczne jest uruchomienie szybkiej poprawki, oraz wskazuje na końcu migracji, jaka część pliku XML została poddana migracji.

Zastosowana szybka poprawka powoduje skopiowanie nazwy JNDI z pliku weblogic-ejb-jar.xml do pliku powiązań EJB tradycyjnego serwera WebSphere i Liberty. Na przykład w poniższym przykładzie przedstawiono komponent MyBean2 definiujący odwołanie do komponentu MyBean. Najpierw element <ejb-local-ref> jest definiowany w pliku 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>

Następnie odpowiadająca mu nazwa JNDI <ejb-local-ref> jest definiowana w pliku 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>

Szybka poprawka dodaje nazwę JNDI ejb.MyBean do pliku powiązań i wiąże ją z lokalnym odwołaniem ejb/MyBean dla komponentu MyBean2. Jeśli plik powiązań nie istnieje, zostanie utworzony nowy.

W kodzie Java kontekst nazewnictwa może być przywoływany tak, jak w następującym przykładzie:

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