/ / 404 erreur avec Jersey REST Service sur Tomcat - java, repos, tomcat, jersey, jersey-2.0

Erreur 404 avec Jersey REST Service sur Tomcat - java, repos, tomcat, jersey, jersey-2.0

J'ai examiné toutes les réponses disponibles sur ce sujet, soit je suis confronté à un problème complètement différent, soit je manque quelque chose d'important.

Classe de service:

package org.test;

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

//http://localhost:8080/JunkWeb/rest/TestRestService/callService
@Path("/TestRestService")
public class TestRestService {

@GET
@Path("/callService")
@Produces(MediaType.TEXT_PLAIN)
public String callService(){return "from Rest Service";}

}//class closing

web.xml

<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<display-name>JunkWeb</display-name>

<servlet>
<servlet-name>jersey-serlvet</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>org.test</param-value>
</init-param>
<!-- <init-param>
<param-name>jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param> -->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jersey-serlvet</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>

L'URL:

http://localhost:8080/JunkWeb/rest/TestRestService/callService

entrer la description de l'image ici

Ça devrait marcher mais ça ne marche pas. Toute aide sera vraiment appréciée.

J'utilise Jersey 2.17 et Tomcat 8.0.20

Réponses:

3 pour la réponse № 1

"J'utilise Jersey 2.17"

Cela n'existe pas dans 2.17

com.sun.jersey.spi.container.servlet.ServletContainer

Je suis surpris que vous n'obteniez pas d'exception pour une classe non trouvée. Ce qui signifie que vous mélangez probablement des versions. Ou peut-être avez-vous une exception et ne nous dites pas. Dans tous les cas, le bon ServletContainer devrait être

org.glassfish.jersey.servlet.ServletContainer

Ensuite, si vous en avez, vous devez vous débarrasser de tout (jar) dont les paquets commencent par com.sun. Ce sont des bocaux Jersey 1. Dans Jersey deux, le modèle de nommage des paquets a été remplacé par org.glassfish.xxx Si vous voulez vous simplifier la vie, utilisez Maven et ajoutez simplement une dépendance à un projet entier, et le reste sera pris en compte.

<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
<version>2.17</version>
</dependency>

En outre, cela n’existe pas à Jersey deux

jersey.api.json.POJOMappingFeature

Dans Jersey 2, ajoutez simplement cette dépendance Maven, et la vie sera belle.

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

Si vous n’utilisez pas Maven, téléchargez le kit RI ici. Ouvrez tous les dossiers et ajoutez chaque fichier jar à votre projet. Ceci est pour le support principal.

Pour le support JSON, téléchargez ce, aussi bien que tous ces. Vous pouvez rechercher le même site pour eux. cela devrait fonctionner sans configuration supplémentaire. Alternativement, vous pouvez simplement télécharger ceux du deuxième lien, puis ajouter le paquet dans le fichier web.xml, comme indiqué dans le lien.

Mais juste pour que cela fonctionne, puisque votre code ne produit ni ne consomme aucun JSON, vous pouvez simplement exécuter le noyau en premier, puis, une fois que cela fonctionne correctement, vous pouvez travailler sur le support JSON.