Configurando o Arquivo web.xml para Servlets JAX-RS

O arquivo web.xml contém informações sobre a estrutura e dependências externas de componentes da Web no módulo e descreve como os componentes são usados no tempo de execução. Para ativar o contêiner da Web para executar aplicativos Java™ API for RESTful Web Services (JAX-RS), é possível configurar o arquivo web.xml para apontar diretamente para o servlet IBM® JAX-RS. Ao usar servlets, é possível definir um caminho de servlet no arquivo web.xml que é anexado à URL base.

Sobre esta tarefa

É possível configurar o arquivo web.xml para seu aplicativo da web para ativar o código do aplicativo JAX-RS. É possível especificar um servlet JAX-RS específico da IBM a ser usado para executar seu código JAX-RS O arquivo web.xml fornece informações de configuração e de implementação para os componentes da Web que compreendem um aplicativo da Web. Leia sobre como configurar o arquivo web.xml para JAX-RS para saber mais sobre este arquivo descritor de implementação.

Ao usar servlets, qualquer caminho de servlet definido no web.xml é anexado à URL base. Por exemplo, se um recurso raiz tiver um valor @javax.ws.rs.Path de myresource e um caminho de servlet de myservletpath, a URL final do recurso será http://<your_hostname>:<your Web_container_port>/<context_root_of_Web_application>//myservletpath/myresource.

Procedimento

  1. Abra o arquivo WEB-INF/web.xml .
  2. Inclua a seguinte definição de servlet no arquivo WEB-INF/web.xml .
    No servlet a seguir, é necessário substituir unique_servlet_name pelo nome de servlet exclusivo. Além disso, substitua a variável Java_class_name pelo pacote Java completo e o nome de classe da subclasse 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) Se houver diversas subclasses de aplicativo JAX-RS necessárias no mesmo aplicativo da Web, você deverá incluir um parâmetro de inicialização de servlet adicional, requestProcessorAttributena definição de servlet que você incluir no arquivo WEB-INF/web.xml .
    No servlet a seguir, você deve substituir o unique_servlet_name por seu nome de servlet exclusivo, a variável Java_class_name pelo pacote Java completo e o nome de classe da subclasse javax.ws.rs.core.Application e a variável unique_identifier com um 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. Inclua mapeamentos de servlet no arquivo WEB-INF/web.xml para cada definição de servlet.
    O caminho do servlet é anexado na raiz de contexto do aplicativo da Web.
    <servlet-mapping>
         <servlet-name>servlet_name</servlet-name>
         <url-pattern>servlet_pattern_path</url-pattern>
    </servlet-mapping>
    Por exemplo, se servlet_pattern_path for /restapi/*, todos os pedidos válidos iniciam na seguinte URL:
    http://<your_hostname>:<your Web_container_port>/<context_root_of_Web_application>/restapi/

Resultados

Após editar o arquivo WEB-INF/web.xml, o aplicativo da web é configurado para o aplicativo JAX-RS.

Exemplo

O exemplo a seguir ilustra um arquivo WEB-INF/web.xml que configura um caminho de servlet para um aplicativo JAX-RS. O caminho do servlet que é definido no arquivo web.xml é anexado à 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>

O quê fazer em seguida

Monte o aplicativo da Web.