Configuración del archivo web.xml para servlets de JAX-RS

El archivo web.xml contiene información sobre la estructura y las dependencias externas de los componentes web en el módulo y describe cómo se utilizan los componentes en tiempo de ejecución. Para habilitar el contenedor web para ejecutar aplicaciones JAX-RS (API Java™ para servicios web RESTful), puede configurar el archivo web.xml para que apunte directamente al servlet IBM® JAX-RS. Cuando se utilizan servlets, puede definir una vía de acceso del servlet en el archivo web.xml que se añadirá al URL base.

Acerca de esta tarea

Puede modificar el archivo web.xml para que la aplicación web habilite el código de aplicación de JAX-RS. Puede especificar un servlet JAX-RS específico de IBM para utilizarlo para ejecutar el código JAX-RS. El archivo web.xml proporciona información sobre configuración y despliegue de los componentes web que componen una aplicación web. Lea la información sobre la configuración del archivo web.xml para obtener una idea más clara sobre este archivo descriptor de despliegue.

Cuando se utilizan servlets, cualquier vía de acceso de servlet que está definida en el archivo web.xml se añadirá al URL base. Por ejemplo, si un recurso raíz tiene un valor de @javax.ws.rs.Path de myresource y una vía de acceso de servlet de myservletpath, el URL final del recurso es http://<your_hostname>:<your Web_container_port>/<context_root_of_Web_application>//myservletpath/myresource.

Procedimiento

  1. Abra el archivo WEB-INF/web.xml .
  2. Añada la siguiente definición de servlet al archivo WEB-INF/web.xml .
    En el siguiente servlet, debe sustituir el nombre_servlet_exclusivo por el nombre de su servlet exclusivo. Asimismo, sustituya la variable Java_class_name por el paquete Java completo y el nombre de clase de la subclase 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. (opcional) Si hay varias subclases de aplicación JAX-RS necesarias en la misma aplicación web, debe incluir un parámetro de inicialización de servlet adicional, requestProcessorAttribute, en la definición de servlet que añada al archivo WEB-INF/web.xml .
    En el servlet siguiente, debe sustituir unique_servlet_name por el nombre de servlet exclusivo, la variable Java_class_name por el paquete Java completo y el nombre de clase de la subclase javax.ws.rs.core.Application y la variable unique_identifier por un identificador exclusivo.
    <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. Añada correlaciones de servlet en el archivo WEB-INF/web.xml para cada definición de servlet.
    La vía de acceso de servlet se añadirá en la raíz de contexto de la aplicación web.
    <servlet-mapping>
         <servlet-name>servlet_name</servlet-name>
         <url-pattern>servlet_pattern_path</url-pattern>
    </servlet-mapping>
    Por ejemplo, si servlet_pattern_path es /restapi/*, todas las solicitudes válidas empiezan en el siguiente URL:
    http://<your_hostname>:<your Web_container_port>/<context_root_of_Web_application>/restapi/

Resultados

Después de editar el archivo WEB-INF/web.xml, la aplicación web estará configurada para la aplicación de JAX-RS.

Ejemplo

En el ejemplo siguiente se ilustra un archivo WEB-INF/web.xml que configura una vía de acceso de servlet para una aplicación de JAX-RS. La vía de acceso del servlet que se define en el archivo web.xml se añade al URL base.

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

Qué hacer a continuación

Ensamble la aplicación web.