Warum ist diese Einfache JAX RS Beispiel nicht funktioniert?
Ich versuche zu bekommen arbeiten ein einfacher JAX-RS Beispiel, aber ich bin andernfalls zu tun.
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!";
}
}
Zugriff auf http://localhost/{warcontext}/api/hello
mit dem browser (GET) gibt mir die Fehlermeldung 404-status
Es ist wahrscheinlich etwas sehr dumm, aber ich nicht herausfinden können.
Mit:
JBoss EAP 6.1.0 (Java EE 6)
InformationsquelleAutor Fagner Brack | 2013-12-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie erweitern, javax.ws.rs.core.Anwendung (es kann leer bleiben) und kommentieren mit @ApplicationPath("/ide"), dann erstellen Sie eine JAX-RS-Ressource, d.h. eine Klasse mit @Path("/hello") Anmerkung. In dieser Klasse müssen Sie nur Ihre JAX-RS-Ressource-Methode annotiert mit @GET.
Können Sie auch einen Blick auf dieses Beispiel: https://github.com/resteasy/Resteasy/tree/master/jaxrs/examples/oreilly-workbook/ex03_1
Sie verpasste die annotation @ApplicationPath so.. Server nicht wissen, dass es jax-rs-Anwendung vorhanden sind.
InformationsquelleAutor Xavier Coulon
web.xml
Rest.java
Wenn Sie brauchen, können Sie hinzufügen
YourApplication.java
Dann
web.xml
Wenn Sie hinzufügen
@ApplicationPath("/api")
fürYouApplication
, dann web.xml sollte nichtservlet-mapping
.InformationsquelleAutor Qwertovsky
Müssen Sie erklären servlet-Klasse in web.xml (servlet-name nicht identisch):
Verwenden Sie den vollen Namen der Klasse (inklusive package-Pfad-name) in der servlet-Klasse.
InformationsquelleAutor Stephane Lallemagne
Hatte ich auch Probleme bekommen diese zu arbeiten, so bin ich Entsendung eine vollständige Anleitung für die Nachwelt:
Wenn Sie mit einem standard-Tomcat installieren (oder einen anderen servlet-container), AFAIK kann man nicht vermeiden, explizit zu sagen was servlets zum start in die
web.xml
- Datei*. Da müssen Sieweb.xml
jedenfalls der einfachste Weg, um restful web services zu arbeiten ist, zu vergessen, die Erweiterungjavax.ws.rs.core.Application
vollständig aus und geben Sie nur den Rahmen Weg. Können Sie immer noch standard jax-rs-Annotationen zu erklären, die eigentlichen web-services.web.xml:
Zwei Bemerkenswerte Punkte:
Müssen Sie bündeln eine REST Implementierung in Ihre war-Datei, da die servlet-Containern, die für gewöhnlich nicht enthalten. Da Jersey ist die Referenzimplementierung für JAX-RS, ich bin in der
servlet-class
- element oben. Sie können ersetzen Sie diese mit Apache CXF Implementierung, wenn Sie wollen.Den
init-param
element erzählt Jersey, welche Ihre Pakete zu suchen, die für Java-Dateien mit web service annotations. Bearbeiten Sie diese, zeigen Sie auf Ihrer web-services. Beachten Sie, dass wenn Sie sich entscheiden, apache CXF statt Trikot-die Sachen, die notwendig in jedeminit-param
Elemente wird anders sein. Jemand, der weiß, CXF bitte posten Sie, was Sie sein würde.Wenn Sie mit Maven, fügen Sie einfach eine Abhängigkeit zu
jersey-servlet
imdependencies
Abschnitt Ihrerpom.xml
Datei:Danach deklarieren Ihre web-services ist gerade nach vorne mit dem standard JAX-RS-Annotationen in Ihren Java-Klassen:
Diesem sollte alles, was Sie brauchen. Wenn Ihr Tomcat-Installation läuft lokal auf port 8080 und der Bereitstellung der war-Datei in den Kontext
myContext
, werde...sollte produzieren das erwartete Ergebnis (5).
Prost!
* Jemand bitte korrigieren Sie mich, wenn Sie einen Weg kennen, um eine Beurteilung der Jersey-servlet-Kontext in Tomcat ohne Verwendung
web.xml
- vielleicht mithilfe eines Kontext-oder life-cycle-Hörer?InformationsquelleAutor Alvin Thompson