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:
< 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>Statusunabhängig</session-type>
<transaction-type>-Container</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>Statusunabhängig</session-type>
<transaction-type>-Container</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>Sitzung</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>
Dann wird der entsprechende JNDI-Name <ejb-local-ref> in der Datei
jboss.xml definiert:
< 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> $openspan class="indent4"> < /span> < 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:
< span class="Code"> < span class= "indent4"> < /span>javax.naming.Context ctx = new javax.naming.InitialContext();
Object beanRef = ctx.lookup("java:comp/env/ejb/MyBean");