Bueno aca debemos comenzar por investigar ¿que son los Beans? ¿como conecto los servlet con la BD?¿como utilizo los Beans para poder conectarme con una BD?¿como hago los ingresos y las lecturas?, bueno eso eso mas menos lo que tenemos que investigar. Bueno para poder descubrir que son, investigue en internet y me pille con una página que contenia un texto llamado INTRODUCCIÓN A LA TECNOLOGIA EJB por eso intentare hacer un resumen de lo que sale.Los temas que aca se taratan son
- Desarrollo Basado en componentes
- Servicios proporcionados por el contenedor EJB
- Funcionamiento de componentes EJB
- Tipos de beans
- Desarrollo de beans
- Clientes de los beans
- Roles EJB
- Evolución de la especificación EJB
- ventajas de la tecnológía EJB
Desarrollo basado en componentes
Debido al gran avance que ha tenido la programación a objetos, se ha podido ir abriendo camino en el desarrollo de componentes (enterprise beans), los cuales nos permiten poder ir reutilizando codigo, adaptarlos a otros prgramas sin nisikiera tener que modificar nuestros códigos, por ejemplo podriamos desarrollar un bean cliente que represente un a un cliente en una BD, el cual podriamos volver a reutilizarlo en un nuevo programa de contablidad.
Por ahora podemos ver un componente como un objeto tradicional con un conjunto de servicios adicionales soportados por el contenedor de componentes. El contenedor de componentes se denomina contenedor EJB y es algo asi como el sistema operativo en el que estos residen. Además tenemos que todas las características de los beans se definen mediante un archivo XML.
Servicios proporcionados por el contenedor EJB
Hemos visto que la diferencia entre los objetos y los componentes es que los componentes viven en un contenedor EJB que los envuelve proporcionando una capa de servicios añadidos. ¿cuales son estos servicios? los mas importantes son los siguientes:
- Manejo de Transacciones (llamadas a los métodos del bean)
- Seguridad (permisos de acceso a los métodos del bean)
- Concurrencia (llamadas a los beans desde multiples clientes)
- Servicios de Red (comunicación bean-cliente)
- Gestión de recursos
- Persistencia (sincronización bean-tablas de una BD)
- Gestión de Mensajes manejo de Java Message Service (JMS)
- Escalabilidad (aumenta host en caso de aumentos repentinos de carga de la aplicación)
- Adaptación en tiempo de despliegue (modificación de todas las caracteristicas en el momento del despliegue del bean)
Entenderemos por Despliegue a la incorporación del componente a nuestro contenedor EJB y a nuestro entorno de trabajo
Ahora si la aplicación que uno esta desarrollando no va a necesitar de esos servicios y va a tener una interfaz web, se puede simplemente utilizar paginas JSP y JDBC.
Funcionamiento de los componentes EJB
El funcionamiento de los componentes EJB se basa fundamentalmente en el trabajo del contenedor EJB. El contenedor EJB es un programa JAVA que corre en el servidor y que contiene todas las clases y objetos necesarios para el correcto funcionamiento de los EJB.
En la siguiente figura podemos ver muy claramente el funcionamiento basico de los EJB.
Aca podemos ver que el cliente realiza peticiones al bean y el servidor contiene el bean estan ejecutandose en maquinas virtuales java distintas, incluso pueden estar en distintos host. Ademas hay que decir que el cliente nunca se comunica directamte con el bean sino que el contenedor EJB proporciona un EJBObject que hace de interfaz. asi tenemos que todas las peticiones se deben hacer a través del objeto EJB el cual se comunica con el bean el cual por ultimo realiza las peticiones a la BD.
¿De que cosas se preocupa el contenedor EJB?
- ¿Tiene permisos el cliente para llamar al método?
- Hay que abrir la transacción al comienzo de la llamada y cerarla al terminar.
- ¿es necesario refrescar el bean con los datos de la BD?
EJEMPLO: imaginemos que tenemos una aplicación de ventas con un beans llamado Personas la cual tiene varios metodos entre ellos compra. Supongamos que desde el objeto cliente queremos llamar al método compra, esto va a provocar que se realizen los siguientes pasos:
- Cliente: “Necesito hacer una peticiñon de compra al bean Personas”
- EJBObject: “Espera un momento, tengo que comprobar que tienes permisos”
- Contenedor EJB: “Si, tienes permisos para hacer la llamada al método compra”
- Contenedor EJB: “Necesito un bean Personas para realizar la operación de compra, no se olviden de comenzar la transacción”
- (Reserva) Pool de Beans: “A quien le toca esta vez”
- Contenedor EJB: “Ya tengo un bean Personas, pasale la petición al cliente”
Tipos de Beans
La tecnología EJB define tres tipos de beans:
- Beans de Entidad: representan un objeto concreto que tiene existencia en alguna BD.
-
Beans de Sesion: representa un proceso o una acción de negocio, normalmente cualquier llamada a un servicio del servidor debería comenzar con una llamada a un bean de sesión.
-
Beans Dirigidos por Mensajes: pueden escuchar mensajes de un servicio de mensajes JMS, estos nunca se comunican directamente con el cliente y no necesitan objetos EJBObjct, un ejemplo podria ser ListenerNuevoCliente que se activa cada vez que se envia un mensaje que se ha ingresado un nuevo cliente.
Descripción Individual
Los BEANS DE SESIÓN representan sesiones interactivas con uno o mas clientes, pueden mantener un estado, pero solo durante el tiempo que el cliente interactua con el bean. Esto significa que los beans de sesión no almacenan sus datos en una BD despues que el cliente termine el proceso.
Estos beans no se comparten entre mas de un cliente, sino que ecxiste una correspondencia 1-1 entre beans de sesión y clientes.
Existen dos tipos de beans de sesión: con estado y sin estado.
Los beans de sesión sin estado no se modifican con las llamadas de los clientes solo reciben datos y devuelven resultados pero no modifican internamente el estdo del bean. Estos beans por lo general son usados para encapsular procesos de negocio, mas que datos de negocio (tarea de los beans de entidad), también puede usarse como puente de acceso a una BD o a un bean de entidad. Cuando trabajamos con cliente-servidor estos beans podrian proporcionar al interface de usuario los datos necesarios, estos beans de sesión sin estado son de uso muy frecuente.
Los beans de sesión con estado almacenan datos especificos obtenidos durante la conexión con el cliente, cada bean de sesión con estado por lo tanto almacena el estado conversacional de un cliente con el que interactua. Este estado conversacional se modifica conforme el cliente va realizando llamadas a los métodos de negocio del bean. El estado conversacional no se guarda cuando el cliente termina la sesión.
Osea este beans usado va cambiando conforme el cliente lo necesite, algunos metodos que contienen estos son los set y los get, un ejemplo claro es el carrito de compras que a medida que vamos avanando se le van agregando mas cosas, o en un inicio de sesión cuando necesitamos tener en alguna parte los datos de la persona que ha hecho login.
Los BEANS DE ENTIDAD modelan conceptos o datos de negocio, que pueden expresarse como nombres. Representan “cosas”: objetos del mundo real como Hoteles, habitaciones, expedientes, estudiantes y demases. Un bean de entidad puede representar incluso cosas abstractas como una reserva, describen tanto el estado como la conducta de objetos del mundo real y permite a los desarrolladores encapsular reglas de datos y negocio asociadas con un concepto especifico. Por ejemplo un bean de entidad Estudiante encapsula los datos y reglas de negocio asociadas a un estudiante. esto hace posible manejar de forma consistente y segura los datos asociados a un concepto.
Los beans puden contener información por ejemplo de un estudiante sin necesariamente estar conectados con una BD. El contenedor se encarga de sincronicar las variables de instancia del bean con la BD.
Debido a que los beans de entidad se guardan en un mecanismo de almacenamiento se dice que es persistente, Persistente significa que el estado del bean existe mas tiempo que la duraciñon de la aplicación.
El uso de los beans de entidad conllevan los siguientes pasos:
-
El cliente debe encontrar una referencia a la instania concreta del bean de entidad que se esta buscando, mediante el metodo finder, estos se encuentran definidos en la interfaz home y son implementados en la clase bean, los metodos finder pueden devolver uno o varios beans de entidad.
-
el cliente interactua con la instancia del bean usando los metodos get y set. El estado del bean se carga de la base de datos antes de procesar llamadas a los métodos. Esto se encarga de hacerlo el contenedor de forma automatica o el propio bean en la funciñon ejbLoad().
-
Por ultimo, cuando se termina la intercacción con la instancia del bean sus contenidos se vuelvan en el almacen persistente, o bien lo hace de forma automática el contenedor o bien este llama al método ejbStore().
Datos persistentes: datos que se almacenan en una base de datos.
Los beans de entidad tienen dos tipos de persistencias:
-
Persistencia gestionada por el Bean (BMP, Bean-Managed Persistence): contienen el código que accede a la BD.
-
Persistencia Gestionada por el Contenedor (CMP Container-Managed Persistence): la relación entre las columnas de la BD y el bean se describe en el fichero de propiedades del bean, y el contenedor EJB se ocupa de la implementación
-
Acceso compartido: los clientes pueden compartir beans de entidad asi el contenedor EJB debe gestionar el acceso concurrente a los mismo y por ello debe usar transacciones.
-
Clave Primaria: cada beans de entidad tiene un identificador único, este identificador único permite al cliente localizar a un bean de entidad particular.
-
Relaciones: de la misma forma que una tabla en una base de datos relacional, un bean de entidad puede estar relacionado con otros EJB.
Los BEANS DIRIGIDOS POR MENSAJES estos beans permiten que las aplicaciones J2EE reciban mensajes JMS de forma asincrona. Así la ejecución de un cliente no se bloquea cuando está esperando que se complete algún método de negocio de otro bean. Los mensajes pueden enviarse desde cualquier otro componente J2EE (un beans, un cliente, otro EJB o un componente Web).
Pueden contener una conexión JMS, una conexión de base de datos o una referencia a un objeto EJB.
Cuando llega un mensaje, el contenedor llama al método onMessage del bean. El método onMessage suele realizar un casting del mensaje a uno de los cinco tipos de mensaje de JMS y manejarlo de forma acorde con la lógica de negocio de la aplicación. El método onMessage puede llamar métodos auxiliares, o invocar a un bean de sesión o de entidad para procesar la información del mensaje o para almacenarlo en una base de datos.
Resumen:
-
Los de entidad, representan una tabla.
-
Los de sesión, pueden almacenar datos temporalmente o solo procesar datos.
-
Los de mensajes envian mensajes cuando se requiere informar algo.
Creo mas menos es eso.
En la segunda parte veremos los otros puntos, que son:
- Desarrollo de beans y Clientes
- Roles EJB
- Evolución de la especificación EJB
- Ventajas de la tecnológía EJB
Ya eso sería no ma joajao!