Não usar os nomes da JNDI local

No WebLogic e em aplicativos do JBoss, o elemento <local-jndi-name> define o nome da JNDI para o home local do bean na árvore da JNDI global. Ele é definido no arquivo weblogic-ejb-jar.xml ou jboss.xml.

O WebSphere(R) não permite o mapeamento de homes locais em nomes da JNDI na árvore da JNDI global. Em vez disso, eles são mapeados na árvore da JNDI do contêiner local. Por essa razão, os programadores devem acessar os enterprise beans locais utilizando uma referência da JNDI no espaço de nomes local e não o nome da JNDI no espaço de nomes global.

Essa regra é acionada quando um elemento <local-jndi-name> é localizado no weblogic-ejb-jar.xml ou no jboss.xml. Há uma correção rápida disponível no scanner de origem. A correção rápida processa arquivos Java, descritores de implementação e ligações para ativar essas referências para funcionarem no WebSphere.

Todos os pacotes relacionados ao aplicativo nos quais o elemento <local-jndi-name> é localizado são processados. Se o seu projeto EAR do aplicativo não for localizado ou não estiver associado ao projeto EJB localizado, apenas o projeto EJB será processado. É importante ter seus projetos relacionados definidos corretamente.

Quando você executa a correção rápida no scanner de origem, ela varre todos os arquivos Java no aplicativo em que o <local-jndi-name> é localizado. Ela faz a varredura para encontrar consultas de contexto direto para o nome da JNDI local e por consultas da referência EJB a esse nome.

Por exemplo, se o nome da JNDI local for ejb/myBeanLocalHome, os seguintes exemplos de código acionam a atualizam no código, nos descritores de implementação e nas ligações, ou em ambos.

Exemplos de consulta do Java:

ctx.lookup("ejb/myBeanLocalHome");

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

ctx.lookup(myBeanLocalHomeNameVariable);

O código Java é alterado no primeiro exemplo para ctx.lookup("java:comp/ejb/myBeanLocalHome") para que um consulta de referência EJB seja feita. Os outros dois exemplos Java permanecem inalterados. Em todos os três casos, a correção rápida atualiza os descritores de implementação e de ligações para o projeto.

Quando uma consulta para o nome da JDNI local específico for detectada para um projeto e quando uma variável for utilizada e a procura não puder ser determinada, o arquivo web.xml ou ejb-jar.xml será modificado para incluir um <ejb-local-ref> ao bean que definiu o nome da JNDI local. No caso de um projeto EJB, o elemento <ejb-local-ref> é incluído em cada bean que está definido no ejb-jar.xml. No caso do arquivo web.xml, uma referência é incluída no bean que definiu o nome da JNDI local. Para ambos os casos, o nome da JNDI <ejb-local-ref> é incluído no arquivos de ligações para o projeto.