WebSphere-Bindungen für die Definition von JNDI-Namen für lokale EJB-Referenzen verwenden

Der WebLogic-spezifische Implementierungsdeskriptor für EJBs, weblogic-ejb-jar.xml, kann JNDI-Namen für lokale EJB-Referenzen enthalten, die in ejb-jar.xml definiert sind. Diese Referenzen ordnen eine lokale EJB-Referenz dem entsprechenden JNDI-Namen zu. Damit diese Referenzen ordnungsgemäß in WebSphere Application Server funktionieren, müssen Informationen in die Bindungsdatei von WebSphere Application Server umgesetzt werden.

Diese Regel markiert lokale EJB-Referenzen, die in der Datei weblogic-ejb-jar.xml gefunden werden. Es wird eine Schnellkorrektur im Quellenscanner bereitgestellt. Nach der Anwendung der Schnellkorrektur wird die WebLogic-XML-Datei mit einem Kommentar versehen, der anzeigt, dass die XML-Datei migriert wurde. Dieser Kommentar wird verwendet, um zu bestimmen, ob die Schnellkorrektur ausgeführt werden muss, und er kann am Ende der Migration verwendet werden, um anzuzeigen, wie viel der XML-Datei migriert wurde.

Bei der Anwendung der Schnellkorrektur wird der JNDI-Name von der Datei weblogic-ejb-jar.xml in die WebSphere Traditional- und Liberty-EJB-Bindungsdatei kopiert. Das folgende Beispiel zeigt beispielsweise die Bean "MyBean2", die eine Referenz auf "MyBean" definiert. Zuerst wird <ejb-local-ref> in der Datei ejb-jar.xml definiert:

<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>

Dann wird der entsprechende JNDI-Name <ejb-local-ref> in der Datei weblogic-ejb-jar.xml definiert:


<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>

Die Schnellkorrektur fügt den JNDI-Namen ejb.MyBean der Bindungsdatei hinzu und ordnet ihn der lokalen Referenz ejb/MyBean für MyBean2 zu. Falls die Bindungsdatei nicht vorhanden ist, wird sie erstellt.

In Java-Code kann der Namenskontext wie im folgenden Beispiel beschrieben referenziert werden:

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