JAX-RS 1.1-Webanwendungen implementieren
Wenn Sie die JAX-RS-Webanwendung (Java™ API for RESTful Web Services) assembliert haben, können Sie das WAR-Paket (Webarchiv) oder das EAR-Paket (Unternehmensarchiv) auf dem Anwendungsserver implementieren.
Vorbereitende Schritte
Um eine JAX-RS-Webanwendung implementieren zu können, benötigen Sie ein WAR- oder ein EAR-Paket, das für RESTful-Services konfiguriert und aktiviert ist.
Informationen zu diesem Vorgang
Jede Webanwendung muss ein Kontextstammverzeichnis haben, damit die Webanwendung erfolgreich implementiert werden kann. Während der Anwendungsassemblierung oder -implementierung wird für jedes Webmodul ein Kontextstammverzeichnis im Anwendungsimplementierungsdeskriptor definiert. Das Kontextstammverzeichnis wird mit der definierten Servletzuordnung (aus der WAR-Datei) zum vollständigen URL kombiniert, den die Benutzer eingeben müssen, um auf das Servlet zugreifen zu können. Die Kontextstammverzeichnis aller implementierten Webanwendungen müssen auf dem Server eindeutig sein. Das Kontextstammverzeichnis muss nicht angegeben werden. Wenn beispielsweise eine Webanwendung das Kontextstammverzeichnis sample/application/ verwendet, beginnt der Anforderungs-URL der Webanwendung wie folgt: http://<Hostname>:<Port>/sample/application/.
Das URL-Muster eines Servlets wird an das Kontextstammverzeichnis der Webanwendung angefügt. Lautet das Kontextstammverzeichnis beispielsweise sample/application/ und hat die Zuordnung des Servlet-URLs rest/api/*, ist der Basis-URI für die JAX-RS-Webanwendung http://<Hostname>:<Port>/sample/application/rest/api.
Vorgehensweise
Ergebnisse
Die JAX-RS-Webanwendung ist implementiert und einsatzbereit für Ihr Unternehmen.
Die Implementierung einer JAX-RS-Webanwendung (Java API for RESTful Web Services) ist erfolgreich, wenn Sie durch Eingabe eines URL (Uniform Resource Locator) in einem Browser oder über einen Link auf die Anwendung zugreifen können. Wenn Sie nicht auf Ihre Anwendung zugreifen können, führen Sie die folgenden Schritte durch, um einige allgemeine Fehler zu beheben, die während der Implementierung auftreten können.

Achten Sie auf die folgenden Hinweise, wenn Sie bei der Implementierung von JAX-RS-Webanwendungen allgemeine Fehler lösen möchten:
- In der Serverantwort wird automatisch die HTTP-Fehlernachricht 404 (Nicht gefunden) an den Client zurückgesendet.
- Gehen Sie wie folgt vor, um das Problem zu beheben:
- Vergewissern Sie sich, dass die Stammressourcenklassen mit einer @javax.ws.rs.Path-Annotation versehen sind und dass der Wert in der Annotation richtig ist. Stammressourcenklassen ohne eine @Path-Annotation werden nicht in der JAX-RS-Laufzeit registriert. Näheres hierzu finden Sie im Artikel zur Definition der URI-Muster für Ressourcen in RESTful-Anwendungen.
- Vergewissern Sie sich, dass die Stammressourcenklasse zur Gruppe der Klassen hinzugefügt wird, die von der Methode getClasses() für die Unterklassen der Klasse "javax.ws.rs.core.Application" zurückgegeben wird. Die Klassen, die nicht in den Unterklassen der Klasse "javax.ws.rs.core.Application" registriert sind, werden von der JAX-RS-Laufzeitumgebung nicht erkannt. Näheres hierzu finden Sie im Artikel zur Definition der URI-Muster für Ressourcen in RESTful-Anwendungen.
- Vergewissern Sie sich, dass die Konfiguration der Datei web.xml für die erwarteten URL-Muster korrekt ist. Weitere Informationen finden Sie in den JAX-RS-Servlet- und -Filterinformationen in der Datei web.xml.
- Vergewissern Sie sich, dass der verwendete URL richtig ist und das Kontextstammverzeichnis umfasst. Wenn Sie ein Servlet verwenden, ist das URL-Muster des Servlets Teil des endgültigen URL. Die Verwendung eines Filters kann in Ihrer Webanwendung passender sein. Weitere Informationen finden Sie in den JAX-RS-Servlet- und -Filterinformationen in der Datei web.xml.
- In der Serverantwort wird automatisch die HTTP-Fehlernachricht 405 Method Not Allowed (Methode nicht zulässig) an den Client zurückgesendet.
- Wenn die Servlet-URI in einer Anforderungs-URL mit dem Pfadwert einer Ressourcenmethode übereinstimmt,
aber die gesendete HTTP-Methode nicht mit der Methodenannotation übereinstimmt, wird der HTTP-Statuscode
405 Method Not Allowed (Methode nicht zulässig) zurückgegeben.
Im folgenden Codebeispiel endet die Anforderungs-URL mit sayhello. Die Anforderung enthält jedoch eine POST- anstelle einer GET-Methode, daher wird der Fehler 405 zurückgegeben.
@javax.ws.rs.Path("helloworld") public class SampleResource { ... @javax.ws.rs.Path("sayhello") @javax.ws.rs.GET public String getHello() { ...
Gehen Sie wie folgt vor, um das Problem zu beheben:
- Stellen Sie sicher, dass die gesendete HTTP-Methode mit der Methodenannotation übereinstimmt.
- In der Serverantwort wird automatisch die HTTP-Fehlernachricht 406 (Nicht akzeptabel) an den Client zurückgesendet.
- Gehen Sie wie folgt vor, um das Problem zu beheben:
- Vergewissern Sie sich, dass der Anforderungsheader "Accept" in der eingehenden Anforderung richtig ist. Weitere Informationen hierzu finden Sie im Artikel zur Implementierung der Inhaltsvereinbarung auf der Basis von HTTP-Headern.
- Vergewissern Sie sich, dass der Wert für "@javax.ws.rs.Produces" in der Ressourcenmethode oder Ressourcenklasse mit dem eingehenden Anforderungsheader "Accept" kompatibel ist. Näheres hierzu finden Sie im Artikel zur Definition der Medientypen für Ressourcen in RESTful-Anwendungen.
- In der Serverantwort wird automatisch die HTTP-Fehlernachricht 415 (Nicht unterstützter Medientyp) an den Client zurückgesendet.
- Gehen Sie wie folgt vor, um das Problem zu beheben:
- Vergewissern Sie sich, dass der HTTP-Anforderungsheader "Content-Type" in der eingehenden Anforderung richtig ist und gesendet wird. Näheres hierzu finden Sie im Artikel zur Definition der Medientypen für Ressourcen in RESTful-Anwendungen.
- Vergewissern Sie sich, dass der Wert für "@javax.ws.rs.Consumes" in der Ressourcenmethode oder Ressourcenklasse mit dem eingehenden HTTP-Anforderungsheader "Content-Type" kompatibel ist.
- In der Serverantwort wird automatisch der HTTP-Antwortstatus 204 (Kein Inhalt) an den Client zurückgesendet.
- Sie können das Problem wie folgt beheben:
- Legen Sie fest, ob eine Nullantwort in Ihrer Ressource den Antwortcode "204 No Content" (Kein Inhalt) zurückgeben soll.
Informationen zu bekannten Problemen und deren Behebung finden Sie auf der Webseite des IBM Support.
Der IBM® Support stellt Dokumente bereit, mit denen Sie Zeit bei der Erfassung der für die Lösung des Problems erforderlichen Informationen einsparen können.