Der JBoss-spezifische Implementierungsdeskriptor für EJBs, jboss.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 jboss.xml gefunden wurden, falls die entsprechende Schnellkorrektur im Quellenscanner noch nicht angewendet wurde. Nach der Anwendung einer Schnellkorrektur wird die JBoss-XML mit einem Kommentar markiert, der anzeigt, dass die XML 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
jboss.xml in die
WebSphere-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
jboss.xml definiert:
|
<jboss> <enterprise-beans> <session> <ejb-name>MyBean</ejb-name> <jndi-name>ejb.MyBean</jndi-name> </session> <session> <ejb-name>MyBean2</ejb-name> <jndi-name>ejb.MyBean2</jndi-name> <ejb-local-ref> <ejb-ref-name>ejb/MyBean</ejb-ref-name> <local-jndi-name>ejb.MyBean</jndi-name> </ejb-local-ref> </session> </enterprise-beans> </jboss> |
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"); |