Non utilizzare nomi JNDI locali

Nelle applicazioni WebLogic e JBoss, l'elemento <local-jndi-name> definisce il nome JNDI per la home locale del bean nella struttura ad albero JNDI globale. Viene definito nel file weblogic-ejb-jar.xml o jboss.xml.

WebSphere(R) non consente l'associazione di home locali ai nomi JNDI nella struttura JNDI globale. Al contrario vengono associati nella struttura JNDI del contenitore locale. Per tale motivo, i programmatori devono accedere ai bean enterprise locali utilizzando un riferimento JNDI nello spazio dei nomi locale e non il nome JNDI nello spazio dei nomi globale.

Questa regola viene attivata quando un elemento <local-jndi-name> viene trovato in weblogic-ejb-jar.xml o in jboss.xml. La correzione automatica elabora i file Java, i descrittori di distribuzione e i binding per consentire a questi riferimenti di funzionare su riferimenti a WebSphere.

Vengono elaborati tutti i package correlati all'applicazione in cui viene trovato l'elemento <local-jndi-name>. Se il progetto EAR dell'applicazione non si trova o non è associato al progetto EJB trovato, verrà elaborato solo il progetto EJB. È importante che i progetti correlati siano definiti correttamente.

Quando la correzione automatica è disponibile ed è stata applicata, essa eseguirà la scansione di tutti i file Java dell'applicazione in cui si trova il file <nome-jindi-locale>. Effettua scansioni per le ricerche di contesto diretto al nome JNDI locale, e anche per le ricerche del riferimento EJB a tale nome.

Ad esempio, se il nome JNDI locale è ejb/myBeanLocalHome , i seguenti esempi di codice attivano gli aggiornamenti al codice, ai descrittori di distribuzione e ai bind o a entrambi.

Java lookup examples:

ctx.lookup("ejb/myBeanLocalHome");

ctx.lookup("java:comp/ejb/myBeanLocalHome");

ctx.lookup(myBeanLocalHomeNameVariable);

Il codice Java viene modificato nel primo esempio in ctx.lookup("java:comp/ejb/myBeanLocalHome") in modo che un riferimento EJB. Gli altri due esempi Java restano invariati. In tutti e tre i casi, la correzione automatica aggiornerà i descrittori di distribuzione e i binding del progetto.

Quando per un progetto viene rilevata una ricerca del nome JNDI locale specifico e quando viene utilizzata una variabile e la ricerca non può essere determinata, il file web.xml o il file ejb-jar.xml viene modificato in modo da includere un <ejb-local-ref> per il bean che definisce il nome JNDI locale. Nel caso di un progetto EJB, l'elemento <ejb-local-ref> viene aggiunto ad ogni bean definito in ejb-jar.xml. Nel caso del file web.xml, viene aggiunto un riferimento per il bean che ha definito il nome JNDI locale. Per entrambi, viene aggiunto il nome JNDI <ejb-local-ref> al file di bind del progetto.