JAX-RS (Java API for RESTful Web Services) stellt Ressourcenklassen und -providern verschiedene Kontexttypen bereit. Sie
können Kontextobjekte verwenden, um auf Anforderungsinformationen zuzugreifen, um z. B. die HTTP-Header zu ermitteln, die als Teil der Anforderung
gesendet werden. Kontextobjekte bieten auch Methoden, mit denen Sie auf einfachere Weise Anforderungen bewerten und entsprechende Antworten
erstellen können.
Informationen zu diesem Vorgang
REST-Anwendungsressourcen (Representational State Transfer)
müssen beim Aufruf möglicherweise Anwendungskontextdaten prüfen. Eine Ressourcenmethode,
die eine HTTP-GET-Abfrage verarbeitet, muss möglicherweise die HTTP-Header des angeforderten
Accept-Language-HTTP-Headers prüfen, damit die Methode eine Antwort in der
von der Anforderung angegebenen Sprache ausgeben kann.
JAX-RS definiert einen einfachen Weg
zum Abrufen dieser Daten im Bereich der Anwendungsressource. Wenn Sie die Annotation "@Context" mit dem entsprechenden Objekt
als Parameter für eine Ressourcenmethode oder als Feld in der Ressourcenklasse deklarieren, werden die gewünschten Daten in die Ressource eingefügt. Die
JAX-RS-Implementierung füllt den Parameter oder das Feld mit den Kontextdaten, und die Ressourcenmethode hat Zugriff auf alle Kontextdaten, die Sie benötigt.
Sie können folgende Schnittstellentypen, die von der JAX-RS-Laufzeitumgebung eingefügt werden können, verwenden:
Schnittstellentypen |
Beschreibung |
javax.ws.rs.core.UriInfo |
Die UriInfo-Schnittstelle stellt den gesamten von der Anforderung angegebenen URI bereit. Diese Schnittstelle kann auch prüfen,
welche Ressourcen mit dem Anforderungs-URI übereingestimmt haben. |
javax.ws.rs.core.Request |
Die Request-Schnittstelle stellt Informationen zur Anforderung (POST oder GET) bereit. Diese Schnittstelle kann auch Vorbedingungen auf der Basis
von Anforderungsentitäts-Tags bewerten. |
javax.ws.rs.core.HttpHeaders |
Die HttpHeaders-Schnittstelle bietet Lesezugriff auf alle HTTP-Header. |
javax.ws.rs.core.SecurityContext |
Die SecurityContext-Schnittstelle stellt schreibgeschützte Informationen zur Sicherheit bereit,
wie z. B. das Authentifizierungsschema oder den Sicherheits-Principal. |
javax.ws.rs.ext.Providers |
Die Providers-Schnittstelle ermöglicht das Abrufen von ContextResolver-,
ExceptionMapper-, MessageBodyWriter- oder MessageBodyReader-Implementierungen. |
Zusätzlich
zu den JAX-RS-Schnittstellentypen können Sie Web-Container-Typen wie javax.servlet.http.HttpServletRequest,
wie in der JAX-RS-Spezifikation beschreiben, mithilfe der Annotation "@Context"
injizieren.
- Konfigurieren Sie die Entwicklungsumgebung.
- Bevor Sie beginnen, JAX-RS-Anwendungen zu entwickeln, müssen Sie Ihre Entwicklungsumgebung einrichten, indem Sie
die JAX-RS-Bibliotheken im Klassenpfad hinzufügen.
- Definieren Sie die Ressourcen in den JAX-RS-Webanwendungen.
- Ressourcen sind die Grundbausteine eines RESTful-Service. Ressourcen können statische oder dynamisch aktualisierte Daten enthalten.
Im Falle einer Onlinebuchhandlung sind Ressourcen beispielsweise ein Buch, eine Bestellung von einem Geschäft, ein Benutzerverbund. Wenn
Sie die Ressourcen in Ihrer
Anwendung definieren, können Sie den Service effizienter machen und so gestalten, dass er einfacher entwickelt werden kann.
- Konfigurieren Sie die JAX-RS-Anwendung.
Sie können JAX-RS-Anwendungen je nach Anforderungen auf unterschiedliche Weise konfigurieren.
Um die Funktionen von Java™ Platform,
Enterprise Edition (Java EE)
6 zu nutzen, können Sie die Scanfunktionen für Annotationen verwenden.
Wenn Sie die Scanfunktionen für Annotationen verwenden, können Sie eine JAX-RS-Unterklasse vom Typ "javax.ws.rs.core.Application"
ausschließen oder eine minimal definierte Unterklasse "javax.ws.rs.core.Application" verwenden.
Alternativ können Sie das IBM® JAX-RS-Servlet bzw. den IBM JAX-RS-Filter
angeben, wenn Sie die im IBM JAX-RS-Servlet bzw. -Filter enthaltenen Funktionen
verwenden möchten.
Wenn Sie eine der Konfigurationsmethoden der JAX-RS Version 1.1
verwenden, können Sie eine Unterklasse "javax.ws.rs.core.Application" in Ihrer Anwendung ausschließen oder
eine Unterklasse "javax.ws.rs.core.Application" verwenden, die einen leeren Satz von Klassen zurückgibt, um die
JAX-RS-Laufzeitumgebung anzuweisen, alle JAX-RS-Klassen in der Anwendung zu suchen und zu verwenden.
Sie können diese Methode verwenden, wenn Sie beim Entwickeln der Anwendung nicht jede relevante JAX-RS-Klasse
manuell einer Unterklasse "javax.ws.rs.core.Application" hinzufügen möchten.
Durch die Angabe des speziellen IBM JAX-RS-Servlets und -Filters können
Sie bestimmte IBM JAX-RS-Verhalten nutzen und sicherstellen.
Die Verwendung des IBM JAX-RS-Filters kann beispielsweise bei der Entwicklung
einer Webanwendung mit einer Mischung von JAX-RS-Ressourcen und JSP-Dateien (JavaServer Pages)
mit denselben URL-Mustern hilfreich sein.
Obwohl es eine Konfigurationsmethode der JAX-RS Version V1.1 gibt, die die Verwendung einer optionalen
Datei "web.xml" unterstützt, müssen Sie Integritätsbedingungen für die Sicherheit oder Rollen und andere Features, die
Sie verwenden möchten und die über eine Datei "web.xml" aktiviert werden, in einer Datei "web.xml" angeben.
Wählen Sie eine der folgenden drei Methoden aus, um Ihre
JAX-RS-Anwendung zu konfigurieren:
- JAX-RS-Anwendungen mithilfe von Methoden der JAX-RS Version 1.1 konfigurieren
Verwenden
Sie diese Methode, wenn Sie die Scanfunktionen für Annotationen oder die Konfigurationsmethoden der
JAX-RS Version 1.1 verwenden möchten. Sie können die Scanfunktionen für Annotationen verwenden, um die Portierbarkeit von Anwendungen
zu fördern, das Konfigurationscodevolumen zu minimieren oder die Anwendung dynamisch zu ändern,
ohne Änderungen am Anwendungscode vorzunehmen.
- Datei "web.xml" für JAX-RS-Servlets konfigurieren
Verwenden
Sie diese Methode, wenn Sie Features, die über Initialisierungsparameter für Servlets
aktiviert werden, angeben möchten, um das Verhalten zu ändern und um sicherzustellen,
dass Sie das IBM JAX-RS-Servlet erhalten. Wenn Sie Servlets verwenden möchten,
können Sie einen Servletpfad in der Datei "web.xml" definieren, der an den Basis-URL angefügt wird.
- Datei "web.xml" für JAX-RS-Filter konfigurieren
Verwenden
Sie diese Methode, um den Filter zu verwenden, wenn Sie JSPs, andere Servlets und Filter sowie
JAX-RS-Ressourcen mit verschiedenen URL-Mustern haben. Sie können die Datei "web.xml"
konfigurieren, um Filter zu definieren, die die möglichen URLs angeben, unter denen der Filter aufgerufen werden kann.
- Kontextfelder und Parameter hinzufügen, um Informationen zu Anforderungen abzurufen Sie können Informationen zu Anforderungen mit HttpHeaders-, UriInfo-, Request- oder SecurityContext-Objekten abrufen.
- Assemblieren Sie JAX-RS-Webanwendungen.
- Nachdem Sie die Java-Klassendateien für Ihre JAX-RS-Webanwendung
entwickelt und die Datei "web.xml" bearbeitet haben,
um das JAX-RS-Servlet zu aktivieren, können Sie die Anwendung assemblieren. Assemblieren Sie die Webanwendung in einem WAR-Paket (Webarchiv). Sie
können das WAR-Paket in einem EAR-Paket (Unternehmensarchiv) assemblieren,
falls dies erforderlich ist.
- Implementieren Sie JAX-RS-Webanwendungen.
- Wenn Sie die JAX-RS-Webanwendung assembliert haben, müssen Sie das WAR-Paket oder das EAR-Paket auf dem Anwendungsserver implementieren.
Ergebnisse
Sie haben Kontextobjekte implementiert, um weitere Informationen zu Anforderungen, die an Ihre JAX-RS-Webanwendung gerichtet sind, abzurufen.