RESTfull

6 respostas
Jose_Jorge_Parrilla

Bom dia pessoal!

Estou desenvolvendo um projeto no Eclipse Jee Oxigen que tem um serviço RESTfull, na estrutura criei uma package nome:service e dentro dele uma classe nome:FabricanteService que ficou assim: https://snag.gy/VnTWGA.jpg, na package Util criei uma classe ResourceConfig que ficou assim: https://snag.gy/CpxsAb.jpg, o meu pom.xml eu configurei assim:https://snag.gy/lThXzs.jpg, mas esta retornando este erro no navegador:https://snag.gy/JyGSqd.jpg.

Eu sou novo no RESTfull fusei no forum e não encontri nada parecido com a minha dúvida!, alguém poderia me ajudar a entender o porque deste erro???, eu não sei se teria que configurar mais alguma coisa no web.xml ou se falta algo no meu pom.xml.

Desde já agradeço!

6 Respostas

Rodrigo_Void

Posta os códigos aqui em texto, não imagens.

Jose_Jorge_Parrilla

Vou tentar sou novo aqui…

/FabricanteService/

package br.com.jjpsistemas.drogarias.service;

import java.util.List;

import javax.ws.rs.DELETE;

import javax.ws.rs.GET;

import javax.ws.rs.POST;

import javax.ws.rs.PUT;

import javax.ws.rs.Path;

import javax.ws.rs.PathParam;

import com.google.gson.Gson;

import br.com.jjpsistemas.drogarias.dao.FabricanteDAO;
import br.com.jjpsistemas.drogarias.domain.Fabricante;

<a class="mention" href="/u/path">@Path</a>(“fabricante”)

public class FabricanteService {

// <a href="http://127.0.0.1:8080/Drogarias/rest/fabricante">http://127.0.0.1:8080/Drogarias/rest/fabricante</a>

<a class="mention" href="/u/get">@GET</a>

public String listar() {

FabricanteDAO fabricanteDAO = new FabricanteDAO();

List fabricantes = fabricanteDAO.listar(“descricao”);
Gson gson = new Gson();
	String json = gson.toJson(fabricantes);
	
	return json;
}

// http://127.0.0.1:8080/Drogarias/rest/fabricante/{codigo}
// http://127.0.0.1:8080/Drogarias/rest/fabricante/10
@GET
@Path("{codigo}")
public String buscar(@PathParam("codigo") Long codigo) {
	FabricanteDAO fabricanteDAO = new FabricanteDAO();
	Fabricante fabricante = fabricanteDAO.buscar(codigo);
	
	Gson gson = new Gson();
	String json = gson.toJson(fabricante);
	
	return json;
}

// http://127.0.0.1:8080/Drogarias/rest/fabricante
@POST
public String salvar(String json) {
	Gson gson = new Gson();
	Fabricante fabricante = gson.fromJson(json, Fabricante.class);
	
	FabricanteDAO fabricanteDAO = new FabricanteDAO();
	fabricanteDAO.merge(fabricante);
	
	String jsonSaida = gson.toJson(fabricante);
	return jsonSaida;
}

@PUT
public String editar(String json) {
	Gson gson = new Gson();
	Fabricante fabricante = gson.fromJson(json, Fabricante.class);
	
	FabricanteDAO fabricanteDAO = new FabricanteDAO();
	fabricanteDAO.editar(fabricante);
	
	String jsonSaida = gson.toJson(fabricante);
	return jsonSaida;
}

@DELETE
public String excluir(String json) {
	Gson gson = new Gson();
	Fabricante fabricante = gson.fromJson(json, Fabricante.class);
	
	FabricanteDAO fabricanteDAO = new FabricanteDAO();
	fabricante = fabricanteDAO.buscar(fabricante.getCodigo());
	fabricanteDAO.excluir(fabricante);
	
	String jsonSaida = gson.toJson(fabricante);
	return jsonSaida;
}

}

/Util - ResourceConfig/

package br.com.jjpsistemas.drogarias.util;

import javax.ws.rs.ApplicationPath;

import org.glassfish.jersey.server.ResourceConfig;

//http://localhost:8080/Drogarias/rest

@ApplicationPath(rest)

public class DrogariasResourceConfig extends ResourceConfig {

public DrogariasResourceConfig() {

packages(br.com.jjpsistemas.drogarias.service);

}

}

/pom.xml/


4.0.0
br.com.jjpsistemas.drogarias
Drogarias
1.0
war

<!-- Codificação dos caracteres -->
<properties>
	<project.build.sourceEcoding>UTF-8</project.build.sourceEcoding>
