Error 500 in java webservices when testing on postman

0

I've been trying to solve this problem for a long time, I set up my environment about 3 times, but at the time of testing, postman always gives 500, I think my problem is not in the entity or in DAO, since I tested in eclipse via desktop, however when doing web design in netbeans creating the server, persistence class, classes as entity, using @XmlRootElement annotation even then the problem continues, I will send the code of what possibly is problem, and the error Ws Configuration

package ws;

import java.util.Set;
import javax.ws.rs.core.Application;

/**
 *
 * @author felipe
 */
@javax.ws.rs.ApplicationPath("api")
public class ApplicationConfig extends Application {

    @Override
    public Set<Class<?>> getClasses() {
        Set<Class<?>> resources = new java.util.HashSet<>();
        addRestResourceClasses(resources);
        return resources;
    }

    /**
     * Do not modify addRestResourceClasses() method.
     * It is automatically populated with
     * all resources defined in the project.
     * If required, comment out calling this method in getClasses().
     */
    private void addRestResourceClasses(Set<Class<?>> resources) {
        resources.add(ws.ClienteWS.class);
    }

}

Class ws

    package ws;

import entidades.Cliente;
import java.util.List;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.UriInfo;
import javax.ws.rs.Consumes;
import javax.ws.rs.Produces;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PUT;
import javax.ws.rs.core.MediaType;
import rn.ClienteRN;

/**
 * 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();
    }


}

Postman Path: link

Connection class:

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

    package util;

    import javax.persistence.EntityManager;
    import javax.persistence.EntityManagerFactory;
    import javax.persistence.Persistence;

    /**
     *
     * @author felipe
     */
    public class Conexao {

         private static EntityManagerFactory emf = Persistence.createEntityManagerFactory("Sistema_VendasPU");

        public EntityManager getEntidade() {
            return emf.createEntityManager();

    //
        }
    }

RN Client Type of a DAO

    package rn;

import entidades.Cliente;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import util.Conexao;

public class ClienteRN {

    public Cliente inserir(Cliente cliente) {
        Conexao con = new Conexao();
        EntityManager em = con.getEntidade();
        em.getTransaction().begin();
        em.persist(cliente);
        em.getTransaction().commit();
        em.close();
        return cliente;

    }

Client Entity:

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package entidades;

import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.xml.bind.annotation.XmlRootElement;

/**
 *
 * @author felipe
 */
@XmlRootElement
@Entity
public class Cliente implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private String nome;
    private String telefone;

    public Cliente() {
    }

    public Cliente(String nome, String telefone) {
        this.nome = nome;
        this.telefone = telefone;
    }


    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getTelefone() {
        return telefone;
    }

    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }


    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (id != null ? id.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Cliente)) {
            return false;
        }
        Cliente other = (Cliente) object;
        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "entidades.Cliente[ id=" + id + " ]";
    }

}

Error

  HTTP Status 500 – Internal Server Error
    Type Exception Report

    Message org.glassfish.jersey.server.ContainerException: java.lang.NoClassDefFoundError: Could not initialize class util.Conexao

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

    Exception

    javax.servlet.ServletException: org.glassfish.jersey.server.ContainerException: java.lang.NoClassDefFoundError: Could not initialize class util.Conexao
        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

    org.glassfish.jersey.server.ContainerException: java.lang.NoClassDefFoundError: Could not initialize class util.Conexao
        org.glassfish.jersey.servlet.internal.ResponseWriter.rethrow(ResponseWriter.java:249)
        org.glassfish.jersey.servlet.internal.ResponseWriter.failure(ResponseWriter.java:231)
        org.glassfish.jersey.server.ServerRuntime$Responder.process(ServerRuntime.java:436)
        org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:265)
        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)
        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.NoClassDefFoundError: Could not initialize class util.Conexao
        rn.ClienteRN.imprimir(ClienteRN.java:27)
        ws.ClienteWS.getClientes(ClienteWS.java:40)
        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.java:195)
        org.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)
    
asked by anonymous 25.04.2018 / 19:43

1 answer

0

I changed the database to use postgresql and I arranged a method of listing that was what was giving problem

Right version of method list

 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);

}

Wrong version

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);

    }

The strange thing is that both worked without webservices but in web services only works using jpql

    
26.04.2018 / 00:08