Utilización de JCDI (Java Contexts and Dependency Injection) con JAX-RS

Se pueden utilizar proveedores y recursos raíz JAX-RS (API Java™ para servicios web RESTful) en un archivo WAR (Web Archive) habilitado para JCDI (Java Contexts and Dependency Injection). Simplemente añada un archivo WEB-INF/beans.xml válido al archivo WAR y los proveedores y recursos raíz JAX-RS que sean beans JCDI válidos podrán utilizar la funcionalidad JCDI.

Acerca de esta tarea

Las clases JAX-RS en un archivo habilitado para JCDI puede tener puntos de inyección anotados @javax.inject.Inject, participar en ámbitos de ciclo de vida de JCDI, activar sucesos JCDI y disponer de decoradores e interceptores de método.

Las clases de proveedor y recurso raíz JAX-RS deben tener un constructor de beans gestionados JCDI válido. En general, si las clases tienen un constructor que tiene un parámetro anotado con la anotación @javax.ws.rs.core.Context o con cualquier anotación de parámetro JAX-RS como, por ejemplo, @javax.ws.rs.QueryParam, debe refactorizar el código para utilizar en su lugar campos o propiedades de bean anotadas para JAX-RS. Puede añadir un método anotado @javax.annotation.PostConstruct para ayudar a construir el objeto.

Además, las clases de proveedor y de recurso raíz de JAX-RS deben tener un ámbito especificado JCDI. Los ámbitos controlan el ciclo de vida de un bean gestionado JCDI. Las clases de recursos raíz pueden tener cualquier ámbito válido como @javax.enterprise.context.RequestScoped, que hace que la clase de recurso raíz JAX-RS funcione del mismo modo que en una aplicación no habilitada para JCDI. Las subclases javax.ws.rs.core.Application y los proveedores JAX-RS deben tener la anotación @javax.enterprise.context.ApplicationScoped.

Es posible que desee utilizar JCDI para desarrollar más rápida y fácilmente la aplicación, así como para aumentar la comprobabilidad del código. JCDI permite técnicas de programación modernas como inyección de dependencia, un modelo de programación basado en sucesos y un enfoque más orientado a aspectos sobre preocupaciones generales. Los desarrolladores pueden utilizar la programación orientada a aspectos para añadir a un método correctamente funcionalidad que no forma parte de la lógica empresarial principal. Por ejemplo, una preocupación fundamental es el registro. Algunos desarrolladores necesitan registrar la entrada y salida cada vez que se llama a un método empresarial determinado en una aplicación. Ahora puede utilizar la funcionalidad de desarrolladores JCDI como interceptores y decoradores de método para añadir esta funcionalidad más limpiamente. Los desarrolladores pueden utilizar la inyección de dependencia para insertar más fácilmente sus propias simulaciones de implementación durante la prueba unitaria. El desacoplamiento de dependencias anteriormente codificadas permite a los desarrolladores probar más fácilmente componentes individuales.

Los beans JCDI pueden inyectar EJB (Enterprise JavaBeans) y utilizar inyecciones @javax.annotation.Resource para inyectar recursos Java Platform, Enterprise Edition (Java EE). Los EJB también pueden ser beans JCDI. Los EJB con anotaciones como @javax.ejb.Stateless también pueden utilizar la inyección de dependencia JCDI y otras características JCDI. Los EJB mantienen sus características transaccionales y otras características EJB.

JNDI (Java Contexts and Dependency Injection) es una nueva característica Java Platform, Enterprise Edition (Java EE) 6. Puede cambiar el modelo de programación para crear aplicaciones más fáciles de desarrollar al aumentar la capacidad de mantenimiento. Los desarrolladores de JAX-RS pueden utilizar características JCDI, como el soporte de @javax.inject.Inject, en clases de proveedor y recursos raíz.

