Ich versuche, eine einfache Web-Anwendung unter JBoss AS 7.1 zu implementieren, die mit Resteasy ausgeliefert wird. Laut der Dokumentation ist (mindestens) ein leeres web.xml
, eine Klasse mit annotiertem% co_de% und @ApplicationPath("/mypath")
für Ihre anderen Klassen
Die Dokumentation, der ich folge, ist hier:
Immer noch, wenn ich treffe:
%Vor%Ich erhalte einen Fehler 404 auf der Webseite aber nichts in den Protokollen.
Gibt es eine Konfigurationsdatei, die ich ändern muss, damit JAX-RS funktioniert?
Vielen Dank im Voraus für jede Hilfe!
Empty web.xml
reicht.
Fügen Sie Ihrem Klassenpfad nur eine Resteasy-Abhängigkeit hinzu. Wenn Sie beispielsweise maven verwenden, können Sie dies zu Ihrem pom.xml
hinzufügen:
Richten Sie dann die Anwendung nur mit dieser Klasse ein:
%Vor%Nur um sicherzustellen, fügen Sie eine Ressource wie folgt hinzu:
%Vor%Und das ist alles was du brauchst. Stellen Sie es auf einem JBoss AS 7.1 bereit und rufen Sie es auf:
%Vor%Ich habe ein Java-Kriegs-Maven-Projekt mit der minimalen Struktur erstellt:
%Vor% Ich nannte es simpleRest
, wie unten zu sehen ist. Alle Archive sind genau wie gezeigt:
pom.xml:
%Vor%HalloResource.java
%Vor%JaxRsActivator.java:
%Vor% Dies erzeugt simpleRest.war
(bis mvn clean package
). Ich stelle es dann auf einem neu installierten JBoss AS 7.1.1.Final bereit. Wie Sie sehen, wird während der Bereitstellung im Protokoll kein Bezug auf JAX-RS hergestellt:
Danach ist die URL wie erwartet verfügbar:
%Vor%Beachten Sie, dass alles andere einen Fehler 404 gibt. Aber es ist eine andere Art von 404.
http://127.0.0.1:8080/simpleRest/
gibt:
Das ist ein page Fehler nicht gefunden. Auf der anderen Seite ergibt http://127.0.0.1:8080/simpleRest/rest
:
Dies ist ein Ressource (REST-Dienst) nicht gefundener Fehler. Auf diese Weise wissen Sie, dass JAX-RS handelt, obwohl es keinen Handler für diesen Pfad hatte.
Sieh dir jboss quickstarts an: Ссылка Sie können sie von Ссылка
beziehenDiese funktionieren außerhalb der Box. Für Helloword-rs Quickstart kann ich web.xml mit Inhalt sehen:
%Vor%und auch kommentieren: Eine der Möglichkeiten, REST Servises zu aktivieren, besteht darin, diese Zeilen hinzuzufügen. Der Server ist dafür verantwortlich, das entsprechende Servlet automatisch hinzuzufügen. Wenn der Ordner src die Klasse org.jboss.as.quickstarts.rshelloworld.HelloWorld enthält, müssen die Annotationen den REST-Aufruf erhalten.
Wenn Sie JBoss AS 7.1 verwenden, müssen Sie auch den Kontextparameter "resteasy.resources" hinzufügen. Sie müssen auch den init-Parameter an das HttpServletDispatcher-Servlet senden.
Ich fand die Lösung unter folgendem Link: Ссылка
Nur ein Tippfehler (vielleicht !!) im obigen Link. Im "RootRestService" ändern Sie die Methodensignatur der Methode getClasses () in public Set<Class<?>> getClasses()
.
Das ist es! Es löste meine 3 Tage Kopfschmerzen. Hoffe es hilft dir auch !! :)
Obwohl die Antwort von acdcjunior großartig und sehr gründlich ist, möchte ich Andrzejs Antwort noch einmal auf den Punkt bringen.
Es funktioniert als ein Charme und es ist bei weitem der einfachere. Die JBoss-Schnellstart-Beispiele (auch verfügbar auf GitHub ) sind immer eine großartige Ressource, um Fragen wie diese zu beantworten.
Tags und Links web-applications java-ee rest jboss7.x resteasy