javax.ws.rs.NotFoundException: impossible de trouver des ressources pour le chemin d'accès complet
windows 7(64);
jdk1.7.0_51(64);
RESTEasy3.0.7;
apache-tomcat-7.0.50;
Nom du projet : bonjour
RESTEasyHelloWorldService.java:
package com.javacodegeeks.enterprise.rest.resteasy;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
@Path("/RESTEasyHelloWorld")
public class RESTEasyHelloWorldService {
@GET
@Path("/{param}")
@Produces(MediaType.TEXT_PLAIN)
public String getMsg(@PathParam("param") String name) {
String msg = "Rest say: good " + name;
return msg;
}
}
web.xml:
<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"
id="WebApp_ID" version="3.0">
<display-name>hello</display-name>
<servlet-mapping>
<servlet-name>resteasy-servlet</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
<!-- Auto scan REST service -->
<context-param>
<param-name>resteasy.scan</param-name>
<param-value>true</param-value>
</context-param>
<!-- this should be the same URL pattern as the servlet-mapping property -->
<context-param>
<param-name>resteasy.servlet.mapping.prefix</param-name>
<param-value>/rest</param-value>
</context-param>
<listener>
<listener-class>
org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap
</listener-class>
</listener>
<servlet>
<servlet-name>resteasy-servlet</servlet-name>
<servlet-class>
org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher
</servlet-class>
</servlet>
</web-app>
pourquoi ai-je l'exception lorsque j'appelle la http://localhost:8080/hello/rest/RESTEasyHelloWorld/a
retourne:
javax.ws.rs.NotFoundException: Could not find resource for full path: http://localhost:8080/hello/rest/RESTEasyHelloWorld/a
at org.jboss.resteasy.core.registry.ClassNode.match(ClassNode.java:73)
at org.jboss.resteasy.core.registry.RootClassNode.match(RootClassNode.java:48)
...
OriginalL'auteur user3926093 | 2014-08-10
Vous devez vous connecter pour publier un commentaire.
Vous pouvez essayer d'utiliser
http://localhost:8080/hello/RESTEasyHelloWorld/a
. (Sans le/rest
).Si vous souhaitez utiliser
/rest
, vous pouvez modifier votre RESTEasyHelloWorldService @Chemin à/rest/RESTEasyHelloWorld
.Mais basé sur l'Api versions que vous utilisez, vous pouvez faire beaucoup plus simple d'emploi pour obtenir votre service restful de travail.
Je suis en supposant que vous avez resteasy-jaxrs lib sur votre classpath.
Puisque vous n'êtes pas à l'aide de JBOSS ou EAP, vous devez également obtenir resteasy-servlet-initialiseur. Documentation pour l'utilisation de Servlet 3.0 Conteneurs comme TOMCAT ici.
Vous aurez besoin d'étendre Application, en créant par exemple un RESTEasyService:
Vous n'avez pas besoin de fournir toute mise en œuvre de cette classe, depuis RESTEasy de numérisation pour tous les fournisseurs et les ressources. Documentation pour l'utilisation de Application classe ici.
Laisser votre RESTEasyHelloWorldService juste comme vous l'avez dit dans votre question:
Maintenant votre web.xml n'a pas besoin de quoi que ce soit. Java WS-RS et RESTEasy font déjà tout.
Votre web.xml peut être comme ceci:
RESTEasy, la documentation officielle est un peu déroutant au début, mais une fois que vous comprenez que la mise en œuvre est la même pour JBOSS et NON-JBOSS apps (l'utilisation de la libs que le changement), vous obtenez les choses plus facile.
OriginalL'auteur fasfsfgs
J'ai eu le même problème quand j'ai essayé avec 3.0.11.Final
mais quand j'ai essayé avec une autre version, il a travaillé.
Et encore plus de L'URL(http://localhost:8080/hello/rest/RESTEasyHelloWorld/a) qui vous sont d'essayer de le corriger, puisque vous avez mentionné et de repos dans la web.xml .Espérons que cette aide.
OriginalL'auteur Raphael
J'ai eu le même problème quand j'étais migrer mon application de resteasy version 3.0.4 à 3.0.12
Web service fonctionnait bien avec web.xml semblable à celui qui user3926093 collé ci-dessus. Ce que j'ai publié, c'est que la version 3.0.7 est en train de changer de point. Avant cette version, vous n'avez même pas besoin de resteasy-servlet-initialiseur comme fasfsfgs indiqué ci-dessus. Mais avec 3.0.7 et les versions ultérieures j'ai commencé à faire "impossible de trouver de la ressource pour le chemin d'accès complet:" l'exception".
Ce que j'ai fait pour le faire fonctionner est de changer web.xml pour le même aspect que fasfsfgs indiqué ci-dessus (en gros, j'ai enlevé toute la configuration de celui-ci) et j'ai créé sous-classe javax.ws.rs.de base.La classe d'Application aussi comme fasfsfgs indiqué ci-dessus, mais je ne suis pas d'accord pour dire que "Vous n'avez pas besoin de fournir toute mise en œuvre de cette classe". De la manière dont on pourrait mettre en œuvre cette classe peut être trouvé ici: https://goo.gl/9TJ3Y2. Notez que si vous voulez par demande modèle de cette mise en œuvre n'est pas bon pour vous. Et enfin n'oubliez pas d'ajouter resteasy-servlet-initialiseur de la dépendance.
OriginalL'auteur temuchin