Procedimiento

  1. Configure el entorno de desarrollo.
    1. Antes de comenzar a desarrollar aplicaciones JAX-RS, debe configurar su entorno de desarrollo añadiendo las bibliotecas JAX-RS en la vía de acceso de clases.
  2. Defina los recursos en aplicaciones web JAX-RS.
    1. Los recursos son el bloque de compilación básico de creación de un servicio RESTful. Los recursos pueden contener datos actualizados de forma estática o dinámica. Ejemplos de recursos de una aplicación de almacén de libros en línea incluyen un libro, un pedido en una tienda y una colección de usuarios. Identificando los recursos en la aplicación, puede hacer que el servicio resulte más útil y más fácil de desarrollar.
  3. Configure la aplicación JAX-RS.

    Puede configurar aplicaciones JAX-RS 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. Como alternativa, puede especificar el servlet o filtro IBM® JAX-RS si desea utilizar la funcionalidad disponible en el servlet y filtro IBM JAX-RS.

    Si utiliza uno de los métodos de configuración de JAX-RS Versión 1.1, puede omitir una subclase javax.ws.rs.core.Application en la aplicación o disponer de una subclase javax.ws.rs.core.Application que devuelva un conjunto vacío de clases para informar al entorno de ejecución JAX-RS para que busque y utilice todas las clases JAX-RS de la aplicación. Tal vez desee utilizar este método cuando no quiera añadir manualmente cada clase JAX-RS a una subclase javax.ws.rs.core.Application a medida que desarrolla la aplicación.

    Al especificar el servlet y filtro IBM JAX-RS específicos, puede sacar partido y asegurarse del comportamiento específico de IBM JAX-RS. Por ejemplo, el uso del filtro IBM JAX-RS puede ser útil para el desarrollo de una aplicación web con una mezcla de recursos JAX-RS y archivos JSP (JavaServer Pages) con los mismos patrones de URL.

    Aunque existe un método de configuración de JAX-RS V1.1 que soporta el uso de un archivo web.xml opcional, si desea especificar roles o restricciones de seguridad o desea aprovechar otras características habilitadas utilizando un archivo web.xml, debe especificar la información en un archivo web.xml.

    Elija uno de los tres métodos siguientes para configurar la aplicación JAX-RS:

    • Configurar las aplicaciones JAX-RS con métodos de JAX-RS 1.1

      Utilice este método si desea utilizar las prestaciones de exploración de anotaciones o utilizar los métodos de configuración de JAX-RS 1.1. Puede utilizar las prestaciones de exploración de anotaciones para promover la portabilidad de las aplicaciones, minimizar la cantidad de código de configuración o modificar dinámicamente la aplicación sin cambios en el código de aplicación.

    • Configure el archivo web.xml para los servlets de JAX-RS

      Utilice este método si desea especificar características que se habilitan utilizando parámetros de inicialización de servlet para cambiar el comportamiento y asegurarse de obtener el 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.

    • Configure el archivo web.xml para los filtros de JAX-RS

      Utilice este método si desea utilizar el filtro cuando tiene los JSP, otros servlets y filtros y recursos JAX-RS con una combinación de patrones de URL. Puede configurar el archivo web.xml para definir filtros que indiquen los URL posibles en los que se puede invocar el filtro.

  4. Implementación de recursos JAX-RS con funcionalidad JCDI. Puede utilizar cualquiera de las características JCDI individualmente o conjuntamente para facilitar la creación, mantenimiento y prueba de las aplicaciones.
  5. Ensamble las aplicaciones web JAX-RS.
    1. Después de desarrollar los archivos de clase Java para la aplicación web de JAX-RS y tras editar el archivo web.xml para habilitar el servlet de JAX-RS, ya estará listo para ensamblar la aplicación. Ensamble la aplicación web en un paquete WAR. Puede ensamblar el paquete WAR en un paquete archivador empresarial (EAR), si fuera preciso.
  6. Despliegue las aplicaciones web JAX-RS.
    1. Una vez que ha ensamblado la aplicación web JAX-RS, debe desplegar el paquete WAR (Web Archive) o el paquete EAR (Enterprise Archive) en el servidor de aplicaciones.

Resultados

Ha habilitado un enterprise bean de forma que los recursos JAX-RS con la funcionalidad JCDI se exponen para el consumo.


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_jcdi
File name: twbs_jaxrs_jcdi.html