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
Ç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.