SeamFramework.orgCommunity Documentation
La especificación de Web Beans (JSR-299) define una serie de servicios para el entorno de Java EE que facilitan el desarrollo de aplicaciones. Web Beans entrecruza un ciclo de vida mejorado y un modelo de interacción en tipos de componentes existentes de Java incluyendo los componentes JavaBeans y Enterprise Java Beans. Como complemento para el modelo tradicional de programación Java EE, el servicio de Web Beans proporciona servicios:
un ciclo de vida mejorada para componentes con estado, vinculados a los contextos bien definidos,
un método typesafe para inyección de dependencia,
interacción a través de un servicio de notificación de eventos, y
un mejor método para vincular interceptores a componentes, junto con una nueva clase de interceptor, llamado un decorador, el cual es más apropiado para resolver problemas de negocios.
Inyección de dependencia, junto con la administración de ciclo de vida contextual, ahorra al usuario de un API desconocido el tener que hacer y contestar las siguientes preguntas:
¿Cuál es el ciclo de vida de este objeto?
¿Cuántos clientes simultáneos puede tener?
¿Es multihilos?
¿En dónde puedo obtener uno?
¿Necesito destruirlo explícitamente?
¿Dónde debo guardar mi referencia a éste cuando no lo estoy usando directamente?
¿Cómo puedo agregar una capa de direccionamiento indirecto, para que la implementación de este objeto pueda variar en el momento de despliegue?
¿Cómo hago para compartir este objeto con otros objetos?
Un Web Bean especifica únicamente el tipo y la semántica de otros Web Beans de los que depende. No se necesita conocer el ciclo de vida real, la implementación concreta, el modelo de hilos u otros clientes de cualquier Web Bean a la que dependa. Mejor aún, la implementación concreta, el ciclo de vida y el modelo de hilos de un Web Bean al que éste depende pueden variar según el escenario de despliegue, sin afectar a ningún cliente.
Los eventos, los interceptores y los decoradores mejoran el acoplamiento-flexibleinherente en este modelo:
La notificación de eventos separa a los productores de eventos de los consumidores,
los interceptores separan las cuestiones técnicas de la lógica de negocios, y
los decoradores permiten la compartimentación de las cuestiones de negocios.
Más importante, Web Beans ofrece todos los servicios en formatypesafe. Web Beans nunca utiliza identificadores de cadena para determinar cómo los se ajustan entre sí objetos de colaboración. Además, aunque XML sigue siendo una opción, muy rara vez se utiliza. En su lugar, Web Beans usa la información de teclado disponible en el modelo de objeto Java junto con un nuevo patrón, llamado anotaciones de enlace, para conectar a Web Beans, las dependencias, los interceptores y decoradores y sus consumidores de evento.
Los servicios Web Beans son generales y se aplican a los siguientes tipos de componentes existentes en el entorno de Java EE.
todos los JavaBeans,
todos los EJB, y
todos los Servlets.
Web Beans incluso provee los puntos de integración necesarios para que otras clases de componentes definidos por especificaciones de Java EE futuras, hagan uso de los servicios de Web Beans e interactúen con otra clase de Web Bean.
Una gran cantidad de marcos existentes de Java, incluyendo Seam, Guice y Spring, influyeron en Web Beans. No obstante, Web Beans tiene su propio carácter distintivo: más typesafe que Seam, más con estado y menos centrada en XML que Spring, red y aplicación empresarial más capaz que Guice.
Lo más importante es que Web Beans es un JCP estándar que se integra sin problemas con Java EE y con cualquier entorno SE dónde EJB Lite incrustado esté disponible.
Tabla de contenidos