Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Clase 7

JEE, EJBs
by

Cesar Abarza

on 19 October 2013

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Clase 7

EJB
Enterprise JavaBeans
Ejercicios EJB
Enterprise JavaBeans
¿Qué son?
son una de las API que forman parte del estándar de construcción de aplicaciones empresariales JEE de Oracle Corporation. Su especificación detalla cómo los servidores de aplicaciones proveen objetos desde el lado del servidor, que son, precisamente, los EJB.
Crear un EJB de sesión de tipo statefull que tenga una variable global con un método para aumentar su valor y otro para leer el valor.

Desde 3 servlets realizar la llamada al metodo de aumento de valor por post y al metodo de lectura por get imprimiendo el resultado en una página web
Definición
Los EJBs proporcionan un modelo de componentes distribuido estándar del lado del servidor. El objetivo de los EJBs es dotar al programador de un modelo que le permita abstraerse de los problemas generales de una aplicación empresarial (concurrencia, transacciones, persistencia, seguridad, etc.) para centrarse en el desarrollo de la lógica de negocio en sí. El hecho de estar basado en componentes permite que éstos sean flexibles y reutilizables.

No hay que confundir los Enterprise JavaBeans con los JavaBeans. Los JavaBeans también son un modelo de componentes para la construcción de aplicaciones, pero no pueden utilizarse en entornos de objetos distribuidos al no soportar nativamente la invocación remota (RMI).

- Comunicación remota utilizando CORBA/RMI
- Transacciones
- Control de la concurrencia
- Eventos utilizando JMS (Java messaging service)
- Servicios de nombres y de directorio
- Seguridad
- Ubicación de componentes en un servidor de aplicaciones.

La especificación de EJB define los papeles que deben interpretar el contenedor de EJBs y los EJBs, además de disponer los EJB en un contenedor.
Tipos de EJBs

Los EJBs dirigidos por mensajes son los únicos beans con funcionamiento asíncrono. Usando el Java Message Service (JMS), se suscriben a un tema (topic) o a una cola (queue) y se activan al recibir un mensaje dirigido a dicho tema o cola. No requieren de su instanciación por parte del cliente.

Un cliente no ejecuta directamente un message-driven bean, si no que sólo debe utilizar la API de JMS para enviar mensajes. Por esto, un message-driven bean no tiene una clase home ni interfaz local o remota ni retorna valores o excepciones al cliente. El cliente no espera que su mensaje sea respondido si no que continúan su ejecución una vez enviado.

Los message-driven beans sólo reciben mensajes JMS, sin conocer de antemano la información sobre contenido del mensaje recibido. Por esta razón sólo tienen un método con lógica de negocio llamado onMessage(), que recibe un Message JMS que puede representar todos los tipos de mensajes existentes en JMS como mensajes de bytes, de texto y de objetos serializables. Luego hay que discriminar el tipo de mensaje recibido utilizando el operador instanceOf.

Los message-driven beans son stateless ya que no mantienen estados de conversación entre cada procesamiento de mensajes recibidos, por lo cual las instancias de la misma clase son equivalentes entre sí y deben implementar solo un método ejbCreate() sin parámetros.
Existen distintos tipos de EJBs
EJB de Entidad (Entity EJB)

EJB de Sesión (Session EJB)

EJB dirigido por Mensaje (Message-driven EJB)
EJB de Entidad
El objetivo de un EJB de Entidad es encapsular los objetos del lado del servidor que almacena los datos.

Los EJB de entidad presentan la característica fundamental de la persistencia:
Persistencia gestionada por el contenedor (CMP): el contenedor se encarga de almacenar y recuperar los datos del objeto de entidad mediante el mapeo o vinculación de las columnas de una tabla de la base de datos con los atributos del objeto.
Persistencia gestionada por el bean (BMP): el propio objeto entidad se encarga, mediante una base de datos u otro mecanismo, de almacenar y recuperar los datos a los que se refiere, por lo cual la responsabilidad de implementar los mecanismos de persistencia es del programador.

A partir de JEE 5.0, los Entity Beans desaparecen, ya que son remplazados por JPA (Java Persistence API).
EJB de sesión
Estos EJBs gestionan el flujo de la información en el servidor. Generalmente sirven a los clientes como una fachada de los servicios proporcionados por otros componentes disponibles en el servidor. Puede haber dos tipos:
Con estado (stateful). En un bean de sesión con estado, las variables de instancia del bean almacenan datos específicos obtenidos durante la conexión con el cliente. Cada bean de sesión con estado, por tanto, almacena el estado conversacional de un cliente que interactúa con el bean. 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.
Sin estado (stateless). Los beans de sesión sin estado son objetos distribuidos que carecen de estado asociado permitiendo por tanto que se los acceda concurrentemente. No se garantiza que los contenidos de las variables de instancia se conserven entre llamadas al método.
Ejemplo EJB de Sesión


1- El cliente ya sea un Servlet o JSP o Applet o programa Java de terminal, debe encontrar una referencia del EJB que desea llamar, esto se realiza a través de un directorio de nombres (JNDI - Java Naming and Directory Interface) el cual proporciona una referencia del EJB.
2- Se envía el resultado hacia el Cliente indicando la ubicación del denominado EJB, una vez obtenida esta ubicación es posible generar el EJB.
3- El Cliente invoca el método create del Home Interface del EJB.
4- Posteriormente el Contenedor EJB genera una instancia del EJB que fue llamado por el cliente.
5- Es necesario asociar la instancia generada con la Interfaz Remota del EJB , esto permite invocar métodos en el EJB.
6- Se retornan los resultados de creación del EJB al Cliente.
7- Una vez confirmado que la instancia del EJB fue generada, el cliente puede invocar los respectivos métodos sobre el EJB.
8- A través de la Interfaz remota del EJB se invocan los respectivos métodos sobre la instancia del EJB.
9- Ejecutados los métodos sobre la instancia del EJB en cuestión, se retornan los resultados al cliente.
EJB dirigido por mensajes
Ejemplo EJB dirigido por mensajes

Un objeto Message puede ser del tipo BytesMessage para un grupo de bytes cualquiera, MapMessage para grupos de variables y su valor, ObjectMessage para objetos, StreamMessage para mensajes con tipos primitivos en bytes y TextMessage para mensajes de texto plano.
Ejemplo EJB dirigido por mensajes
Ejemplo Beans de Sesión J2EE1.4
<session>
<ejb-name>HelloWorld</ejb-name>
<business-local>cl.inacap.ejb.HelloWorldLocal</business-local>
<business-remote>cl.inacap.ejb.HelloWorldRemote</business-remote>
<ejb-class>cl.inacap.ejb.HelloWorldEJB</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
</session>
Ejemplo Beans de Sesión JEE 5
Ejemplo Beans de Sesión JEE6
Aplicación Ejemplo en eclipse
Crear Proyecto JEE
Crear Proyecto JEE
Crear Projecto JEE
Nuevo EJB
Agregando método a EJB
Creando un Servlet
Nuestro Servlet
Consola Servidor
Ejercicio 1
Ejercicio 2
Crear un EJB de sesión de tipo stateless que tenga una variable global con un método para aumentar su valor y otro para leer el valor.

Desde 3 servlets realizar la llamada al metodo de aumento de valor por post y al metodo de lectura por get imprimiendo el resultado en una página web
Ejercicio 3
Generar la calculadora que desde una página se envien los datos a un servlet y que este realice el llamado a un ejb que realice el proceso
Full transcript