JAX-RS-Laufzeitumgebung inaktivieren

Einige Fälle erfordern die Inaktivierung der Laufzeitumgebung von Java™ API for RESTful Web Services (JAX-RS). Wenn die JAX-RS-Laufzeitumgebung inaktiviert ist, sind JAX-RS-Features nicht verfügbar, einschließlich Basisfunktionen der JAX-RS-Laufzeit, EJB-Laufzeitintegration, JCDI-Laufzeitintegration und Servlet-3.0-Web-Container-Integration.

Informationen zu diesem Vorgang

Die Inaktivierung der JAX-RS-Laufzeitumgebung hat zur Folge, dass alle Anwendungsverarbeitungen im Zusammenhang mit JAX-RS, einschließlich die Verarbeitung von Klassen mit gescannten JAX-RS-Annotationen, EJB-Metadaten und JCDI-Bean-Aktivierung, nicht mehr ausgeführt werden. Die JAX-RS-Laufzeitumgebung wird nicht für die Verarbeitung von Anforderungen an den und Antworten vom Web-Container verwendet.

Bewährtes Verfahren Bewährtes Verfahren: Die Inaktivierung der JAX-RS-Laufzeitumgebung inaktiviert nicht die auf Servlet 3.0 basierende Annotationssuche für JAX-RS-Annotationen wie z. B. javax.ws.rs.Path. Wenn Sie die Annotationssuche inaktivieren möchten, setzen Sie das Attribut metadata-complete entsprechend. Wenn die Annotationssuche inaktiviert ist, ist sie für alle anderen Komponenten außerhalb von JAX-RS ebenfalls inaktiviert. bprac

Die expliziten Verbindungspunkte zur IBM® JAX-RS-Laufzeitumgebung sind die Servletklasse com.ibm.websphere.jaxrs.server.IBMRestServlet und die Filterklasse com.ibm.websphere.jaxrs.server.IBMRestFilter. Wenn Sie diese Klassen als Servletklasse oder Servletfilter in der Datei web.xml des Webmoduls angegeben haben, wird die IBM JAX-RS-Laufzeitumgebung für die Verarbeitung der Anforderungen für dieses Servlet verwendet.

Wenn Sie die JAX-RS-Laufzeitumgebung dahingehend inaktivieren möchten, ersetzen Sie diese Klassen durch eine beliebige andere Servlet- oder Filterklasse, die die erwarteten Anforderungen an das Servlet bearbeiten kann, oder entfernen Sie das Servlet vollständig aus der Datei web.xml.

Fehler vermeiden Fehler vermeiden: Wenn Sie die Klasse IBMRestServlet durch eine andere ersetzen kann dies vorhandenes Verhalten in der Anwendung ändern. Wenn Sie das Servlet vollständig entfernen, werden keine Anforderungen verarbeitet. gotcha

Auch wenn Sie die Klassen com.ibm.websphere.jaxrs.server.IBMRestServlet bzw. com.ibm.websphere.jaxrs.server.IBMRestFilter nicht explizit verwenden, kann es sein, dass die JAX-RS-Laufzeitumgebung die Anwendung weiterhin verarbeitet. Wenn beispielsweise die Datei web.xml eines Webmoduls auf Servlet 3.0 basiert und die entsprechenden Bedingungen gemäß der JSR-311-Spezifikation erfüllt sind, verarbeitet die JAX-RS-Laufzeitumgebung gescannte Klassen mit JAX-RS-Annotationen und könnte ein Servlet injizieren, das Anforderungen an die JAX-RS-Ressourcen in der Anwendung verarbeiten kann.

Wenn Sie diese und andere Funktionen, wie z. B. EJB- und JCDI-Integration, inaktivieren möchten, setzen Sie die angepasste JVM-Eigenschaft com.ibm.websphere.jaxrs.server.DisableIBMJAXRSEngine im Anwendungsserver auf den Wert true.

Vorgehensweise

  1. Entfernen Sie Referenzen auf IBMRestServlet und IBMRestFilter aus der Datei web.xml. Das folgende Beispiel veranschaulicht eine Beispieldatei web.xml aus einer Anwendung, die die IBM JAX-RS-Laufzeitumgebung verwendet:
    <?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>MyRestApplication1</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.websphere.jaxrs.example.Application1</param-value>
            			</init-param>
            <init-param>
                <param-name>requestProcessorAttribute</param-name>
                <param-value>MyRestApplication1RequestProcessorAttribute</param-value>
            			</init-param>
            		<load-on-startup>1</load-on-startup>
          </servlet>      <servlet>
            <servlet-name>MyNonJAXRSApplication</servlet-name>
            <servlet-class>com.ibm.websphere.example.NonJAXRSServlet</servlet-class>
            		<load-on-startup>1</load-on-startup>
          </servlet>    	<filter>
            <filter-name>MyRestApplication2</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.websphere.jaxrs.example.Application2</param-value>
            			</init-param>
            <init-param>
                <param-name>requestProcessorAttribute</param-name>
                <param-value>MyRestApplication2RequestProcessorAttribute</param-value>
            			</init-param>
        	</filter>
        <servlet-mapping>
            <servlet-name>MyRestApplication1</servlet-name>
            <url-pattern>/jaxrsapp1/*</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
            <servlet-name>MyNonJAXRSApplication</servlet-name>
            <url-pattern>/nonjaxrsapp/*</url-pattern>
        </servlet-mapping>
        <filter-mapping>
            <filter-name>MyRestApplication2</servlet-name>
            <url-pattern>/jaxrsapp2/*</url-pattern>
        </filter-mapping>
    <web-app>
    Das folgende Beispiel veranschaulicht, wie die Datei web.xml aussieht, nachdem dieReferenzen auf die Klassen IBMRestServlet und IBMRestFilter entfernt wurden:
    <?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>MyNonJAXRSApplication</servlet-name>
            <servlet-class>com.ibm.websphere.example.NonJAXRSServlet</servlet-class>
            		<load-on-startup>1</load-on-startup>
          </servlet>    <servlet-mapping>
            <servlet-name>MyNonJAXRSApplication</servlet-name>
            <url-pattern>/nonjaxrsapp/*</url-pattern>
        </servlet-mapping>
    </web-app>
  2. Setzen Sie die angepasste JVM-Eigenschaft com.ibm.websphere.jaxrs.server.DisableIBMJAXRSEngine im Anwendungsserver auf den Wert true.
  3. Starten Sie den Anwendungsserver erneut, damit die Änderungen an der angepassten JVM-Eigeschaft wirksam werden.

Ergebnisse

Die Verarbeitung Ihrer Anwendung durch die JAX-RS-Laufzeitumgebung ist jetzt inaktiviert.


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_disable_runtime
Dateiname:twbs_jaxrs_disable_runtime.html