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)

Servidor Grizzly não funciona

Bom dia!

Venho novamente solicitar ajuda, pois meu servidor Grizzly não sobe. Ao rodar a classe Servidor a mesma executa com sucesso e o log de start apresenta a mensagem "Servidor rodando", mas não consigo acessar as URI's pelos browsers: IE, Firefox ou chrome com mensagens de página não encontrada ou página em branco, sem informações.

Agradeço antecipadamente a quem puder me ajudar

Segue abaixo código para análise

Classe Servidor

package br.com.alura.loja;

import java.io.IOException;
import java.net.URI;

import org.glassfish.grizzly.http.server.HttpServer;
import org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpServerFactory;
import org.glassfish.jersey.server.ResourceConfig;

public class Servidor {

    public static void main(String[] args) throws IOException {

        ResourceConfig config = new ResourceConfig().packages("br.com.alura.loja");    
        URI uri = URI.create("http://localhost:8080/");            
        HttpServer server = GrizzlyHttpServerFactory.createHttpServer(uri, config);

        System.out.println("Servidor rodando");
        System.in.read();
        server.start();            

    }

}

Mensagem de Log apresentada no console do eclipse

jan 26, 2017 10:38:26 AM org.glassfish.jersey.server.ApplicationHandler initialize
INFORMAÇÕES: Initiating Jersey application, version Jersey: 2.5 2013-12-18 14:27:29...
jan 26, 2017 10:38:27 AM org.glassfish.grizzly.http.server.NetworkListener start
INFORMAÇÕES: Started listener bound to [localhost:8080]
jan 26, 2017 10:38:27 AM org.glassfish.grizzly.http.server.HttpServer start
INFORMAÇÕES: [HttpServer] Started.
Servidor rodando

Classe CarrinhoResource

package br.com.alura.loja.resource;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import br.com.alura.loja.dao.CarrinhoDAO;
import br.com.alura.loja.modelo.Carrinho;

@Path ("carrinho")
public class CarrinhoResource {

    @GET
    @Produces(MediaType.APPLICATION_XML)
    public String busca(){

        Carrinho carrinho = new CarrinhoDAO().busca(11L);

        return carrinho.toXML();
    }

}

Classe Carrinho

package br.com.alura.loja.modelo;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;

import com.google.gson.Gson;
import com.thoughtworks.xstream.XStream;

public class Carrinho {

    private List<Produto> produtos = new ArrayList<Produto>();
    private String rua;
    private String cidade;
    private long id;

    public Carrinho adiciona(Produto produto) {
        produtos.add(produto);
        return this;
    }

    public Carrinho para(String rua, String cidade) {
        this.rua = rua;
        this.cidade = cidade;
        return this;
    }

    public Carrinho setId(long id) {
        this.id = id;
        return this;
    }

    public String getRua() {
        return rua;
    }

    public void setRua(String rua) {
        this.rua = rua;
    }

    public void setCidade(String cidade) {
        this.cidade = cidade;
    }

    public long getId() {
        return id;
    }

    public void remove(long id) {
        for (Iterator iterator = produtos.iterator(); iterator.hasNext();) {
            Produto produto = (Produto) iterator.next();
            if (produto.getId() == id) {
                iterator.remove();
            }
        }
    }

    public void troca(Produto produto) {
        remove(produto.getId());
        adiciona(produto);
    }

    public void trocaQuantidade(Produto produto) {
        for (Iterator iterator = produtos.iterator(); iterator.hasNext();) {
            Produto p = (Produto) iterator.next();
            if (p.getId() == produto.getId()) {
                p.setQuantidade(produto.getQuantidade());
                return;
            }
        }
    }

    public List<Produto> getProdutos() {
        return produtos;
    }

    public String toXML() {
        return new XStream().toXML(this);
    }

}
2 respostas
solução

Bom dia Vicente. Não aparece mensagem de erro pelo visto né? apenas 404?

Pode verificar por favor em que porta está subindo? porque acho que a padrão do Grizzly nao é 8080

Bom dia, Guilherme!

Foi um erro de iniciante o meu CarrinhoResouce estava anotado com @Path ("carrinho") e eu estava chamando no browser carrinhos, também o meu carrinhoDAO tinha o setId(1L) enquanto no método CarrinhoDAO().busca(11L) eu estava passando o valor 11L.

Perdão, foi mallll... rsrsrs...

Atte., Vicente,