Désactivation de l'environnement d'exécution JAX-RS

Vous devez parfois désactiver l'environnement d'exécution d'API Java™ for RESTful Web Services (JAX-RS). Lors de la désactivation de l'environnement d'exécution JAX-RS, les fonctions JAX-RS ne sont pas disponibles, y compris les fonctions d'exécution JAX-RS de base, l'intégration d'exécution Enterprise JavaBeans (EJB), l'intégration d'exécution Java Contexts and Dependency Injection (JCDI) et l'intégration de conteneur Web Servlet 3.0.

Pourquoi et quand exécuter cette tâche

En désactivant l'environnement d'exécution JAX-RS, tout traitement associé JAX-RS de l'application, y compris le traitement des classes avec des annotations JAX-RS scannées, des métadonnées EJB et l'activation de bean JCDI, n'est plus effectué. L'environnement d'exécution JAX-RS n'est pas utilisé pour traiter les demandes et réponses vers/de le conteneur Web.

Pratiques recommandées Pratiques recommandées: La désactivation de l'environnement d'exécution JAX-RS ne désactive pas l'analyse d'annotation basée sur Servlet 3.0 pour les annotations JAX-RS telles que javax.ws.rs.Path. Pour désactiver l'analyse d'annotation, définissez l'attribut metadata-complete. Si l'analyse d'annotation est désactivée, elle l'est pour tous les autres composants hors JAX-RS.bprac

Les points de connexion explicites à l'environnement d'exécution IBM® JAX-RS sont la classe de servlet com.ibm.websphere.jaxrs.server.IBMRestServlet et la classe de filtre com.ibm.websphere.jaxrs.server.IBMRestFilter. Si vous spécifiez ces classes en servlet-class ou servlet-filter dans le fichier web.xml du module Web, l'environnement d'exécution IBM JAX-RS est utilisé pour traiter les demandes de ce servlet.

Pour empêcher l'environnement d'exécution JAX-RS d'effectuer ceci, remplacez ces classes par tout autre classe de filtre ou servlet pouvant gérer des demandes attendues dans le servlet, ou supprimez complètement le servlet du fichier web.xml.

Eviter les incidents Eviter les incidents: Le remplacement de la classe IBMRestServlet par une autre peut modifier le comportement existant de l'application. La suppression du servlet entraîne des demandes non traitées.gotcha

Même sans utiliser explicitement les classes com.ibm.websphere.jaxrs.server.IBMRestServlet ou com.ibm.websphere.jaxrs.server.IBMRestFilter, l'environnement d'exécution d'intégration JAX-RS peut encore traiter l'application. Par exemple, si le fichier web.xml d'un module Web est basé sur Servlet 3.0 et que les bonnes conditions sont réunies selon la spécification JSR-311, les traitements d'environnement d'exécution d'intégration JAX-RS analysent les classes avec les annotations JAX-RS et peuvent injecter un servlet pouvant gérer des demandes dans les ressources JAX-RS de l'application.

Pour désactiver cette fonctionnalité et d'autres fonctionnalités telles que l'intégration EJB et JCDI, définissez la propriété de machine virtuelle personnalisée com.ibm.websphere.jaxrs.server.DisableIBMJAXRSEngine Java sur le serveur d'application avec une valeur de true.

Procédure

  1. Supprimez les références à IBMRestServlet et IBMRestFilter du fichier web.xml. L'exemple suivant illustre un exemple de fichier web.xml à partir d'un application qui utilise l'environnement d'exécution IBM JAX-RS :
    <?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>
    L'exemple suivant illustre la manière dont le fichier web.xml s'occupe de la suppression des références aux classes IBMRestServlet et IBMRestFilter :
    <?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. Définissez la propriété JVM personnalisée com.ibm.websphere.jaxrs.server.DisableIBMJAXRSEngine sur le serveur d'application avec une valeur de true.
  3. Redémarrez le serveur d'application pour que la propriété JVM personnalisée prenne effet.

Résultats

Vous avez désactivé le traitement de votre application de l'environnement d'exécution JAX-RS.


Icône indiquant le type de rubrique Rubrique de tâche



Icône d'horodatage Dernière mise à jour: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_jaxrs_disable_runtime
Nom du fichier : twbs_jaxrs_disable_runtime.html