Sie können JAX-RS-Anwendungen (Java™ API
for RESTful Web Services) je nach Anforderungen auf verschiedene Arten 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.
Informationen zu diesem Vorgang
Die Spezifikation JAX-RS 1.1 unterstützt mehrere neue Methoden für die Konfiguration
einer JAX-RS-Anwendung. Sie können den integrierten Annotationsscan für die Unterstützung der automatischen
Konfiguration der Anwendung verwenden.
Optional können Sie Ihrer Anwendung Unterklassen vom Typ "javax.ws.rs.core.Application" hinzufügen und
die erforderlichen URL-Muster anschließend entweder mit der Annotation "javax.ws.rs.ApplicationPath"
oder mit einer Servletdefinition "web.xml" hinzufügen. Wenn Sie die
JAX-RS-Implementierung von IBM® verwenden, müssen Sie die
Servletklassenimplementierung nicht angeben, weil sie der Konfiguration des Webmoduls beim Starten der
JAX-RS-Anwendung automatisch hinzugefügt wird.
Wenn Sie eine Datei "web.xml" verwenden, müssen Sie eine Datei "web.xml"
der Spezifikation Java Servlet
3.0 verwenden.
Vorgehensweise
- JAX-RS-Anwendung mit nur einer einzigen JAX-RS-Standardanwendung in der Datei "web.xml" konfigurieren. Verwenden Sie diese Methode, wenn Sie nur eine einzige JAX-RS-Anwendung benötigen und alle
Ressourcenklassen nach einem einzigen URL-Muster gesucht werden.
Mit dieser Methode können Sie bei Bedarf auch Integritätsbedingungen für die Sicherheit angeben.
- Fügen Sie alle JAX-RS-Ressourcen- und -Providerklassen dem Verzeichnis
"WEB-INF/classes" oder "WEB-INF/lib" für Ihre Webanwendung hinzu. Sie müssen Ihrer Webanwendung keine Unterklasse vom Typ "javax.ws.rs.core.Application" hinzufügen.
- Fügen Sie in Ihrer Datei "web.xml" eine Servletdefinition mit
javax.ws.rs.core.Application als Servletnamen hinzu. Sie müssen keine Servletklasse hinzufügen. Sie müssen der Datei "web.xml" ein Servlet-URL-Muster
hinzufügen.
Die Laufzeitumgebung des Anwendungsservers fügt der Konfiguration des Webmoduls beim Starten
der JAX-RS-Anwendung die spezielle IBM JAX-RS-Implementierung hinzu, z. B.:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_3_0.xsd"
version="3.0">
<servlet>
<servlet-name>javax.ws.rs.core.Application</servlet-name>
</servlet> <servlet-mapping>
<servlet-name>javax.ws.rs.core.Application</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
Die JAX-RS-Ressourcen sind jetzt unter einem URL wie dem folgenden verfügbar:
http://{Hostname}:{Port}/{Kontextstammverzeichnis_des_Webmoduls}/{Wert_des_URL-Musters_für_Web.xml}/{Wert_von_@javax.ws.rs.Path}
- JAX-RS-Anwendung mit der Unterklasse vom Typ "javax.ws.rs.core.Application" und der Datei "web.xml" konfigurieren. Verwenden Sie diese Methode, wenn Sie mehrere JAX-RS-Anwendungen oder
nur bestimmte Ressourcen in bestimmten
JAX-RS-Anwendungen mit bestimmten URL-Mustern benötigen. Mit dieser Methode können Sie bei Bedarf auch Integritätsbedingungen für die Sicherheit angeben.
- Erstellen Sie eine Unterklasse vom Typ "javax.ws.rs.core.Application". Geben Sie den Methoden "getClasses()" und "getSingletons()" Ihrer
Unterklasse vom Typ "javax.ws.rs.core.Application" die relevanten JAX-RS-Ressourcen und -Provider zurück.
Wenn Sie in den Methoden "getClasses()" und "getSingletons()" leere Sätze zurückgeben,
werden alle JAX-RS-Ressourcen- und -Providerklassen, die in der Anwendung gefunden werden, der
Unterklasse der JAX-RS-Anwendung hinzugefügt, z. B.:
package com.example;
public class MyApplication extends javax.ws.rs.core.Application {
}
In diesem Beispiel werden die Standardimplementierungen der Methoden
"getClasses()" und "getSingletons()" der Unterklasse vom Typ "javax.ws.rs.core.Application" verwendet, die
leere Sätze zurückgeben.
Deshalb wird angenommen, dass alle relevanten JAX-RS-Klassen von der
Unterklasse vom Typ "javax.ws.rs.core.Application" zurückgegeben werden.
- Fügen Sie Ihrer Webanwendung die Unterklasse vom Typ "javax.ws.rs.core.Application" hinzu.
- Fügen Sie der Datei "web.xml" eine partielle Servletdefinition hinzu. Der Servletname ist der vollständige Name der Unterklasse vom Typ "javax.ws.rs.core.Application".
Definieren Sie nicht die Servletklasse (servlet-class). Sie müssen der Datei "web.xml" ein Servlet-URL-Muster
hinzufügen.
Die Laufzeitumgebung des Anwendungsservers fügt der Konfiguration des Webmoduls beim Starten
der JAX-RS-Anwendung die spezielle IBM JAX-RS-Implementierung hinzu, z. B.:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_3_0.xsd"
version="3.0">
<servlet>
<servlet-name>com.example.MyApplication</servlet-name>
</servlet> <servlet-mapping>
<servlet-name>com.example.MyApplication</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
Die JAX-RS-Ressourcen sind jetzt unter einem URL wie dem folgenden verfügbar:
http://{Hostname}:{Port}/{Kontextstammverzeichnis_des_Webmoduls}/{Wert_des_URL-Musters_für_Web.xml_für_Anwendungsunterklasse}/{Wert_von_@javax.ws.rs.Path}
- JAX-RS-Anwendung ohne Datei "web.xml" konfigurieren. Verwenden Sie diese Methode, wenn Sie keine Datei "web.xml" verwenden möchten.
Wenn Sie diese Methode verwenden, können Sie keine Integritätsbedingungen für die Sicherheit angeben.
Wenn Sie Integritätsbedingungen für die Sicherheit angeben möchten, müssen Sie eine Datei "web.xml" verwenden.
- Erstellen Sie eine Unterklasse vom Typ "javax.ws.rs.core.Application". Geben Sie den Methoden "getClasses()" und "getSingletons()" Ihrer
Unterklasse vom Typ "javax.ws.rs.core.Application" die relevanten JAX-RS-Ressourcen und -Provider zurück.
Wenn Sie in den Methoden "getClasses()" und "getSingletons()" leere Sätze zurückgeben,
werden alle JAX-RS-Ressourcen- und -Providerklassen, die in der Anwendung gefunden werden, der
Unterklasse der JAX-RS-Anwendung hinzugefügt, z. B.:
package com.example;
public class MyApplication extends javax.ws.rs.core.Application {
}
In diesem Beispiel werden die Standardimplementierungen der Methoden
"getClasses()" und "getSingletons()" der Unterklasse vom Typ "javax.ws.rs.core.Application" verwendet, die
leere Sätze zurückgeben.
Deshalb wird angenommen, dass alle relevanten JAX-RS-Klassen von der
Unterklasse vom Typ "javax.ws.rs.core.Application" zurückgegeben werden.
- Fügen Sie der Unterklasse vom Typ "javax.ws.rs.core.Application" eine Annotation "javax.ws.rs.ApplicationPath" hinzu. Die Annotation "ApplicationPath" wird mit der Spezifikation JAX-RS 1.1 unterstützt. Der Wert der Annotation
"ApplicationPath" wird als Servlet-URL-Muster verwendet, das dem Servlet-URL-Muster in der Datei
"web.xml" entspricht, z. B.:
package com.example;
@javax.ws.rs.ApplicationPath("rest")
public class MyApplication extends javax.ws.rs.core.Application {
}
- Fügen Sie Ihrer Webanwendung die Unterklasse vom Typ "javax.ws.rs.core.Application" hinzu. Wenn die Anwendung gestartet wird, sind die Ressourcen unter dem folgenden URL verfügbar:
http://{Hostname}:{Port}/{Kontextstammverzeichnis_des_Webmoduls}/{Wert_von_@javax.ws.rs.ApplicationPath}}/{Wert_von_@javax.ws.rs.Path}
Ergebnisse
Sie haben Ihre JAX-RS-Anwendung mit Methoden konfiguriert, die von JAX-RS 1.1
unterstützt werden, indem Sie die Vorteile des Annotationsscans für die automatische Konfiguration der Anwendung nutzen.