Datei "web.xml" für JAX-RS-Filter konfigurieren

Die Datei "web.xml" enthält Informationen zur Struktur und zu den externen Abhängigkeiten von Webkomponenten im Modul und beschreibt, wie die Komponenten zur Laufzeit verwendet werden. Wenn Sie den Web-Container für die Ausführung von JAX-RS-Anwendungen (Java™ API for RESTful Web Services) aktivieren möchten, können Sie in der Datei "web.xml" Filter definieren und die URLs für das Aufrufen der Filter angeben.

Informationen zu diesem Vorgang

Sie können die Datei "web.xml" für Ihre Webanwendung konfigurieren, um den JAX-RS-Anwendungscode zu aktivieren. Sie können einen IBM® spezifischen JAX-RS-Filter für die Ausführung Ihres JAX-RS-Codes an. Die Datei "web.xml" enthält Konfigurations- und Deployment-Informationen für die Webkomponenten, die eine Webanwendung enthalten. Weitere Informationen zu dieser Implementierungsdeskriptordatei finden Sie in den Informationen zur Konfiguration der Datei "web.xml" für JAX-RS.

Wenn Sie Servlets verwenden möchten, wird jeder Servletpfad, der in der Datei "web.xml" definiert ist, an den Basis-URL angefügt. Filter fügen keinen Pfad an den Basis-URL der Ressource an. Stattdessen zeigen URL-Zuordnungen die möglichen URLs an, mit denen der Filter aufgerufen werden kann. Wenn beispielsweise eine Stammressource den Wert myresource für "@javax.ws.rs.Path" hat, lautet der endgültige URL der Ressource http://<Hostname>:<Web-Container-Port>/<Kontextstammverzeichnis_der_Webanwendung>/myresource. Das URL-Zuordnungsmuster für den Filter muss mit myresource übereinstimmen, damit die Stammressource richtig bereitgestellt wird. Für dieses Beispiel können Sie für das URL-Muster /* oder /myresource verwenden. Wenn es mehrere Ressourcen in der Anwendung gibt, muss das URL-Muster für den Filter mit allen Ressourcen übereinstimmen. Das Muster /* ist ein allgemeiner Wert für den Filter.

Wenn der eingehende Anforderungs-URL nicht mit JAX-RS-Ressourcen in der JAX-RS-Anwendung übereinstimmt, wird die Anforderung an die übrige Filterkette übergeben. Je nach Anwendung können Sie das Filterverhalten so gestalten, dass Anforderungen von der JAX-RS-Anwendung bereitgestellt werden. Ist keine JAX-RS-Anwendung verfügbar, kann die Anforderung an ein zugrunde liegendes Web-Container-Artefakt, z. B. eine JavaServer Page (JSP), weitergeleitet werden. Wenn der Web-Container kein übereinstimmendes Artefakt hat, ist der Web-Container für die Fehlerantwort zuständig.

