Boa noite pessoal, estou tentando aprender a desevolver com Jersey, mas tem 2 dias inteiros que tento implementar e atualmente estou travado no seguinte erro: HTTP Status [500] – [Internal Server Error]
vou colocar aqui o meu pom.xml mas ja tentei com varias versões das dependências, tentei colocando só 1, 2, e etc, tentei toda combinação de dependências e versões mas foi em vão:
Essa configuração diz ao jersey onde ele deve procurar por classes anotadas com @Provider e @Path pra que ele possa registrá-las. COmo está a estrutura de pacotes do seu projeto?
Como está declarada sua classe de recurso com uma das anotações supracitadas?
D
DaviResio
Minha estrutura de pacotes esta assim:
minha classe que uso os recursos:
packageapi;importjava.util.List;importjavax.persistence.EntityManager;importjavax.ws.rs.Consumes;importjavax.ws.rs.DELETE;importjavax.ws.rs.GET;importjavax.ws.rs.POST;importjavax.ws.rs.PUT;importjavax.ws.rs.Path;importjavax.ws.rs.PathParam;importjavax.ws.rs.Produces;importjavax.ws.rs.WebApplicationException;importjavax.ws.rs.core.Response;importdao.JPAUtil;importmodel.ModuloModel;@Path("/curso")publicclassModuloService{privateEntityManagermanager=JPAUtil.getEntityManager();@GET@Path("/teste")@Produces("application/json")publicStringteste(){return"Testando deste Jeito";}@GET@Path("/listar")@Produces("application/json")publicList<ModuloModel>listar(){try{List<ModuloModel>modulos=manager.createQuery("from Modulo",ModuloModel.class).getResultList();manager.close();returnmodulos;}catch(Exceptione){thrownewWebApplicationException(500);}}@GET@Path("/buscar/{id}")@Produces("application/json")publicModuloModelbuscar(@PathParam("id")intid){try{ModuloModelmoduloModel=manager.find(ModuloModel.class,id);manager.close();returnmoduloModel;}catch(Exceptione){e.printStackTrace();}returnnull;}@POST@Path("/cadastrar")@Consumes("application/json")publicResponsecadastrar(ModuloModelmoduloModel){try{manager.getTransaction().begin();manager.persist(moduloModel);manager.getTransaction().commit();manager.close();returnResponse.status(200).entity("Cadastro Realizado com Sucesso").build();}catch(Exceptione){e.printStackTrace();}returnnull;}@PUT@Path("/alterar")@Consumes("application/json")publicResponsealterar(ModuloModelmoduloModel){try{manager.getTransaction().begin();manager.merge(moduloModel);manager.getTransaction().commit();manager.close();returnResponse.status(200).entity("cadastro alterado com sucesso").build();}catch(Exceptione){e.printStackTrace();}returnnull;}@DELETE@Path("/excluir/{id}")publicResponseexcluir(@PathParam("id")intid){try{ModuloModelmoduloModel=manager.find(ModuloModel.class,id);manager.getTransaction().begin();manager.remove(moduloModel);manager.getTransaction().commit();manager.close();returnResponse.status(200).entity("cadastro excluido com sucesso").build();}catch(Exceptione){e.printStackTrace();}returnnull;}}
J
JulioCesarSF1 like
Tenta mudar para 2.26-b03 . Aqui eu estava com problemas na b04.
Aparentemente seu package ta errado.
Tem que ser firstapi.api e não api.
D
DaviResio
alterei a versão mas o problema persiste.
O package declarado na classe foi gerado automaticamente pelo eclipse ao criar a classe. Eu mudei o pagckage para firstapi.api mas o eclipse acusou erro, a solução dada pelo eclipse era criar um package chamado firstapi e colocar o package api dentro. no caso firstapi era o nome do projeto.
De qualquer forma o erro ainda continua, eu literalmente nao sei mais oque fazer…
De acordo com o print que vc colocou, firstapi é o seu contexto e ele não faz parte do pacote. Da forma que vc configurou, seria necessário ter um nível de diretório superior ao api com o nome firstapi.
Se não der certo, altere o param-name para com.sun.jersey.config.property.packages
Pessoal muito obrigado mesmo pela ajuda de vocês, consegui rodar o código, para isso tive que adicionar algumas dependências e alterei a versão de algumas que eu estava usando no final ficou assim: