Edit: Je n’avais pas réalisé que toutes les demandes allaient d’abord dans “Apache”, puis étaient redirigées vers Tomcat. J’ai ajouté une nouvelle redirection dans le fichier
apache2.conf
. Voir la réponse acceptée pour plus de détails.
J’ai le même problème que cette question. Jersey REST L’instance ResourceConfig ne contient aucune classe de ressource racine. Cependant, l’utilisateur n’a jamais répondu à la question.
J’utilise Tomcat, sans maven. J’ai suivi ce tutoriel. http://www.ibm.com/developerworks/web/library/wa-aj-tomcat/index.html
J’ai apporté des modifications à web.xml conformément à l’article
Le nouveau mappage de servlet et de servlet a été créé avec le nom de package correct.
Jersey REST Service com.sun.jersey.spi.container.servlet.ServletContainer com.sun.jersey.config.property.packages sample.hello.resources 1 Jersey REST Service /rest/*
J’ai déployé les jars suivants sur tomcat
asm.jar jersey-server.jar jersey-core.jar jsr311.jar
Le journal de démarrage de Tomcat comporte les exceptions suivantes.
com.sun.jersey.api.core.PackagesResourceConfig init INFO: Scanning for root resource and provider classes in the packages: sample.hello.resources com.sun.jersey.api.core.ScanningResourceConfig logClasses INFO: Root resource classes found: class sample.hello.resources.HelloResource com.sun.jersey.api.core.ScanningResourceConfig init INFO: No provider classes found. com.sun.jersey.server.impl.application.WebApplicationImpl _initiate INFO: Initiating Jersey application, version 'Jersey: 1.8 06/24/2011 12:17 PM'
Lorsque j’accède à l’URL, je reçois un 404. http: // localhost: 8080 / Jersey / rest / hello
Le code:
import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; @Path("/hello") public class HelloResource { @GET @Produces(MediaType.TEXT_PLAIN) public Ssortingng sayHello() { return "Hello Jersey"; } }
Je ne vois aucune autre exception dans les journaux
Vérifiez que vous avez la bonne URL:
L’application gestionnaire tomcat est heureuse de vous diriger vers l’URL racine du servlet. (vous supposez que c’est “Jersey” avec J. majuscule) http: // localhost: 8080 / manager / html / list
Ensuite, vous pouvez ignorer la partie “rest” en définissant le modèle d’URL dans le mappage de servlet du fichier web.xml sur “/ *” (oui, il y avait un bogue dans Jersey lié à cette histoire, mais c’est une histoire ancienne)
Ensuite, vous pouvez append “application.wadl” pour obtenir une description des ressources disponibles. Théoriquement: http: // localhost: 8080 / Jersey / application.wadl
Ce problème a été résolu comme suit. Mon localhost a été configuré avec le serveur Web “Apache” qui redirige toutes les requêtes vers Tomcat. Comme “Jersey” utilise un nouveau servlet, j’ai dû créer une redirection distincte pour ce servlet en particulier.
Sous Linux
/etc/apache2/apache2.conf
append:
JkMount /rest/* ajp13_worker
Par défaut, Tomcat utilise le nom de fichier war ou le nom du répertoire le plus haut de la guerre éclatée en tant que contexte racine, sauf s’il est défini dans catalina_home / conf / server.xml, catalina_home / conf / context.xml ou META-INF / context.xml. fichier.
Pour accéder à http: // localhost: 8080 / Jersey / rest / hello , l’entrée de contexte devrait être
et votre ressource devrait avoir @Path("/rest/hello")
.