Maillot de Services Web REST, Tomcat, Eclipse et 404
J'ai lu à travers un certain nombre de postes, mais n'arrive pas à résoudre mon problème. Vous verrez aussi des tonnes de messages très similaires à celui-ci, même le même le tutoriel. Même en les suivant, je n'arrive pas à obtenir la réponse.
Essentiellement, je suis en train de suivre le tutoriel à: http://www.vogella.com/articles/REST/
J'ai fait quelques modifications pour le rendre compatible avec Jersey 2.x
Je suis en utilisant:
Eclipse
Tomcat 6 (Déployé/Exécuter en tant qu'au sein d'Eclipse)
jaxrs-ri-2.0
J'ai activé le JAX-RS Facette dans Eclipse
Tout construit fine
Tomcat commence bien dans Eclipse
Je peux accéder à une page statique du contenu via:
http://localhost:8080/RestTEST2/index.html
Cependant, lorsque j'essaie d'accéder à mon service depuis:
http://localhost:8080/RestTEST2/jaxrs/hello
Je reçois une erreur 404 avec le message "non trouvé" et "La ressource demandée (Pas Trouvé) n'est pas disponible."
Voici mon web.xml qui est /WebContent/WEB-INF/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_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>TestREST2</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<servlet>
<description>JAX-RS Tools Generated - Do not modify</description>
<servlet-name>JAX-RS Servlet</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>TestREST</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>JAX-RS Servlet</servlet-name>
<url-pattern>/jaxrs/*</url-pattern>
</servlet-mapping>
</web-app>
Voici ma classe Java:
package TestREST;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
//Plain old Java Object it does not extend as class or implements
//an interface
//The class registers its methods for the HTTP GET request using the @GET annotation.
//Using the @Produces annotation, it defines that it can deliver several MIME types,
//text, XML and HTML.
//The browser requests per default the HTML MIME type.
//Sets the path to base URL + /hello
@Path("/hello")
public class Hello {
//This method is called if TEXT_PLAIN is request
@GET
@Produces(MediaType.TEXT_PLAIN)
public String sayPlainTextHello() {
return "Hello Jersey";
}
//This method is called if XML is request
@GET
@Produces(MediaType.TEXT_XML)
public String sayXMLHello() {
return "<?xml version=\"1.0\"?>" + "<hello> Hello Jersey" + "</hello>";
}
//This method is called if HTML is request
@GET
@Produces(MediaType.TEXT_HTML)
public String sayHtmlHello() {
return "<html> " + "<title>" + "Hello Jersey" + "</title>"
+ "<body><h1>" + "Hello Jersey" + "</body></h1>" + "</html> ";
}
}
J'ai aussi un JAX-RS Bibliothèque Utilisateur configuré et référencé, qui comprend toutes les JAX-RS pots.
Pensées sur ce qui cause le service web pour ne pas être trouvé?
Vous devez vous connecter pour publier un commentaire.
Jersey 2.0 ne pas reconnaître init-param avec le nom
com.sun.jersey.config.property.packages
(web.xml). Essayez de changer dejersey.config.server.provider.packages
comme décrit dans ServerProperties.PROVIDER_PACKAGES.Merci beaucoup.. je me bats pour elle aussi.
Cette combinaison a fonctionné pour moi:
Tomcat 7.0.55
Eclipse Luna
La version 1.6 de Java
Maillot de 1,7
web.xml:
Je voudrais ajouter une réponse dans ce post.J'ai été aux prises avec le même problème depuis deux jours et ne pouvait pas trouver la solution.
J'ai essayé toutes les solutions proposées ici, mais plus tard, j'ai réalisé que le serveur était en train de donner de l'erreur de
Ce lien réponses donne la solution si quelqu'un est coincé comme moi..
org.glassfish.jersey.servlet.ServletContainer ClassNotFoundException
En fait la première réponse donnée dans ce post, suggèrent la solution qui est pour le jersey 2.x bundle et si vous utilisez jersey 1.x, alors il va continuer à donner de l'erreur.
Veuillez vous référer au lien donné dans la réponse de référence
Simplement en modifiant la configuration de Apache Tomcat v7.0 lors de la création de Projet Web Dynamique, pour inclure le REPOS, j'ai résolu mon problème. Il n'est pas activé par défaut.
Récemment, je me suis retrouvé coincé dans ce problème. J'ai eu une réponse par la suite de ces deux points comme la solution:
src/main/java
que le répertoire source, et de garder la Structure du Projet, comme indiqué ci-dessous:com.sun.jersey.config.property.packages
àjersey.config.server.provider.packages
dans leweb.xml