Olá Rodrigo! Tudo bem?
Minhas minha dificuldade inicial era fazer funcionar com as dependências atualizadas no maven. Foi uma dor de cabeça pesada até conseguir alguma coisa... kkkkkkk..
As primeiras referências que encontrei indicavam uma configuração no web.xml. Porém, as últimas indicavam apenas uma classe de configuração.
Fui testando várias versões no repositório do maven, subindo da menos atualizada até a mais atualizada, até chegar na mais atualizada que funcionava normalmente.
O problema seguinte foi fazer funcionar a injeção de dependências pelo weld no resource. Depois de algumas semanas de pesquisa (kkkkk), consegui fazer funcionar.
Atualmente, está funcionando. A classe de configuração está descrita abaixo:
import javax.ws.rs.ApplicationPath;
import org.glassfish.jersey.server.ResourceConfig;
@ApplicationPath("webapi")
public class RootResource extends ResourceConfig {
public RootResource() {
packages("resource");
}
}
O resource de teste ficou conforme abaixo:
import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import service.ProdutoService;
@RequestScoped
@Path("/produtos")
public class ProdutoResource {
@Inject
private ProdutoService produtoService;
@GET
@Produces(MediaType.TEXT_PLAIN)
public Response greet() {
System.out.println("Acionou o método da API de obtenção de dados do service");
String descricaoProduto = produtoService.getPorId(1l).getDescricao();
//return "Hello, World!";
return Response.status(200).entity(descricaoProduto).build();
}
}
E as dependências necessárias para o funcionamento são essas listadas abaixo:
<!-- Dependências JAX-RS -->
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-server</artifactId>
<version>2.31</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
<version>2.31</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.inject</groupId>
<artifactId>jersey-hk2</artifactId>
<version>2.31</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.ext.cdi</groupId>
<artifactId>jersey-cdi1x</artifactId>
<version>2.31</version>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>8.0</version>
<scope>provided</scope>
</dependency>
<!-- API, java.xml.bind module -->
<dependency>
<groupId>jakarta.xml.bind</groupId>
<artifactId>jakarta.xml.bind-api</artifactId>
<version>2.3.2</version>
</dependency>
<!-- Runtime, com.sun.xml.bind module -->
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>2.3.2</version>
</dependency>
Teve um outro curso que comprei em que o orientador fez funcionar somente com essa dependência:
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>8.0</version>
<scope>provided</scope>
</dependency>
Mas por aqui não funcionou somente com ela, não entendi o motivo.
Desde já, muito obrigado!