Pourquoi est-ce Simple de JAX RS exemple ne fonctionne pas?
Je suis d'essayer de faire fonctionner un simple JAX RS exemple, mais je suis ne pas le faire.
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" xmlns:jsp="http://java.sun.com/xml/ns/javaee/jsp" 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>PLAYGROUND</display-name>
<servlet-mapping>
<servlet-name>playground.Rest</servlet-name>
<url-pattern>/api/*</url-pattern>
</servlet-mapping>
</web-app>
Rest.java
package playground;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.core.Application;
public class Rest extends Application {
@GET
@Path("hello")
public String helloworld() {
return "Hello World!";
}
}
Accès http://localhost/{warcontext}/api/hello
avec le navigateur (GET) me donne erreur 404 statut
C'est probablement quelque chose de très stupide, mais je ne peux pas comprendre.
À l'aide de:
JBoss EAP 6.1.0 (Java EE 6)
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin d'étendre javax.ws.rs.de base.Demande (il peut rester vide) et de les annoter avec @ApplicationPath("/ide"), puis créer un JAX-RS de ressources, c'est à dire, une classe avec un @Path("/hello") annotation. Dans cette catégorie, vous aurez juste besoin d'avoir votre JAX-RS Méthode annotée avec @OBTENIR.
Vous pouvez aussi jeter un oeil à cet exemple: https://github.com/resteasy/Resteasy/tree/master/jaxrs/examples/oreilly-workbook/ex03_1
web.xml
Rest.java
Si vous avez besoin, vous pouvez ajouter
YourApplication.java
Puis
web.xml
Si vous ajoutez
@ApplicationPath("/api")
pourYouApplication
, puis web.xml ne devriez pas avoirservlet-mapping
.Vous devez déclarer la servlet-class dans web.xml (servlet nom n'est pas le même):
Utiliser le nom complet de votre classe (y compris le chemin d'accès au package nom) dans le servlet-class.
J'ai aussi eu des problèmes à obtenir que cela fonctionne, donc je poste une information plus complète sur comment faire pour la postérité:
Si vous êtes en utilisant une norme d'installation Tomcat (ou un autre conteneur de servlet), autant que je sache, vous ne pouvez pas éviter explicitement dire que les servlets pour démarrer dans la
web.xml
fichier*. Depuis que vous avez à utiliserweb.xml
de toute façon, la façon la plus simple pour obtenir des services web restful de travail, c'est oublier l'extension dejavax.ws.rs.core.Application
entièrement et il suffit de spécifier le chemin de contexte là. Vous pouvez toujours utiliser la norme de jax-rs annotations de déclarer les web services.web.xml:
Deux remarquables points:
Vous aurez besoin pour regrouper un RESTE de mise en œuvre dans votre fichier WAR, depuis des conteneurs de servlet ne contiennent généralement une. Depuis Jersey est l'implémentation de référence de JAX-RS, c'est celui que j'utilise dans le
servlet-class
élément ci-dessus. Vous pouvez la remplacer avec Apache CXF mise en oeuvre si vous le souhaitez.La
init-param
élément dit d'un Maillot de votre colis à la recherche pour Java fichiers avec service web annotations. Modifier ce point de vos services web. Notez que si vous optez pour l'utilisation d'apache CXF au lieu de Jersey, les trucs nécessaires dans tous lesinit-param
éléments seront différents. Quelqu'un qui sait CXF merci de poster ce qu'ils voudraient être.Si vous utilisez Maven, il suffit d'ajouter une dépendance à
jersey-servlet
dans ledependencies
section de votrepom.xml
fichier:Après cela, la déclaration de services web est simple en utilisant le standard de JAX-RS annotations dans vos classes Java:
Ce devrait être tout ce dont vous avez besoin. Si votre installation Tomcat tourne en local sur le port 8080 et le déploiement de votre fichier WAR pour le contexte
myContext
, va...devrait produire les résultats escomptés (5).
Cheers!
* Quelqu'un s'il vous plaît corrigez-moi si vous connaissez un moyen pour ajouter les Maillot de servlet pour le contexte dans Tomcat sans l'aide de
web.xml
--peut-être l'aide d'un contexte ou le cycle de vie de l'auditeur?