Puede configurar aplicaciones JAX-RS (API Java™ para servicios web RESTful) de varias maneras en función de sus necesidades. Para sacar partido de la funcionalidad de Java Platform,
Enterprise Edition (Java EE)
6, puede utilizar las prestaciones de exploración de anotaciones.
Mediante la utilización de la exploración de anotación, puede omitir una subclase
javax.ws.rs.core.Application de JAX-RS o tener una subclase javax.ws.rs.core.Application
mínimamente definida.
Acerca de esta tarea
La especificación JAX-RS 1.1 admite varias formas nuevas para configurar una aplicación JAX-RS. Puede utilizar la anotación incorporado como ayuda a la hora de configurar automáticamente la aplicación. Opcionalmente, puede añadir
subclases javax.ws.rs.core.Application a la aplicación y, a continuación, añadir
los patrones de URL necesarios mediante la anotación javax.ws.rs.ApplicationPath o
una definición de servlet web.xml. Cuando utilice la implementación de IBM® JAX-RS, no es necesario que especifique la implementación de clase de servlet, ya que se añade automáticamente a la configuración del módulo web en el momento en que se inicia la aplicación JAX-RS.
Cuando utilice un archivo web.xml, debe utilizar un archivo web.xml Java Servlet 3.0.
Procedimiento
- Configure la aplicación JAX-RS con una sola aplicación predeterminada JAX-RS en el archivo web.xml. Utilice este método si sólo necesita una aplicación
JAX-RS y todas las clases de recursos se encuentran tras un
solo patrón de URL. También puede especificar las restricciones de seguridad
con este método, si es necesario.
- Añada todos los recursos JAX-RS y las clases de proveedor al directorio WEB-INF/classes o WEB-INF/lib de la aplicación web. No tiene que añadir una subclase javax.ws.rs.core.Application
a la aplicación web.
- En el archivo web.xml, añada una definición de servlet con javax.ws.rs.core.Application como nombre de servlet. No es necesario añadir una clase de servlet. Debe añadir un patrón de URL del servlet en el archivo web.xml. El entorno de ejecución del servidor de aplicaciones añade la implementación específica de IBM JAX-RS a la configuración del módulo web cuando se inicia la aplicación de JAX-RS; por ejemplo:
<?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>javax.ws.rs.core.Application</servlet-name>
</servlet>
<servlet-mapping>
<servlet-name>javax.ws.rs.core.Application</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
Los recursos JAX-RS ahora están disponibles en un URL como:
http://{nombre_host}:{puerto}/{context_root_of_Web_ module}/{valor_patrón_URL_Web.xml}/{valor_de_@javax.ws.rs.Path}
- Configure la aplicación JAX-RS utilizando la subclase javax.ws.rs.core.Application y el archivo web.xml. Utilice este método si necesita varias aplicaciones JAX-RS o sólo necesita
recursos específicos en ciertas aplicaciones JAX-RS con patrones de URL específicos. También puede especificar las restricciones de seguridad
con este método, si es necesario.
- Cree una subclase javax.ws.rs.core.Application. En su subclase javax.ws.rs.core.Application, los métodos getClasses() o getSingletons() devuelven los recursos y proveedores JAX-RS pertinentes. Si devuelve conjuntos vacíos en los métodos getClasses() y getSingletons(),
todas las clases de recursos y proveedores de JAX-RS que se encuentren en la aplicación
se añadirán a la subclase de aplicación JAX-RS; por ejemplo:
package com.example;
public class MyApplication extends javax.ws.rs.core.Application {
}
En este ejemplo se utilizan las implementaciones predeterminadas de la subclase javax.ws.rs.core.Application métodos getClasses() y getSingletons() que devuelven conjuntos vacíos. Por consiguiente, se supone que la subclase javax.ws.rs.core.Application devuelve todas las clases JAX-RS correspondientes.
- Añada la subclase javax.ws.rs.core.Application a la aplicación web.
- Añada una definición de servlet parcial en el archivo web.xml. El nombre de servlet es el nombre completo de la subclase javax.ws.rs.core.Application. No defina la clase de servlet. Debe añadir un patrón de URL del servlet en el archivo web.xml. El entorno de ejecución del servidor de aplicaciones añade la implementación específica de IBM JAX-RS a la configuración del módulo web cuando se inicia la aplicación de JAX-RS; por ejemplo:
<?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>com.example.MyApplication</servlet-name>
</servlet>
<servlet-mapping>
<servlet-name>com.example.MyApplication</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
Los recursos JAX-RS ahora están disponibles en un URL como:
http://{nombre_host}:{puerto}/{context_root_of_Web_ module}/{valor_parón_URL_Web.xml_para_subclase_aplicación}/{valor_de_@javax.ws.rs.Path}
- Configure la aplicación JAX-RS sin ningún archivo web.xml. Utilice este método si no desea utilizar ningún archivo web.xml. Si utiliza este método, puede especificar restricciones de seguridad. Para especificar
limitaciones de seguridad, debe utilizar un archivo web.xml.
- Cree una subclase javax.ws.rs.core.Application. En su subclase javax.ws.rs.core.Application, los métodos getClasses() o getSingletons() devuelven los recursos y proveedores JAX-RS pertinentes. Si devuelve conjuntos vacíos en los métodos getClasses() y getSingletons(),
todas las clases de recursos y proveedores de JAX-RS que se encuentren en la aplicación
se añadirán a la subclase de aplicación JAX-RS; por ejemplo:
package com.example;
public class MyApplication extends javax.ws.rs.core.Application {
}
En este ejemplo se utilizan las implementaciones predeterminadas de la subclase javax.ws.rs.core.Application métodos getClasses() y getSingletons() que devuelven conjuntos vacíos. Por consiguiente, se supone que la subclase javax.ws.rs.core.Application devuelve todas las clases JAX-RS correspondientes.
- Añada una anotación javax.ws.rs.ApplicationPath a la subclase
javax.ws.rs.core.Application. La anotación ApplicationPath es compatible con la especificación JAX-RS 1.1. El valor de la anotación ApplicationPath se utiliza como patrón de URL de servlet, lo que es equivalente al
patrón de URL de servlet del archivo web.xml; por ejemplo:
package com.example;
@javax.ws.rs.ApplicationPath("rest")
public class MyApplication extends javax.ws.rs.core.Application {
}
- Añada la subclase javax.ws.rs.core.Application a la aplicación web. Cuando se inicia la aplicación, los recursos están disponibles en el siguiente URL:
http://{nombre_host}:{puerto}/{context_root_of_Web_ module}/{valor_de_@javax.ws.rs.ApplicationPath}}/{valor_de_@javax.ws.rs.Path}
Resultados
Ha configurado la aplicación JAX-RS mediante los métodos admitidos de JAX-RS 1.1 sacando partido de la exploración de anotaciones
para que la configuración automática de la aplicación resulte más fácil.