Boa tarde pessoal,
Criei um projeto básico usando o Seam. Esse projeto é o que é criado pelo plugin do jboss tools.
Então eu tenho um projeto web, um projeto ejb, um ear e um projeto de teste.
Criei minhas entidades e os meus EJBs no projeto EJB.
E quando criei managedBeans do projeto web, teto acessar os EJBs por eles, mas o erro
"Could not instantiate Seam component" me é apresentado.
Já tentei anotar os EJB com @Name, já tentei inicialos com @In e @EJB e nada funciona…
Alguém pode me dar uma ajuda? Achei aqui no forum algumas pessoas que já passaram por
esses problemas, mas não achei solução…
VLW!
Trabalho com jboss seam, se você puder postar um trecho de código de onde é lançada a exception posso te ajudar…
Até mais…
Vamos lá então, logo abaixo eu tenho o meu EJB que é acessado pelo meu componentes Seam mais a baixo:
@Stateful
@Name("usuarioEJB")
public class UsuarioEJB implements IUsuarioLocal {
@PersistenceContext
private EntityManager entityManager;
public void inserir(Usuario usuario) {
entityManager.persist(usuario);
}
public Usuario alterar(Usuario usuario) {
return entityManager.merge(usuario);
}
public void excluir(Usuario usuario) {
entityManager.remove(usuario);
}
public Usuario consultarPorId(Usuario usuario) {
return entityManager.find(Usuario.class, usuario.getId());
}
@Remove
@Destroy
public void cleanUp() { }
}
Esse é o meu componentes Seam que acesso o meu EJB a cima:
@Name("usuarioMB")
@Scope(ScopeType.CONVERSATION)
public class UsuarioMB implements Serializable {
private static final long serialVersionUID = 2162523338663188098L;
private Usuario usuario;
@In
private UsuarioEJB usuarioEJB;
public String inserir() {
usuarioEJB.inserir(usuario);
setUsuario(null);
return null;
}
public Usuario alterar() {
setUsuario(null);
return null;
}
/*
* Getters e Setters
***/
@Begin(join=true)
public Usuario getUsuario() {
if(this.usuario == null) {
this.usuario = new Usuario();
}
return usuario;
}
public void setUsuario(Usuario usuario) {
this.usuario = usuario;
}
}
O Erro "Could not instantiate Seam component: usuarioEJB " me é apresentado ao tentar startar o servidor jboss 5.
VLW PELA ATENÇÃO!
Então, eu uso de outra forma, outra vez posso te passar.
Mas olhando rapidamente tenta fazer o seguinte:
@In(create = true) private UsuarioEJB usuarioEJB;
O seam trabalha com um sistema de bijeção, quando voce da somente um @In quer dizer que eu outra classe voce ja criou e fez um @Out, pode ser isto, testa e me diz se funcionou.
Se não vou olhar de novo o código…
Até mais.
Carvalho;
Bom o erro que mencionei antes parou de acontecer. Contudo, um outro está ocorrendo: “coud not set fild value by reflection UsuarioEJB”.
Somente fiz a alteraçaõ que pediu.
Já passou por esse?