Con este framework de desarrollo web J2EE nos encontramos con estos ineludibles conceptos:
- Componente
- Contexto
- Inyección de dependencias (hay ciertos componentes que por su naturaleza no son inyectables por ejemplo MDBs o ¿Singletons? )
- Eventos y escuchadores de eventos (listeners)
- Interceptores
- Decoradores (decorator): tipo especial de interceptor
- Ciclo de vida
Los Web Beans se aplican a JavaBeans, EJBs y Servlets, aunque el framework está preparado para integrarse con "cualquier cosa".
¿qué es un web bean?
Características:
- scope ---> contexto ( dependiendo del tipo pueden conservar el estado o ser sin estado [statefull - stateless] )
- a deployment type ---> un tipo de despliegue
- API types, propiedades
- annotation types, anotaciones de esas propiedades
- name (optional)- un nombre (opcional)
- interceptor binding types - los interceptores del web bean, se indica con la anotación @Interceptors(xxx.class) o a través de la anotación propia del interceptor
- implementation - implementación
Al definir el scope o contexto estamos repercutiendo en el ciclo de vida (lifecycle) del web bean. Stateless beans no guardan el estado mientras que Statefull si lo mantienen. Con el scope también determinamos la visibilidad de bean, ya que los beans de Session @SessionScoped verán a los de su mismo contexto, es decir @SessionScoped
Deployment type:
Al indicar el tipo de despliegue, que por defecto es @Production, podemos separar los escenarios donde viviran dichos beans de @Mock (pruebas), @Staging o @EscenarioGestorCursos.
En función del despliegue, el gestor de beans (Manager) inyectará un bean u otro.
Web Beans Vs Enterprise Web Beans
Razones para elegir Enterprise Web Beans:
- configuración de transacciones y seguridad a nivel de métodos (no de clase)
- gestión de la concurrencia
- pooling de stateless components o (pasivación y activación) mantener estado de statefull components
- RMI y WebServices
- Timer y metodos asíncronos
Para convertir un Web Bean en un Enterprise Web Bean unicamente añadiremos: @Stateless,
@Stateful or @Singleton.
Producer methods - Metodos Productores
Son métodos que ejecuta el contenedor de Web Beans, es decir: el Manager, cuando crea una instancia de Web Bean. Generalmente los fines de estos métodos es inyectar valores (Web Beans) en contextos de la aplicación, y por tanto que sean visibles a otros Web Beans del mismo contexto.
Es muy interesante el ejemplo que trae el tutorial, al inyectar la conexión de la base de datos en el contexto de request, para de esa forma asegurarnos que la conexión se destruye después de el evento de tipo request.
@Produces @RequestScoped Connection connect(User user) {
return createConnection( user.getId(), user.getPassword() );
}
Inyección de Dependencias
3 tipos de inyección:
- en el método constructor @Initializer public Checkout(ShoppingCart cart) {...}
- en el método setter de la propiedad correspondiente: @Initializer void setShoppingCart(ShoppingCart cart)
- directamente en la propiedad: private @Current ShoppingCart cart;
... voy por Binding Annotations... capitulo 3.1 ... mañana sigo!
No hay comentarios:
Publicar un comentario