Vorgehensweise

  1. Öffnen Sie die Datei "WEB-INF/web.xml".
  2. Öffnen Sie Ihren Filter in der Datei "WEB-INF/web.xml". Fügen Sie der Datei "WEB-INF/web.xml" die folgende Filterdefinition hinzu. Ersetzen Sie die Variable eindeutiger_Filtername durch einen eindeutigen Filternamen. Außerdem müssen Sie die Variable Java-Klassenname durch das vollständige Java-Paket und den Klassennamen der Java-Unterklasse der JAX-RS-Anwendung ersetzen.
    <filter>
             <filter-name>eindeutiger_Filtername</filter-name>
             <filter-class>com.ibm.websphere.jaxrs.server.IBMRestFilter</filter-class>
             <init-param>
                     <param-name>javax.ws.rs.Application</param-name>
                     <param-value>Java-Klassenname</param-value>
             </init-param>
     </filter>
  3. Optional: Wenn in einer Webanwendung mehrere Unterklassen der JAX-RS-Anwendung benötigt werden, müssen Sie in der Filterdefinition, die Sie zur Datei "WEB-INF/web.xml" hinzufügen, einen zusätzlichen Parameter für die Filterinitialisierung, requestProcessorAttribute, aufnehmen. Im folgenden Servlet müssen Sie die Variable eindeutiger_Filtername durch den vollständigen Filternamen, die Variable Java-Klassenname durch das vollständige Java-Paket und den Klassennamen der Java-Unterklasse der JAX-RS-Anwendung und schließlich die Variable eindeutige_Kennung durch eine eindeutige Kennung ersetzen.
    <filter>
       <filter-name>eindeutiger_Filtername_a</filter-name>
       <filter-class>com.ibm.websphere.jaxrs.server.IBMRestFilter</filter-class>
       <init-param>
           <param-name>javax.ws.rs.Application</param-name>
           <param-value>Java_Klassenname_a</param-value>
       </init-param>
       
       <init-param>
           <param-name>requestProcessorAttribute</param-name>
           <param-value>eindeutige_Kennung_a</param-value>
       </init-param>
    </filter>
    
    <filter>
       <filter-name>eindeutiger_Filtername_b</filter-name>
       <filter-class>com.ibm.websphere.jaxrs.server.IBMRestFilter</filter-class>
       <init-param>
           <param-name>javax.ws.rs.Application</param-name>
           <param-value>Java-Klassenname_b</param-value>
       </init-param>
            
       <init-param>
           <param-name>requestProcessorAttribute</param-name>
           <param-value>eindeutige_Kennung_b</param-value>
       </init-param>
    </filter
  4. Fügen Sie in der Datei "WEB-INF/web.xml" für jede Filterdefinition Filterzuordnungen hinzu.

    Das in der Filterzuordnung angegebene URL-Muster definiert im Container die gültigen URL-Muster für das Aufrufen des Filters IBMRestFilter. Wenn ein eingehender Anforderungs-URL mit dem URL-Muster kompatibel ist, wird der Filter IBMRestFilter aufgerufen. Stimmt der Anforderungs-URL nicht überein, wird der Filter nicht aufgerufen. Die Anforderungs-URLs beginnen immer mit dem Kontextstammverzeichnis für den Filter. Sehen Sie sich die folgenden Beispiele für Filterzuordnungen an:

    <filter-mapping>
        <filter-name>filter_name</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    Nehmen Sie beispielsweise an, Sie hätten die folgenden zwei Ressourcen:
    @javax.ws.rs.Path("myresource")
    public class MyResource {
    
    }
    @javax.ws.rs.Path("myresource2")
    public class MyResource2 {
    
    }
    Sie können mit dem folgenden URL auf die Ressourcen zugreifen:
    http://<Hostname>:<Web-Container-Port>/<Kontextstammverzeichnis_der_Webanwendung>/myresource
    http://<Hostname>:<Web-Container-Port>/<Kontextstammverzeichnis_der_Webanwendung>/myresource2

    Sie können die folgende Filterzuordnung anwenden:

    <filter-mapping>
            <filter-name>filter_name</filter-name>
            <url-pattern>/myresource</url-pattern>
    </filter-mapping>   
    In diesem Fall können Sie die Stammressource "myResource" über den folgenden URL aufrufen:
    http://<Hostname>:<Web-Container-Port>/<Kontextstammverzeichnis_der_Webanwendung>/myresource
    Dieser URL ruft den Filter IBMRestFilter auf, und der URL kann die Ressource lokalisieren. Da der Pfad /myresource mit dem URL-Muster in der Filterzuordnung übereinstimmt, wird der Filter IBMRestFilter aufgerufen, und es ist eine Stammressource mit einem übereinstimmenden @Path-Wert vorhanden.
    Nehmen Sie einmal an, Sie geben den folgenden URL ein:
    http://<Hostname>:<Web-Container-Port>/<Kontextstammverzeichnis_der_Webanwendung>/myresource2
    In diesem Fall wird der Filter IBMRestFilter nicht aufgerufen, weil das URL-Muster /myresource nicht mit /myresource2 übereinstimmt.

Ergebnisse

Nachdem Sie in der Datei "WEB-INF/web.xml" angegeben haben, dass Filter angewendet werden sollen, wird die Webanwendung für die JAX-RS-Anwendung konfiguriert.

Beispiel

Das folgende Beispiel veranschaulicht eine Datei "WEB-INF/web.xml", die konfiguriert ist, Filter auf eine JAX-RS-Anwendung anzuwenden. In diesem Beispiel wird der Filter RestApplication1 definiert. Stimmt ein eingehender Anforderungs-URL mit einer Ressource im Filter "RestApplication1" überein, wird die Antwort im Filter "RestApplication1" generiert. Wenn der eingehende Anforderungs-URL mit einer Ressource im Filter "RestApplication1" nicht übereinstimmt, jedoch mit einer Ressource im Filter "OtherRestApplicationFilter" übereinstimmt, wird die Antwort im Filter "OtherRestApplicationFilter" generiert. Stimmt der eingehende URL mit keinem der Filter überein, kann die Anforderung von einem anderen Web-Container-Artefakt, z. B. einer JavaServer Page (JSP), bereitgestellt werden.

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" version="2.4" 
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_2_4.xsd">

     <filter>
        <filter-name>RestApplication1</filter-name>
        <filter-class>com.ibm.websphere.jaxrs.server.IBMRestFilter</filter-class>
        <init-param>
            <param-name>javax.ws.rs.Application</param-name>
            <param-value>com.ibm.rest.sample.app1.MyApplication</param-value>
        </init-param>
        <init-param>
            <param-name>requestProcessorAttribute</param-name>
            <param-value>restApplication1ProcessorID</param-value>
        </init-param>
    </filter>
     <filter>
        <filter-name>OtherRestApplicationServlet</filter-name>
        <filter-class>com.ibm.websphere.jaxrs.server.IBMRestFilter</filter-class>
        <init-param>
            <param-name>javax.ws.rs.Application</param-name>
            <param-value>com.ibm.rest.other.sample.OtherApplication</param-value>
        </init-param>
        <init-param>
            <param-name>requestProcessorAttribute</param-name>
            <param-value>otherRestApplicationID </param-value>
        </init-param>
    </filter>

    <filter-mapping>
        <filter-name>RestApplication1</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <filter-mapping>
        <filter-name>OtherRestApplicationServlet</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

Nächste Schritte

Assemblieren Sie die Webanwendung.


Symbol, das den Typ des Artikels anzeigt. Taskartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_jaxrs_configwebxml_jrsfilters
Dateiname:twbs_jaxrs_configwebxml_jrsfilters.html