You are on page 1of 16

WEB BEANS

GERARDO PINAR LORIENTE


SERGIO TEJEDA PASTOR

Universidad Carlos III de Madrid


Contenido
Introducción
Uso
Objetos que pueden ser Web Beans
Componentes
Conclusiones
Referencias

2
2
Introducción
 Problema de JavaEE5: Nivel de presentación
(Servlets, JSP, JSF) y nivel de persistencia (EJB 3.0,
JTA, JCA and JPA) desarrollados de forma
independiente.
 Web Beans (JavaEE6):
Clase de aplicación que contiene lógica de negocio.
Modelo de componentes compatible con ambos
niveles. Un Bean EJB3 puede actuar como un Bean
JSF.
Puede ser invocado desde Java o a través de Unified
EL.

3
Uso
Proporcionar servicios para el entorno Java EE que hacen las
aplicaciones mucho más fáciles de desarrollar.
 Ciclo de vida mejorado para componentes con estado, ubicados en
contextos bien definidos.
 Un enfoque de seguridad de tipos para inyección de dependencia.
 Un mejor enfoque a interceptores vinculantes a componentes, junto con
un nuevo tipo de interceptor, llamado decorador, que es más apropiado
en resolución de problemas de negocios.

La inyección de dependencia, junto con la gestión  del ciclo de


vida del contexto, libra al usuario de un API poco familiar al no
tener que responder a cuestiones tales como:
- ¿ciclo de vida del objeto?.
- ¿cuántos clientes simultáneos?.
- ¿multihebra?.
etc.
4
Objetos que pueden ser Web Beans
La especificación de Web Beans dice que una clase de Java
concreta es un Web Bean si:
 no es un componente de contenedor EE - administrado, como un
EJB, un Servlet o una entidad JPA.
 no es una clase interna no estática.
 no es un tipo en parámetros.
 tiene un constructor sin parámetros o un constructor @Initializer
anotado.

Entonces, casi cada JavaBean es un Web Bean


sencillo.

5
5
Componentes
De acuerdo con la especificación, un Web Bean comprende
los siguientes elementos:

 Un conjunto no vacío de tipos API


 Un conjunto no vacío de tipos de anotación
 Un ámbito
 Un tipo de despliegue
 Un nombre de Web Bean
 Un conjunto de tipos de interceptor de enlace
 Una implementación de Web Bean

6
Tipos API, tipos de enlace e inyección de
dependencia
Los Web Beans adquieren referencias a otros Web Beans a
través de la inyección de dependencia. Cualquier atributo
inyectado especifica un "contrato" que debe cumplir el Web
Bean que va a ser inyectado. El contrato comprende:

 Un tipo API: Una API es una clase o interfaz de usuario


definida. (Si el Web Bean es un bean EJB de sesión, el tipo
API es la vista de bean de interfaz @Local o de clase).

 Un conjunto de tipos de enlace: Un tipo de enlace


representa alguna semántica visible de cliente cumplida
por algunas implementaciones de API y no por otras.
7
Tipos API, tipos de enlace e inyección de
dependencia
Hay tres tipos de inyección de dependencia:

1. En el método constructor
@Initializer public Checkout(ShoppingCart cart) {...}

2. En el método setter de la propiedad correspondiente:


@Initializer void setShoppingCart(ShoppingCart cart)

3. Directamente en la propiedad:
private @Current ShoppingCart cart;

La inyección siempre se produce durante la instanciación.


8
Ámbito
 El ámbito define el ciclo de vida y visibilidad de
instancias del Web Bean.
 El modelo de contexto de Web Beans es extensible,
acomodando los ámbitos arbitrarios.
 Ciertos ámbitos importantes son incorporados en la
especificación y provistos por el administrador de Web
Bean.
 Un ámbito está representado por un tipo de anotación:
@SessionScoped
public class ShoppingCart { ... }

9
9
Tipos de despliegue
 Un tipo de despliegue es una anotación que representa un
escenario de despliegue determinado, por ejemplo,
@Mock, @Staging o @AustralianTaxLaw.

 Los tipos de despliegue nos permiten clasificar nuestros


Web Beans por escenario de despliegue.

 Muchos Web Beans sólo utilizan el tipo de despliegue


predeterminado @Production, en cuyo caso no se necesita
especificar ningún tipo de despliegue.

10
Nombres de Web Beans y EL
unificado
 Un Web Bean puede tener un nombre, que le permita ser
utilizado en expresiones EL unificadas. Es fácil
especificar el nombre de un Web Bean:

@SessionScoped @Named("cart")
public class ShoppingCart { ... }

 Ahora podemos utilizar el Web Bean en cualquier página


JSF o JSP:
<h:dataTable value="#{cart.lineItems}" var="item">
....
</h:dataTable >

11
11
Nombres de Web Beans y EL
unificado
 Es aún más fácil dejar el nombre predeterminado por el
administrador de Web Bean:

@SessionScoped @Named
public class ShoppingCart { ... }
.
En este caso, se establece por defecto como nombre del
Web Bean el nombre de clase no calificado, con el primer
carácter cambiado a minúsculas.

12
12
Tipos de interceptor de enlace
 Web Beans proporciona un nuevo método para enlazar
interceptores de enlace a beans EJB y otras Web Beans.
 Es posible especificar directamente la clase de interceptor
a través de la anotación @Interceptors:
@SessionScoped 
@Interceptors(TransactionInterceptor.class)
public class ShoppingCart { ... }

 Más elegante y mejor práctica:


llevar indirectamente al interceptor enlazando a través de
un tipo de interceptor de enlace:

@SessionScoped @Transactional
public class ShoppingCart { ... }

13
13
Conclusiones
 Web Beans proporciona las bases para la integración con
futuras especificaciones Java EE o para que frameworks no
estándar puedan integrarse con Web Beans, beneficiarse de
sus servicios e interactuar con otra clase de Web Bean.
 Web Beans fue influenciado por un número de frameworks
de Java ya existentes, incluyendo Seam, Guice y Spring. Sin
embargo, Web Beans tiene su propio carácter, muy distinto:
más seguridad de tipos que Seam, con más estados y menos
centrado en XML que Spring, con mayor capacidad para
aplicaciones enterprise que Guice.
 Lo más importante: Web Beans es un estándar JCP que se
integra de manera limpia con Java EE, y con cualquier
entorno Java SE donde EJB Lite embebible esté disponible

14
Referencias
 [1] Gavin King “Introduction to Web Beans”. The new
Java standard for dependency injection and contextual
state management: http://
docs.jboss.org/webbeans/reference/1.0/en-US/pdf/guide.pd
f
 [2] Comenzando a escribir WebBeans:
http://
docs.jboss.org/webbeans/reference/current/es-ES/html/intr
o.html
 [3] New features in Java EE 6: http://
www.javabeat.net/articles/99-new-features-in-java-ee-60-1
.html
 [4] JRS-299 Specification
15
GRACIAS POR SU
ATENCIÓN

16

You might also like