Esquema J2EE

18
Esquema J2EE Servidor de Aplicaciones Contacta un Servlet o un JSP respuesta Servlet JSP Servidor web J2EE Bean DBMS

description

Esquema J2EE. Servidor de Aplicaciones. DBMS. J2EE Bean. Servlet JSP. respuesta. Servidor web. Contacta un Servlet o un JSP. Los Enterprise Java Beans son como los Servlets. Son trozos de código que extienden un servidor “Viven” en un contenedor apropiado - PowerPoint PPT Presentation

Transcript of Esquema J2EE

Page 1: Esquema J2EE

Esquema J2EE

Servidor de Aplicaciones

Contacta un Servlet o un JSP

respuesta

ServletJSP

Servidor web

J2EE BeanDBMS

Page 2: Esquema J2EE

Los Enterprise Java Beans son como los Servlets

• Son trozos de código que extienden un servidor

• “Viven” en un contenedor apropiado

• El contenedor decide cuándo se crean y se destruyen

• No son contactados directamente por el cliente

Page 3: Esquema J2EE

Existen 3 Clases principales• Session Beans:

– Implementan procesos, orientados a acciones (cálculo de un valor)

• Entity Beans:– Están asociados a datos persistentes. Representan

una instancia de un dato almacenado

• Message Driven Beans:– Parecidos a Session beans pero son “despertados”

o contactados por mensajes que pueden incluso ser asínctonos

Page 4: Esquema J2EE

Refinando la clasificación • Session Beans:

– Sin estado: son contactados una vez por los clientes, ejecutan una acción y no queda traza de lo que se hizo

– Con estado: en una “sesión” pueden ser contactados varias veces por el mismo cliente para desarrollar una “conversación”. Será necesario mantener algún tipo de información para recordar lo que va haciendo el cliente

• Entity Beans:– Persistencia controlada por el Bean: el programador debe

incluir código de modo de asegurarse que el enttity bean represente a un dato en una tabla

– Persistencia controlada por el container: el container se preocupa de asociar el bean a un dato de una tabla

Page 5: Esquema J2EE

Cómo administra el container el cliclo de vida de los beans

• Los beans son creados y destruidos por el container. Cuando un bean se levanta con el container (el bean debe estar ahí cuando se echa a andar el server) se crean instancias del bean (bean pool) las cuales son “asignadas” a los clientes. Qué bean es entregado a qué cliente lo decide el container

• Si se necesitan más beans estos son creados por el container (create)

• Si hay demasiados estos son destruidos (Remove)

• El container puede decidir además hacer “dormir” o “despertar” a los beans según las necesidades (activate, passivate) para

Page 6: Esquema J2EE

Para crear un EJB se necesitan 3 clases

• El ejbHome, el ejbHome y el elb propiamente tal• Normalmente uno crea el ejb, el resto lo hace el

sistema• Cuando un cliente desea contactar a un bean

localiza un un ejbHome Object que correspoda al de un bean deseado.

• Una vez que tiene una referencia a este lo usa para fabricar un objeto EJB, al cual le aplica los métodos

• El EJBObjet se contactará con un bean adecuado para que dé el servicio (esto lo hace el contenedor)

Page 7: Esquema J2EE

El papel de cada uno de las 3 clases de objetos

1-ubicar

2 retorna referencia

3 contacta home

4 crea ejbObject

5- retorna referencia

6 invoca método

7 contacta bean

ejbHome

ejbObject

cliente

Naming

Bean PoolUn applet, servlet, Jsp o stand alone

Page 8: Esquema J2EE

Estados de un Bean

No existe

Activo Pasivo

Cliente invocacreate en un home

Interface

1- Class.newInstance()2- setSessionContext()3- ejbCreate(...)

ejbRemove()

Cliente llama a remove()en el ejbObject o se le

da un timeout al cliente

El container llega a un límite de su capacidad: swapping

ejbPasivate()

Liente llama a un método del Bean pasivado

ejbActiivate()

Timeout del cleinte

Page 9: Esquema J2EE

