Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Erro ao tentar injetar dependencia em aplição REST

Pessoal, estou acompanhando o curso e tentando fazer alguns experimentos. Estou utilizando Jersey para criar um endpoint em REST porém quando eu tento injetar a dependencia na classe REST ocorre o seguinte erro, não sei se estou usando o @Produces corretamente. o erro é: There was no object available for injection at SystemInjecteeImpl(requiredType=JogoService,parent=JogoRest,qualifiers={},position=-1,optional=false,self=false,unqualified=null,1240481235)

minha classe rest:

@Path("/jogo")
@RequestScoped
public class JogoRest {

    @Inject
    private JogoService jogoService;

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public String jogo() {
        return jogoService.devolveJsonJogo();
    }

    @POST
    @Produces(MediaType.APPLICATION_JSON)
    public void salva() {        
    }
}

minha classe service:

@Produces
public class JogoService {

    private PersonalizedEntityManagerFactory factory;
    private EntityManager entityManager;

    @Inject
    public JogoService(PersonalizedEntityManagerFactory factory) {
        this.factory = factory;
        entityManager = factory.getEntityManager();

    }

    public String devolveJsonJogo() {
        Jogo jogo = new Jogo();
        jogo.setDescricao("Jogo The Witcher");
        jogo.setNome("The Witcher");
        jogo.setPlataform(Plataforma.PLAYSTATION);

        Gson gson = new Gson();        
        return gson.toJson(jogo);

    }
}
3 respostas

segue stack do erro: https://gist.github.com/williamfenu/5f1f70fb6e9b5070555e6dfbeee80975

o @Produces tem que ser anotado em um método que sabe criar uma instância de JogoService

solução

Opa, consegui resolver adicionando a seguinte dependencia no meu Maven:

org.glassfish.jersey.ext.cdi jersey-cdi1x-servlet 2.29