4
respostas

Dúvida referente a utilização de webservices com JPA

Buenas,estou fazendo uma disciplina na faculdade que envolve o trabalho da JPA com webservices,entretanto estou com muitas dificuldades em instalar o ambiente que o mesmo deve ser feito pelo servidor tomcat,já que o Maven o proxy bloqueia,sendo assim utilizaria o netbeans.Executando todos os passos de instalação da o erro 500 ao testar no postman.

HTTP Status 500 – Internal Server Error
Type Exception Report

Message java.lang.NullPointerException

Description The server encountered an unexpected condition that prevented it from fulfilling the request.

Exception

javax.servlet.ServletException: java.lang.NullPointerException
    org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:392)
    org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:382)
    org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:345)
    org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:220)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
Root Cause

java.lang.NullPointerException
    ws.ClienteWS.getClientes(ClienteWS.java:43)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    java.lang.reflect.Method.invoke(Method.java:498)
    org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81)
    org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:151)
    org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:171)
    org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.jorg.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:104)
    org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:402)
    org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:349)
    org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:106)
    org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:259)
    org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)
    org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)
    org.glassfish.jersey.internal.Errors.process(Errors.java:315)
    org.glassfish.jersey.internal.Errors.process(Errors.java:297)
    org.glassfish.jersey.internal.Errors.process(Errors.java:267)
    org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:318)
    org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:236)
    org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1010)
    org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:373)
    org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:382)
4 respostas

Oi Felipe,

a unica coisa que dá para saber pelo stacktrace é que acontece uma NullPointerException no linha 43 no método getClientes da classe ClienteWS:

ws.ClienteWS.getClientes(ClienteWS.java:43)

O que acontece na linha 43?

abs

Buenas


/**
 * REST Web Service
 *
 * @author felipe
 */
@Path("cliente")
public class ClienteWS {


    private ClienteRN clienteRn; 
    @Context
    private UriInfo context;
    public ClienteWS() {
       clienteRn=new ClienteRN();
    }


   @GET
    @Produces(MediaType.APPLICATION_JSON)
    public List<Cliente> getClientes() {
        return clienteRn.imprimir();
    }


}

Felipe, essa stacktrace que vc postou está completa?

Outra coisa, cole aqui a classe ClienteRn, por favor, pq aparentemente o erro está sendo propagado a partir dela.

Olá,eu consegui resolver o erro,só não entendi muito bem o por que disso. Como tu falou ,o erro está na classe Cliente Rn eu fiz duas alterações do código acima e do atual 1- Troquei de mysql para postgresql 2-Mudei o metodo de imprimir(provavelmente foi isto que resolveu)

Ambos métodos funcionam se for utilizar JPA sem webservices que nem é mostrado no curso de JPA,entretanto se tu for utilizar os dois em webservices um deles ocasiona os erros que eu pedi ajuda para ajudar a solucionar.

Listar que funciona em webservices:

public List<Cliente> imprimir() {
       Conexao con = new Conexao();
        EntityManager em = con.getEntidade();
        em.getTransaction().begin();
        String jpql="select c from Cliente c";
        Query query = em.createQuery(jpql);
        List<Cliente> listaClientes = query.getResultList();
        em.getTransaction().commit();
        return (listaClientes);

    }

Listar que não funciona em webservices: :

public List<Cliente> imprimir() {
        Conexao con = new Conexao();
        EntityManager em = con.getEntidade();
        em.getTransaction().begin();
        Query query = em.createQuery("from Cliente");
        List<Cliente> listaClientes = query.getResultList();
        System.out.println("Categorias:");
        em.getTransaction().commit();
        return (listaClientes);

    }

Não entendi por que de uma não funciona e outra funcionar mas felizmente ta rodando o webservices ^^