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!
quarta-feira, 22 de dezembro de 2010
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário