Datei 'web.xml' für JAX-RS-Servlets 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. Damit der Web-Container JAX-RS-Anwendungen (Java™ API for RESTful Web Services) ausführen kann, können Sie die Datei web.xml so konfigurieren, dass sie direkt auf das JAX-RS- Servlet IBM® verweist. Wenn Sie Servlets verwenden möchten, können Sie einen Servletpfad in der Datei web.xml definieren, der an die Basis-URL angefügt wird.

Informationen zu dieser Task

Sie können die Datei web.xml für Ihre Webanwendung konfigurieren, um den JAX-RS-Anwendungscode zu aktivieren. Sie können ein IBM spezifisches JAX-RS-Servlet für die Ausführung Ihres JAX-RS-Codes angeben. 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 die Basis-URL angefügt. Wenn eine Stammressource beispielsweise den @javax.ws.rs.Path -Wert myresource und den Servletpfad myservletpathhat, lautet die endgültige URL der Ressource http://<your_hostname>:<your Web_container_port>/<context_root_of_Web_application>//myservletpath/myresource.

Vorgehensweise

  1. Öffnen Sie die Datei WEB-INF/web.xml .
  2. Fügen Sie die folgende Servletdefinition zur Datei WEB-INF/web.xml hinzu.
    Im folgenden Servlet müssen Sie die Variable eindeutiger_Servletname durch Ihren eindeutigen Servletnamen ersetzen. Ersetzen Sie außerdem die Variable Java-Klassenname durch das vollständige Java-Paket und den Klassennamen der Unterklasse javax.ws.rs.core.Application .
    <servlet>
         <servlet-name>unique_servlet_name</servlet-name>
         <servlet-class>com.ibm.websphere.jaxrs.server.IBMRestServlet</servlet-class>
         <init-param>
             <param-name>javax.ws.rs.Application</param-name>
             <param-value>Java_class_name </param-value>
         </init-param>
         <load-on-startup>1</load-on-startup>
    </servlet>
  3. (Optional) Wenn mehrere JAX-RS-Anwendungsunterklassen in derselben Webanwendung erforderlich sind, müssen Sie den zusätzlichen Servletinitialisierungsparameter requestProcessorAttributein die Servletdefinition einschließen, die Sie der Datei WEB-INF/web.xml hinzufügen.
    Im folgenden Servlet müssen Sie unique_servlet_name durch Ihren eindeutigen Servletnamen, die Variable Java_class_name durch den vollständigen Java-Paket und Klassennamen der Unterklasse javax.ws.rs.core.Application und die Variable unique_identifier durch eine eindeutige Kennung ersetzen.
    <servlet>
         <servlet-name>unique_servlet_name_a</servlet-name>
         <servlet-class>com.ibm.websphere.jaxrs.server.IBMRestServlet</servlet-class>
         <init-param>
             <param-name>javax.ws.rs.Application</param-name>
             <param-value>Java_class_name_a </param-value>
         </init-param>
         <init-param>
             <param-name>requestProcessorAttribute</param-name>
             <param-value>unique_identifier_a</param-value>
         </init-param>
         <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet>
         <servlet-name>unique_servlet_name_b</servlet-name>
         <servlet-class>com.ibm.websphere.jaxrs.server.IBMRestServlet</servlet-class>
         <init-param>
             <param-name>javax.ws.rs.Application</param-name>
             <param-value>Java_class_name_b</param-value>
         </init-param>
         <init-param>
             <param-name>requestProcessorAttribute</param-name>
             <param-value>unique_identifier_b </param-value>
         </init-param>
         <load-on-startup>1</load-on-startup>
    </servlet>
  4. Fügen Sie für jede Servletdefinition Servletzuordnungen zur Datei WEB-INF/web.xml hinzu.
    Der Servletpfad wird an das Kontextstammverzeichnis der Webanwendung angefügt.
    <servlet-mapping>
         <servlet-name>servlet_name</servlet-name>
         <url-pattern>servlet_pattern_path</url-pattern>
    </servlet-mapping>
    Wenn der servlet_pattern_path beispielsweise /restapi/*ist, beginnen alle gültigen Anforderungen an der folgenden URL:
    http://<your_hostname>:<your Web_container_port>/<context_root_of_Web_application>/restapi/

Ergebnisse

Nachdem Sie die Datei WEB-INF/web.xml bearbeitet haben, wird die Webanwendung für die JAX-RS-Anwendung konfiguriert.

Beispiel

Das folgende Beispiel veranschaulicht eine Datei WEB-INF/web.xml, die einen Servletpfad für eine JAX-RS-Anwendung konfiguriert. Der Servletpfad, der in der Datei web.xml definiert ist, wird an die Basis-URL angefügt.

<?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">


<servlet>
     <servlet-name>RestApplication1</servlet-name>
     <servlet-class>com.ibm.websphere.jaxrs.server.IBMRestServlet</servlet-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>
     <load-on-startup>1</load-on-startup>
</servlet>

<servlet>
     <servlet-name>OtherRestApplicationServlet</servlet-name>
     <servlet-class>com.ibm.websphere.jaxrs.server.IBMRestServlet</servlet-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> 
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
     <servlet-name> RestApplication1</servlet-name>
     <url-pattern>/rest/api/*</url-pattern>
</servlet-mapping>

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

Nächste Schritte

Assemblieren Sie die Webanwendung.