Galera estou fazendo um aplicativo em um trabalho da faculdade em que estou utilizando as tecnologias citadas no assunto deste tópico.
Porém estou tendo um problema para fazer a Dependency Injection de um SessionBean em minhas classes, com a annotation @EJB.
Já tentei fazer no managed bean e não vai.
Criei um classe de testes(com main) e também não funciona.
Simplesmente não acha o EJB (NameNotFoundException).
Tentei fazendo um lookup com ServiceLocator mas não estou conseguindo configurar Context. Se dexo padrão (Context ctx = new InitialContext()) ele diz que tenho que inicializar o contexto.
Então cara, eu já estou fazendo isso.
Abaixo segue o código.
Interface Remota:
@Remote
public interface ClinicaVeterinaria {
//corpo da interface
}
Interface Local:
@Local
public interface ClinicaVeterinariaLocal {
//corpo da interface local
}
SessionBean:
@Stateless(name="ClinicaVeterinaria")
public class ClinicaVeterinariaBean implements ClinicaVeterinaria, ClinicaVeterinariaLocal {
//corpo do sessionbean
}
Classe de teste:
public class TesteEJB {
@EJB
private static ClinicaVeterinaria clinicaVeterinaria;
public static void main(String args[]) {
Endereco end = new Endereco();
end.setLogradouro("Rua");
end.setNumero(199);
end.setBairro("Bairro");
end.setCidade("Cidade");
end.setEstado("SP");
end.setCep("100000-000");
clinicaVeterinaria.incluirNovo(end);
}
}
Quando eu rodo a classe da NullPointerException na chamada do método clinicaVeterinaria.incluirNovo(end); pois não retorna o EJB.
Quando eu rodo a aplicação e faço a DI pelo ManagedBean da uma javax.naming.NameNotFoundException.