Los Entity beans• Un bean representa a un dato (fila) en una base de datos• Hay que pensar en ellos como si fueran uno solo con el dato en memoria

secundaria• Debe existir un mecanismo para automáticamente transferir los datos de

la memoria secundaria al EJB y vice-versa• Esto se hace a través de llamadas a los métodos ejbLoad() y ejbStore()• Estos métodos son llamados por el container cuando estima que es

necesario• distintos beans pueden representar al mismo dato en disco• ejbActivate() y ejbPassivate() se llaman cuando un entity bean es

puesto/sacado de un pool de beans, por lo que hay que programas la adquisición y liberación de reucursos

• Como además se debe guardar el estado del bean en memoria secundaria, por lo cual se llama siempre a ejbStore abtes de pasivar y a ejbLoad antes de activar

Page 10: Esquema J2EE

Las 2 maneras de lograr persistencia de los beans

• En un bean-manajed persistence entity bean el programador debe escribir las instrucciones para que las variables del entity bean sean las correspondientes a un dato en una base de datos (saving, loading, and finding)

• Estas instrucciones van en los métodos de creación (ejbCreate(...)), destrucción (ejbRemove()), localización (ejbFind(...)), carga (ejbload()) y almacenamiento (ejbStore())

• Esto generalmente se hace via instrucciones JDBC

• En los container-managed persistence beans de esto se encarga el container, sólo basta dar algunas directrices para la localización de los datos en un archivo especial (según yo, esto sería una de las gracias más grandes de j2ee)

Page 11: Esquema J2EE

Esquema de creación de un entity bean

cliente Home

EJB Object

Bean

Base de

Datos

1- create()

2- ejbCreate()

3- se crea eldato en la basede datos

4- retorna un objetoque representa la claveprimaria del ejb creado

5- creación delobjeto EJB

4- retorna una referencia al EJB object

CONTAINER

Page 12: Esquema J2EE

Webservices

• Es un protocolo para intercambiar datos/servicios a través de la web

• Mensajes Basados en XML en formato SOAP simple object access protocol

• SOAP originalmente desarrollado por microsoft !!!

Page 13: Esquema J2EE

Webservices

• Los servicios Web proporcionan una manera de crear aplicaciones que pueden ser accedidas y utilizadas por diferentes clientes utilizando diferentes plataformas.

• Permite invocar funciones de otras aplicaciones independientemente de cómo se hayan creado las aplicaciones

• Permite integración de aplicaciones

Page 14: Esquema J2EE

Web Services: nada más simple

Programa Cliente

Servicio web

Servidor Web

Mensaje SOAP

Mensaje SOAP

Page 15: Esquema J2EE

Implementación en java

• Se debe escribir una clase que contenga métodos que serán los servicios

• Según el servidor que se use, basta con desplegarlos en una forma adecuada (deployment) – Esto generalmente se usa automáticamente

• En el cliente basta con “ubicar” el servicio por medio de una URL y llamarlo

Page 16: Esquema J2EE

Ejemplo deploy simple

• Cálculo raíz cuadradapublic class Raiz

{

public double raizCuadrada(String i1)

{

return Math.sqrt(Integer.parseInt(i1));

}

}

• Guardamos clase con extensión .jws en directorio de Axis

Page 17: Esquema J2EE

Ejemplo deploy simple

• XML SOAP generado<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope

xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<soapenv:Body> <raizCuadradaResponse

soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/>

<raizCuadradaReturn xsi:type="xsd:double">2.0</raizCuadradaReturn>

</raizCuadradaResponse> </soapenv:Body></soapenv:Envelope>

Page 18: Esquema J2EE

Ejemplo deploy simple

• Cliente que utiliza este Webservice

String numero ="465";

Service service = new Service();

Call call = (Call)service.createCall();

call.setTargetEndpointAddress(new URL("http://localhost:8080/axis/Raiz.jws"));

call.setOperationName(new QName("http://soapinterop.org/", "RaizCuadrada"));

Double returnValue = (Double)call.invoke(new Object[]{numero});

System.out.println("La raiz de "+numero +" es "+returnValue);