Acessar EJB Local via lookup

Pessoal

Existe alguma maneira de acessar uma interface local de um EJB através de lookup e não usando a anotação @EJB ?

Pesquisei isso e, dentre as respostas que achei, nenhuma funcionou.

Isto é possíve? Se sim, como?

Obrigado

tente usar o @Local no EJB3

Existe aquela forma com lookup no braço:

ctx = new javax.naming.InitialContext();
ExemploBOLocal local = (ExemploBOLocal) ctx.lookup(ExemploBOLocal.JNDI_LOCALNAME);

[quote=odair.bonin]Existe aquela forma com lookup no braço:

ctx = new javax.naming.InitialContext(); ExemploBOLocal local = (ExemploBOLocal) ctx.lookup(ExemploBOLocal.JNDI_LOCALNAME); [/quote]

Neste caso, como que eu devo fazer?

Digamos que eu tenha o seguinte EJB:

@Local
public interface TesteLocal{
   public String getTeste();
}

@Stateless(name="Teste", mappedName="TesteBean")
public TesteBean implements TesteLocal {
   public String getTeste(){
      return "Teste";
   }
}

Neste caso, qual seria o nome que eu teria que dar o lookup?

Então, depende do servidor que voce esta utilizando.

Se estiver usando JBOSS, acredique q seja:

TesteLocal local = (TesteLocal) ctx.lookup("TesteBean/local");

Tenta isso ai =)

Então, depende do servidor que voce esta utilizando.

Se estiver usando JBOSS, acredique q seja:

TesteLocal local = (TesteLocal) ctx.lookup("TesteBean/local");

Tenta isso ai =)
[/quote]

E se for glassfish?

TesteLocal local = (TesteLocal) ctx.lookup("java.comp/env/TesteBean");

Não funcionou. Alguma outra forma?

tente…

no lugar disto java.comp/env/TesteBean
passar o full qualified name da classe

   1. TesteLocal local = (TesteLocal) ctx.lookup("java.comp/env/TesteBean");  

Oi,

Cada servidor de aplicação tem uma forma de consultar a arvore JNDI onde tem os nomes
dos recursos implantados (no seu caso seu EJB).

Desta maneira, você pode fazer um lookup DIRETO neste nome:

context.lookup("nomedorecurso")

Mas esta é uma forma NÃO portável.
Desta maneira, uma outra forma é criar um mapeamento no descritor da aplicação
de um nome lógico para o nome físico do recurso.

e fazer o lookup sobre o nome lógico utilizando

context.lookup("java:comp/env/nomelogico")

Você pode encontrar mais detalhes e exemplos nos links abaixo:


Espero ter ajudado,

Roger