</properties>

<!-- Parâmetros de execução -->
<build>
	<!-- Nome do projeto empacotado -->
	<finalName>Drogarias</finalName>

	<!-- Plugins -->
	<plugins>
		<!-- Compilador -->
		<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-compiler-plugin</artifactId>
			<version>3.3</version>
			<configuration>
				<source>1.8</source>
				<target>1.8</target>
			</configuration>
		</plugin>
	</plugins>
</build>

<!-- Reposotórios -->
<repositories>
	<!-- Primefaces -->
	<repository>
		<id>prime-repo</id>
		<name>PrimeFaces Maven Repository</name>
		<url>http://repository.primefaces.org</url>
		<layout>default</layout>
	</repository>
</repositories>

<!-- Dependencias -->
<dependencies>
	<!-- Hibernate -->
	<dependency>
		<groupId>org.hibernate</groupId>
		<artifactId>hibernate-core</artifactId>
		<version>4.3.3.Final</version>
	</dependency>

	<!-- 5.2.10.Final -->
	<!-- >4.3.3.Final</ -->

	<dependency>
		<groupId>mysql</groupId>
		<artifactId>mysql-connector-java</artifactId>
		<version>5.1.42</version>
	</dependency>

	<!--JUnit -->
	<dependency>
		<groupId>junit</groupId>
		<artifactId>junit</artifactId>
		<version>4.12</version>
		<!-- <scope>test</scope> -->
	</dependency>

	<!-- JSF -->
	<dependency>
		<groupId>org.glassfish</groupId>
		<artifactId>javax.faces</artifactId>
		<version>2.2.12</version>
		<!-- <scope>test</scope> -->
	</dependency>

	<!-- Primefaces -->
	<dependency>
		<groupId>org.primefaces</groupId>
		<artifactId>primefaces</artifactId>
		<version>6.1</version>
	</dependency>

	<!-- Primefaces Themes -->
	<dependency>
		<groupId>org.primefaces.themes</groupId>
		<artifactId>all-themes</artifactId>
		<version>1.0.10</version>
	</dependency>

	<!-- Ominifaces -->
	<dependency>
		<groupId>org.omnifaces</groupId>
		<artifactId>omnifaces</artifactId>
		<version>1.14.1</version>
	</dependency>

	<!-- Servlet -->
	<dependency>
		<groupId>javax.servlet</groupId>
		<artifactId>javax.servlet-api</artifactId>
		<version>4.0.0</version>
		<scope>provided</scope>
	</dependency>

	<!-- Jersey Container Servlet -->
	<dependency>
		<groupId>org.glassfish.jersey.containers</groupId>
		<artifactId>jersey-container-servlet</artifactId>
		<version>2.26-b09</version>
	</dependency>

	<!-- GSon -->
	<dependency>
		<groupId>com.google.code.gson</groupId>
		<artifactId>gson</artifactId>
		<version>2.8.1</version>
	</dependency>

</dependencies>

erro no navegador:https://snag.gy/JyGSqd.jpg.

Esta bom assim?

Rodrigo_Void

Melhorou, mas faltou o erro. :smile:

Jose_Jorge_Parrilla

Achei que a imagem seria melhor mas lá vai:

Status HTTP 404 - Não encontrado

Descrição: O servidor de origem não encontrou uma representação atual para o recurso de destino ou não está disposto a divulgar aquele que existe

gustavolavi

Cara normalmente esse erro é erro de configuração de Servlet.
a muito tempo atras eu tb tentei fazer uma api com jersey e tb tive esse erro, e não consegui resolver na época.(já faz um tempo, era quando eu estava tentando aprender java).

Hoje em dia eu só uso RESTeasy.
com RESTeasy nunca tive dificuldade de trabalhar. e nunca tive erros desse tipo.

Jose_Jorge_Parrilla

Boa tarde!

Obrigado pela sua resposta!, olha não tive problemas com o Servlet até agora, foi só eu inventar de implementar uma classe como serviço com Servlet Container 2.26.b09 para testar a funcionalidade porque me foi dito que seria melhor para mim no futuro para preservar o código.

Eu não sei se é um problema de versão, tentei mudar a versão mas não resolveu. vou isolar esta classe e tratar separadamente do projeto até conseguir resolver.

Enquanto não resolvo este caso vou fusar nesses RESTeasy se tiver mais alguma recomendação que achar conveniente agradeço!

Bom, obrigado por enquanto e um grande abraço!

Criado 5 de setembro de 2017
Ultima resposta 6 de set. de 2017
Respostas 6
Participantes 3