quarta-feira, 22 de dezembro de 2010

@EJB não funciona

A injeção via @EJB só funciona em classes gerenciadas pelo container EJB, em outros casos é preciso fazer lookup:

Tive esse problema pois no projeto que estou agora fiz uma camada de delegates. A parte de telas do meu projeto não acessa diretamente meus serviços.. acessa um delegate que esse sim acessa meus serviços.

Como meu delegate não é uma classe gerenciada pelo container EJB tive que fazer lookup:

/////////////////
public class AaaDelegate {

private AaaService aaaService;

public AaaDelegate() {
this.aaaService = (AaaService) this.lookup(AaaService.JNDI);
}

public Object lookup(String jndi) {

try {
Context context = new InitialContext();
return context.lookup(jndi);
} catch (NamingException e) {
e.printStackTrace();
}

return null;
}

///////////////

@Local
public interface AaaService {

public static String JNDI = "aaa.AaaService";

}

/////////////

@Stateless
@LocalBinding(jndiBinding = AaaService.JNDI)
public class AaaServiceImpl implements AaaService {

}

////////////


Vaaleu!

Nenhum comentário:

Postar um comentário