Java Jersey Rest: Aucune classe de fournisseur trouvée. (Erreur 404 lors de l’access à l’URL)

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") .