Tenho um sistema já em utilização onde pretendo implementar um serviço por webservice para consulta de produtos. Coisa simple: o servico recebe o ID e retorna o nome do produto.
O problema é que nesse webservice o BO do produto para chamar o metodo buscaPorID (já usado em várias partes do sistema) e, ao tentar injetá-lo, ele vem nulo e nao estou achando maneira de fazer isso funcionar.
Aqui vai o Webservice:
@Stateless
@WebService()
public class ProdutoWebWS {
@In(create=true)
ProdutoWebBO produtoWebBO;
@WebMethod()
public String buscaNomeProduto(Long id) {
if (id==null){
return "ID do produto deve ser informado";
}
ProdutoWeb obj;
try {
// NESTA LINHA RECEBO O NULLPOINTER EXCEPTION PORQUE O produtoWebBO está sendo injetado como null
obj = produtoWebBO.buscaPorId(id);
if (obj==null){
return "Não existe produto com o ID "+id;
}
return "Codigo: "+obj.getCodigoFabricante()+" "+obj.getNome();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return "ERRO: ID "+id+" ==> "+e.getLocalizedMessage();
}
}
}
Meu BO, já citado acima, que resumi aqui, da classe ProdutoWeb já é utilizado em "n" partes do sistema, e pretendo utilizá-lo no webmethod é este:
@AutoCreate
@Name("produtoWebBO")
@Scope(ScopeType.APPLICATION)
@Synchronized
public class ProdutoWebBO {
public ProdutoWeb buscaPorId(Long idPesquisa) throws Exception {
ProdutoWeb retorno = getEntityManager().createNamedQuery("produtoWeb.buscaPorId").setParameter("id", idPesquisa).getSingleResult;
return retorno;
}
}
Onde posso estar errando, amigos?
Agradeço qualquer ajuda.