Acessar EJB Local via lookup

7 respostas
D

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

7 Respostas

R

tente usar o @Local no EJB3

O

Existe aquela forma com lookup no braço:

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

odair.bonin:
Existe aquela forma com lookup no braço:

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

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?

O

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 =)

T

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 =)

E se for glassfish?

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

Não funcionou. Alguma outra forma?

R

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");
H

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

Criado 21 de agosto de 2009
Ultima resposta 15 de jun. de 2011
Respostas 7
Participantes 5