Jax-rs Jarsey com Maven

Boa tarde pessoal, estou com duvida na criação do web service com Jax-RS + Jarsey + Maven, gostaria de saber exatamente quais dependências eu tenho que acrescentar no meu pom.xml, alguém pode me ajudar?

Obs: eu segui várias instruções que encontrei em diversos foruns da web mais nenhum solucionou minha duvida.

Agradeço desde já.

Você está utilizando um servidor de aplicações (wildfly, glassfish, weblogic, etc) ou um servlet container (tomcat, jetty, etc)?
Qual versão da especificação quer implementar 1.x ou 2.x?
Você disse que nenhuma solucionou, o que isso significa, exatamente? O que aconteceu? Erros? Codigos?
Tem como dizer qual tutorial seguiu?

Oi, estou usando o tomcat9, criei um Pool de conexão nele e já passei ele para o persistence.xml, estou querendo usar a versão 2.X.
Minhas pesquisas não solucionaram minhas duvidas de como realizar essa implementação, estou começando a estudar web services agora e fiquei perdido.

Então você não tentou fazer nada?
Segui este tutorial, com tomcat 8 e funcionou de boa.

1 curtida

Opa, eu tentei sim, o nos meus testes funciono em quanto eu usava dados em memoria para retornar o JSON, mais a partir do momento que integrei com hibernate ele começo a dar erro de dependencia, e pelo que falava na mensagem era referente a um plugin glassfhis ser 1.X e algum outro ser 2.X, não estou em casa agora, assim que eu chegar eu posto o erro aqui. obrigado pela ajuda, vou seguir este tutorial, att.

Então verifica, posta o pom.xml e vamos ver o que pode estar ocorrendo.

Boa noite, segui o tutorial que você passo e deu certo, só que estou obtendo o seguinte erro quando tento gerar uma lista de JSON.

abr 06, 2017 1:40:49 AM org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor aroundWriteTo
GRAVE: MessageBodyWriter not found for media type=application/json, type=class java.util.ArrayList, genericType=java.util.List<br.com.okchefe.model.Pessoa>.

Essas são as classes do meu projeto e o pom.xml:

`package br.com.xxxxx.model;

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class Pessoa {

private Integer id;
private String nome;

public Pessoa(Integer id, String nome) {
	this.id = id;
	this.nome = nome;
}

@Override
public String toString() {
	return "Pessoa [id=" + id + ", nome=" + nome + "]";
}

@Override
public int hashCode() {
	final int prime = 31;
	int result = 1;
	result = prime * result + ((id == null) ? 0 : id.hashCode());
	result = prime * result + ((nome == null) ? 0 : nome.hashCode());
	return result;
}

@Override
public boolean equals(Object obj) {
	if (this == obj)
		return true;
	if (obj == null)
		return false;
	if (getClass() != obj.getClass())
		return false;
	Pessoa other = (Pessoa) obj;
	if (id == null) {
		if (other.id != null)
			return false;
	} else if (!id.equals(other.id))
		return false;
	if (nome == null) {
		if (other.nome != null)
			return false;
	} else if (!nome.equals(other.nome))
		return false;
	return true;
}

public Integer getId() {
	return id;
}

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

public String getNome() {
	return nome;
}

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

}
`

package br.com.xxxxxx.ws;

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

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

import br.com.okchefe.model.Pessoa;

@Path("/ola")
public class Jarsey {

@GET
@Produces(MediaType.APPLICATION_JSON)
public List<Pessoa> listaPessoas() {
	List<Pessoa> listaPessoas = new ArrayList<Pessoa>();

	listaPessoas.add(new Pessoa(1, "João Rafael"));
	listaPessoas.add(new Pessoa(2, "Will"));
	listaPessoas.add(new Pessoa(3, "Joarez"));

	return listaPessoas;
}

}

meu pom.xml

<?xml version="1.0" encoding="UTF-8"?>


4.0.0
org.okchefe
okchefe
1.0.0-SNAPSHOT
war

<repositories>
	<repository>
		<id>maven2-repository.java.net</id>
		<name>Java.net Repository for Maven</name>
		<url>http://download.java.net/maven/2/</url>
		<layout>default</layout>
	</repository>
</repositories>

<properties>
	<failOnMissingWebXml>false</failOnMissingWebXml>
	<maven.compiler.source>1.8</maven.compiler.source>
	<maven.compiler.target>1.8</maven.compiler.target>
	<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	<jersey2.version>2.19</jersey2.version>
	<jaxrs.version>2.0.1</jaxrs.version>
</properties>

<dependencies>
	<!-- JAX-RS -->
	<dependency>
		<groupId>javax.ws.rs</groupId>
		<artifactId>javax.ws.rs-api</artifactId>
		<version>${jaxrs.version}</version>
	</dependency>
	<!-- Jersey 2.19 -->
	<dependency>
		<groupId>org.glassfish.jersey.containers</groupId>
		<artifactId>jersey-container-servlet</artifactId>
		<version>${jersey2.version}</version>
	</dependency>
	<dependency>
		<groupId>org.glassfish.jersey.core</groupId>
		<artifactId>jersey-server</artifactId>
		<version>${jersey2.version}</version>
	</dependency>
	<dependency>
		<groupId>org.glassfish.jersey.core</groupId>
		<artifactId>jersey-client</artifactId>
		<version>${jersey2.version}</version>
	</dependency>
	<dependency>
		<groupId>org.glassfish.jersey.media</groupId>
		<artifactId>jersey-media-json-processing</artifactId>
		<version>2.25.1</version>
	</dependency>
</dependencies>

<build>
	<finalName>okchefe</finalName>
</build>

Resolvi o problema, estava faltando adicionar a seguinte dependência no meu pom.xml
> >

>     			<groupId>org.glassfish.jersey.media</groupId>
>     			<artifactId>jersey-media-json-jackson</artifactId>
>     			<version>2.25.1</version>
>     		</dependency>

Muito obrigado pela ajuda, agora vou integrar o hibernate :slight_smile: