Estou tendo o mesmo problema.
Funcionou direitinho para o mesmo endereço nas aulas passadas, aliás, é só copiar e colar, logo, não pode ser erro de digitação (acreditem rsss)
Desliguei o computador e quando fui fazer esse lab, pronto! Erro 404... :/
Segue o código do 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) {
HttpServer server = inicializaServidor();
System.out.println("Server Running! Congrats!!!");
try {
System.in.read();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
server.stop();
}
public static HttpServer inicializaServidor() {
URI uri=URI.create("http://localhost:8080/");
ResourceConfig config=new ResourceConfig().packages("br.com.alura.loja");
HttpServer server=GrizzlyHttpServerFactory.createHttpServer(uri, config);
return server;
}
}
Código do recurso:
package br.com.alura.loja.resource;
import java.net.URI;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import com.thoughtworks.xstream.XStream;
import br.com.alura.loja.dao.CarrinhoDAO;
import br.com.alura.loja.modelo.Carrinho;
//significa /carrinhos
@Path("carrinhos")
public class CarrinhoResource {
@Path("{id}") //significa /id
@GET //diz que o recurso será acessado via GET
@Produces(MediaType.APPLICATION_XML)//diz que o que será produzido é um xml
//@Produces(MediaType.APPLICATION_JSON)//diz que o que será produzido é json
public String busca(@PathParam("id")long id){
Carrinho carrinho=new CarrinhoDAO().busca(id);
return carrinho.toXML();
//return carrinho.toJson();
}
@POST
//@Produces(MediaType.APPLICATION_XML)//removi porque na aula 6 não produzimos mais nada, e sim,
//consumimos
@Consumes(MediaType.APPLICATION_XML)
public Response adiciona(String conteudo){
Carrinho carrinho=(Carrinho) new XStream().fromXML(conteudo);
new CarrinhoDAO().adiciona(carrinho);
URI uri=URI.create("/carrinhos/"+carrinho.getId());
return Response.created(uri).build();
}
@Path("{id}/produtos/{produtoId")
@DELETE
public Response removeProduto(@PathParam("id") long id, @PathParam("produtoId") long produtoId){
Carrinho carrinho=new CarrinhoDAO().remove(produtoId);
carrinho.remove(produtoId);
return Response.ok().build();
}
}