Inhabilitación del entorno de ejecución de JAX-RS

Hay casos en los que debe inhabilitar el entorno de ejecución de JAX-RS (API de Java™ API para servicios web RESTful). Al inhabilitar el entorno de ejecución de JAX-RS, las características de JAX-RS no están disponibles, incluidas las posibilidades del tiempo de ejecución de JAX-RS base, la integración del tiempo de ejecución de EJB (Enterprise JavaBeans), la integración de JCDI (Java Contexts and Dependency Injection) y la integración del contenedor web de Servlet 3.0.

Acerca de esta tarea

Al inhabilitar el entorno de ejecución de JAX-RS, se deja de realizar cualquier proceso relacionado con JAX-RS de la aplicación, incluido el proceso de las clases con las anotaciones de JAX-RS exploradas, los metadatos de EJB y la habilitación del bean JCDI. El entorno de ejecución de JAX-RS no se utiliza para procesar solicitudes y respuestas para el contenedor web y desde el mismo.

Best practice Best practice: La inhabilitación del entorno de ejecución de JAX-RS no inhabilita la exploración de anotaciones basada en Servlet 3.0 para las anotaciones de JAX-RS, como por ejemplo javax.ws.rs.Path. Para inhabilitar la exploración de anotaciones, establezca el atributo metadata-complete. Si la exploración de anotaciones está inhabilitada, se inhabilita para todos los demás componentes fuera de JAX-RS. bprac

Los puntos de conexión explícitos con el entorno de ejecución de IBM® JAX-RS son la clase de servlet com.ibm.websphere.jaxrs.server.IBMRestServlet y la clase de filtro com.ibm.websphere.jaxrs.server.IBMRestFilter. Si especifica estas clases como clase de servlet o filtro de servlet en el archivo web.xml del módulo web, el entorno de ejecución de IBM JAX-RS se utiliza para procesar las solicitudes para dicho servlet.

Para inhabilitar el entorno de ejecución de JAX-RS para que no lo haga, sustituya estas clases por cualquier otra clase de filtro o de servlet que pueda manejar solicitudes esperadas en el servlet, o elimine el servlet totalmente del archivo web.xml.

Avoid trouble Avoid trouble: La sustitución de la clase IBMRestServlet por otra podría modificar el comportamiento existente en la aplicación. Eliminar totalmente el servlet hace que los las solicitudes no se procesen. gotcha

Aunque no utilice explícitamente las clases com.ibm.websphere.jaxrs.server.IBMRestServlet o com.ibm.websphere.jaxrs.server.IBMRestFilter, el entorno de ejecución de integración JAX-RS todavía podría procesar la aplicación. Por ejemplo, si el archivo web.xml de un módulo web se basa en Servlet 3.0, y se cumplen las condiciones adecuadas de acuerdo con la especificación JSR-311, el entorno de ejecución de integración JAX-RS procesa las clases exploradas con las anotaciones de JAX-RS y puede inyectar un servlet que puede manejar solicitudes para los recursos JAX-RS de la aplicación.

Para inhabilitar esta funcionalidad, y otras funciones como la integración de EJB y JCDI, establezca la propiedad com.ibm.websphere.jaxrs.server.DisableIBMJAXRSEngine personalizada de la JVM (máquina virtual Java) en el servidor de aplicaciones con un valor de true.

Procedimiento

  1. Elimine las referencias a IBMRestServlet y IBMRestFilter del archivo web.xml. El ejemplo siguiente muestra un archivo web.xml de ejemplo de una aplicación que utiliza el entorno de ejecución de 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>
    The following example illustrates how the web.xml file looks after removing the references to the IBMRestServlet and IBMRestFilter classes:
    <?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. Establezca la propiedad JVM personalizada com.ibm.websphere.jaxrs.server.DisableIBMJAXRSEngine en el servidor de aplicaciones con un valor de true.
  3. Reinicie el servidor de aplicaciones para que la propiedad JVM personalizada entre en vigor.

Resultados

Tiene el entorno de ejecución de JAX-RS inhabilitado del proceso de la aplicación.


Icon that indicates the type of topic Task topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_jaxrs_disable_runtime
File name: twbs_jaxrs_disable_runtime.html