Anda di halaman 1dari 47

J2EE

Enterprise JavaBeans

Universidad Simon Bolivar


CI4822 Sistemas de Operacion III
Enero Marzo 2004

Modelos Orientados por Objetos

J2EE
Enterprise JavaBeans
Javier Azabache
Jesus De Oliveira
Febrero 2004

Sergio Aguilera

J2EE

Enterprise JavaBeans

Contenido

Introduccion a la plataforma J2EE

Que es J2EE?

Componentes y Capas

Motivacion

Aplicaciones

Enterprise JavaBeans

Concepto y Caracteristicas

Tipos

Comunicacion

Servicios de la plataforma J2EE

Seguridad

Manejo de transacciones

Servicios de Directorio

Ensamblaje y despliegue de aplicaciones

J2EE

Enterprise JavaBeans

Introduccion a
J2EE

J2EE

Enterprise JavaBeans

Que es J2EE?

La Java 2 Platform, Enterprise Edition (J2EE) es un conjunto


de especificaciones y prcticas coordinadas que juntas
permiten soluciones para el desarrollo, implantacin y
administracin de aplicaciones de mltiples capas con un
servidor centralizado. Aade las capacidades necesarias para
proveer una plataforma Java completa, estable, segura y
rpida a un nivel empresarial. Provee valor al reducir
significativamente el costo y complejidad del desarrollo e
implantacin de soluciones de mltiples capas, lo que resulta
en servicios que pueden ser rpidamente implementados y
fcilmente aumentados.

J2EE

Enterprise JavaBeans

Componentes de J2EE

La especificacin del J2EE define las


siguientes capas de una aplicacin:

Capa de cliente. Corre en la


mquina cliente.

Capa de web. Corre en el servidor


J2EE.

Capa de negocio. Corre en el


servidor J2EE.

Capa de Sistema de Informacin


Empresarial (EIS). Corre en el
servidor EIS.

J2EE

Enterprise JavaBeans

Capa de cliente

Clientes web. Consisten de dos partes: pginas web dinmicas y un


navegador web. Se les conoce como "clientes livianos" (thin client) porque no
hacen querys a bases de datos, ni ejecutan reglas complejas de negocio, ni
se conectan a aplicaciones heredadas. Dichas operaciones son manejadas por
el servidor J2EE.

Applets. ES una pequea aplicacin cliente escrita en Java que es ejecutada


por la mquina virtual de Java instalada en el navegador web.

Clientes de aplicacin. Son aplicaciones que corren en la mquina cliente y


permiten a los usuarios manejar tareas que requieren una interfaz ms rica
que la que es otorgada por html o xml. Generalmente tienen una interfaz
grfica (GUI) creada usando Swing o Abstract Window Toolkit (AWT).
Tambin es posible usar un intrprete de comandos.

J2EE

Enterprise JavaBeans

Capa de cliente (cont.)

JavaBeans. Los clientes pueden tener componentes basados


en JavaBeans para el manejo de flujo de datos entre un
cliente de aplicacin o applet y los componentes que corren
en el servidor J2EE o entre componentes del servidor y una
base de datos. Dichos JavaBeans no se consideran
componentes del J2EE.

Comunicaciones con el Servidor J2EE. El cliente se comunica


con el componente de negocio ya sea directamente o a
travs de pginas JSP o servlets que corren en el
componente web.

J2EE

Enterprise JavaBeans

Capa de cliente (cont.)

J2EE

Enterprise JavaBeans

Capa Web

Servlets: Son clases del lenguaje Java que procesan


solicitudes y construyen respuestas de forma dinmica.

Pginas JSP: Son documentos de texto que son ejecutados


como servlets pero permiten un acercamiento ms natural a
la creacin de contenido esttico.

Applets y Pginas html estticas. Son usadas por los


componentes web pero no se consideran componentes de
J2EE. Lo mismo ocurre con clases utilitarias y JavaBeans del
lado del servidor.

J2EE

Enterprise JavaBeans

Capa Web (cont.)

J2EE

Enterprise JavaBeans

Capa del Negocio

Es toda la parte lgica que resuelve o satisface las necesidades de un


dominio de negocio particular como la banca, finanzas, ventas, etc. Dicha
lgica es manejada por Enterpise JavaBeans. Hay tres tipos de enterprise
beans: beans de sesin, beans de entidad y beans manejados por
mensajes.

J2EE

Enterprise JavaBeans

Capa del Negocio

Maneja el software del sistema de informacin empresarial

Maneja sistemas de infraestructura empresariales como planificacin de


recursos empresariales (ERP), procesamiento de transacciones del
mainframe, sistemas de bases de datos, y otros sistemas de informacin
heredados.

J2EE

Enterprise JavaBeans

Motivacion

Reutilizacin: Liberar al programador de reinventar la rueda en cada


aplicacin. El programador solo se dedica a implementar la logica del
negocio.

Escalabilidad: Agregar y distribuir componentes que conforman una


misma aplicacin, a medida que sea necesario. Reutilizar componentes ya
escritos, desplegados en servidores alrededor del mundo.

Aplicaciones

Software empresarial de gran escala, de mision critica, con altos


requerimientos de seguridad y confiabilidad.

J2EE

Enterprise JavaBeans

Enterprise
JavaBeans

J2EE

Enterprise JavaBeans

Concepto

Un EJB (Enterprise JavaBean) es un componente de la plataforma J2EE.

Pieza de software autocontenida que es parte de una aplicacin orientada


por transacciones

Ejecuta dentro de un Container, el Servidor de Aplicaciones Empresarial

Proveen metodos que implementan plomeria de manera automatica


(persistencia, transacciones, seguridad, comunicacin, etc.)

Representan objetos del negocio, de la aplicacin a la que pertenecen

Pueden estar distribuidos

Se encuentran en la capa del negocio, en el modelo por capas de J2EE

J2EE

Enterprise JavaBeans

Caracteristicas

Cada EJB es una clase Java normal, que implementa dos interfaces:
Interfaz home e interfaz remote.

La interfaz home extiende de javax.ejb.EJBHome

Esta interfaz se utiliza para manejar el ciclo de vida del bean dentro del

container (creacion, destruccion, busqueda, etc.)

A traves de esta interfaz, el container puede referirse a todos sus beans


como objetos del tipo EJBHome

La interfaz remote extiende de javax.ejb.EJBObject

La interfaz remote expone los metodos del negocio del bean a sus
clientes.

Permite la interaccion remota de los clientes con el bean.

J2EE

Enterprise JavaBeans

Caracteristicas (cont.)

J2EE

Enterprise JavaBeans

Tipos de EJBs

Existen 3 tipos de EJBs:

Session Beans: Representan a los clientes dentro del servidor J2EE. Se


encargan de realizar el trabajo por los clientes externos, liberandolos de la
complejidad de las reglas del negocio.

Entity Beans: Representan objetos persistentes de la capa del negocio de la


aplicacin. Por ejemplo: Cliente, Persona, Factura, Producto, Reservacion, etc.

Message-driven Beans: Parecidos a los Session Beans, pero son


manejados por mensajes. Reciben mensajes desde los clientes, el Servidor de
Aplicaciones, otros beans y a traves de JMS, y los procesa de manera
asincrona.

J2EE

Enterprise JavaBeans

Tipos de EJBs Session Beans

Son los representantes de los clientes dentro del servidor de aplicaciones. Los
clientes solicitan metodos a los session beans para realizar transacciones
especificas del negocio, y los session beans se encargan del trabajo sucio
internamente.

Actuan como una fachada, liberando al cliente del conocimiento de toda la


capa del negocio de la aplicacin.

Existen 2 tipos:

Con estado: Estan acoplados a un cliente en especifico. Mantienen el valor de las


variables de la instancia entre diferentes llamadas.

Sin estado: Pueden ser compartidos entre varios clientes. Son llamados, realizan
su trabajo, devuelven el resultado y se olvidan del cliente.

J2EE

Enterprise JavaBeans

Tipos de EJBs Session Beans (cont.)

Sin estado:

Con estado:

J2EE

Enterprise JavaBeans

Tipos de EJBs Entity Beans

Representan objetos persistentes de la capa de aplicacin, que por lo general


estan almacenados en una base de datos. La informacion que manejan los
entity beans es mantenida aun cuando el entity bean sea destruido

Los cambios que hagan los clientes u otros beans a las propiedades de los
entity beans se ven reflejados persistentemente.

Existen 2 tipos:

Container Managed Persistence: El contenedor se encarga automaticamente del


manejo de la persistencia. El contenedor decide como almacenar en el mecanismo
persistente la informacion del bean.

Bean Managed Persistence: El propio bean se encarga de especificar como


debe ser almacenado persistentemente.

J2EE

Enterprise JavaBeans

Tipos de EJBs Entity Beans (cont.)

J2EE

Enterprise JavaBeans

Tipos de EJBs Message-driven Beans

Son receptores de mensajes en un entorno de Java Messaging


Servicie

Parecidos a los session beans, representan procesos u


operaciones

Son asincronos, reciben mensajes y los procesan poco a poco,


no dejan esperando al cliente (emisor) por un valor de retorno

Reciben mensajes de otros EJBs, de los clientes y de cualquier


otra aplicacin que utilice JMS.

J2EE

Enterprise JavaBeans

Tipos de EJBs Message-driven Beans (cont.)

J2EE

Enterprise JavaBeans

Servicios de la
Plataforma J2EE

J2EE

Enterprise JavaBeans

Servicios de la Plataforma

Qu tipo de servicios provee el Contenedor J2EE?


Seguridad
Transaccionalidad
Servicio de Nombres
Conectividad Remota

J2EE

Enterprise JavaBeans

Seguridad

Objetivos de la seguridad en J2EE


Portabilidad
Transparencia
Aislamiento
Extensibilidad
Flexibilidad
Independencia
Testing de Compatibilidad
Interoperabilidad segura

J2EE

Enterprise JavaBeans

Seguridad Tipos de seguridad

Declarativa: Especificacin de la estructura de seguridad y de


los mecanismos en un descriptor de despliegue

Programtica: Decisiones de seguridad tomadas por


aplicaciones "security-aware". Es til cuando la seguridad
declarativa no es suficiente para especificar el modelo de
seguridad de la aplicacin.
o isCallerInRole(String name)
o isUserinRole(String name)

J2EE

Enterprise JavaBeans

Seguridad Roles

Roles de seguridad: categoras de usuarios relevantes a una


aplicacin con acceso a determinados EJB.
Son creados sobre el archivo JAR o WAR del bean en
particular dentro de la aplicacin
Cuando se despliega una aplicacin se mapean los roles a
identidades de seguridad (principales)

Grupos J2EE: grupos de usuarios con mayor alcance que los


roles. Designado para el servidor J2EE entero y no slo para
una aplicacin en el mismo.

J2EE

Enterprise JavaBeans

Seguridad Capas

Capa Web: Proteccin de recursos Web especificando


Restricciones de seguridad.
Restricciones de seguridad Coleccin Recursos Web
lista de patrones URL y metodos HTTP que describen un
conjunto de recursos a proteger
Mecanismos de autenticacin del contenedor Web:
HTTP basic authentication
Form-based authentication
Client-certificate authentication
Uso de SSL

J2EE

Enterprise JavaBeans

Seguridad Capas

Capa Web
Uso de seguridad programtica. Los servlets usan los
applets para tomar decisiones en base a los usuarios y sus
roles. Mtodos de la interfaz HttpServletRequest
o getRemoteUser
o isUserInRole
o getUserPrincipal
java.security.Principal
Recursos sin proteccin

J2EE

Enterprise JavaBeans

Seguridad Capas

Capa EJB: Proteccin de recursos de los EJB. (mtodos)


Seguridad declarativa: especificacin de permisos de
mtodo. (roles que pueden invocarlo)
Seguridad Programtica: mtodos de la interfaz
EJBContext:
o isCallerInRole
o getCallerPrincipal
java.security.Principal
Uso del rol ANYONE por defecto. Mapeo automtico del
usuario guest

J2EE

Enterprise JavaBeans

Seguridad Capas

Capa Aplicacin: Similar a Web y EJB.

Los clientes pueden usar JAAS (Java Authentication and


Authorization Service) framework standard PAM
(Pluggable Authenticaction Module)

Uso de la interfaz
javax.security.auth.callback.CallbackHandler

J2EE

Enterprise JavaBeans

Seguridad Propagacin de identidad

Se propaga al momento de despliegue

No hay forma de autenticar una identidad ya propagada

J2EE

Enterprise JavaBeans

Manejo de transacciones

Transacciones: Conjunto de operaciones asociadas bajo un


orden y que cumplen las propiedades ACID

Tipos:
Transacciones manejadas por el contenedor
Transacciones manejadas por el componente (Bean)

J2EE

Enterprise JavaBeans

Transacciones manejadas por el Contenedor

El contenedor establece los lmites de las transacciones.

Simplifica el cdigo no incluye declaraciones de inicio o final


de la transaccin.

Tpicamente el contenedor inicia una transaccin


inmediatamente antes de iniciarse un mtodo de un EJB y la
termina justo antes de que ste finalice.

Solamente se asocia una transaccin por mtodo. No se


permiten transacciones mltiples o anidadas

No todos los mtodos requieren ser asociados a una


transaccin.

J2EE

Enterprise JavaBeans

Transacciones manejadas por el Contenedor

Atributos de transaccin: Determinan el alcance de una


transaccin. Especificados en el descriptor de despliegue.

J2EE

Enterprise JavaBeans

Transacciones manejadas por el Contenedor

Atributos de transaccin:
Required method-B se ejecuta dentro de la misma transaccin del
cliente o se inicia una nueva en caso de no existir.
RequiresNew se suspende la transaccin del cliente y se inicia
una nueva para method-B. Al terminar, se reinicia la ejecucin del
cliente. Si el cliente no tiene transaccion es igual al atributo anteror.
Mandatory similar a required pero si el cliente no tiene
transaccin, el contenedor lanza una
TransactionRequiredException.

J2EE

Enterprise JavaBeans

Transacciones manejadas por el Contenedor

Atributos de transaccin:
NotSupported si el cliente posee una transaccion se suspende y
se ejecuta method-B sin iniciar otra. Al terminar se reanuda.
Supports si el cliente tiene una transaccin, method-B se ejecuta
dentro de ella. Si no, no se inicia ninguna nueva.
Never si el cliente no tiene una transaccin, se ejecuta method-B
sin iniciar una nueva. En caso contrario, el contenedor lanza una
RemoteException.

J2EE

Enterprise JavaBeans

Transacciones manejadas por el Contenedor

Roll back
Excepcin del sistema
Invocacin de setRollBackOnly (EJBContext)

Sincronizacin de variables: Interfaz SessionSynchronization


afterBegin
beforeCompletion
afterCompletion

Mtodos no permitidos: commit, setAutoCommit y rollback


(java.sql.connection); getUserTransaction (EJBContext)
y cualquier mtodo de Javax.transacctionUserTransaction

J2EE

Enterprise JavaBeans

Transacciones manejadas por el Componente

Cada componente establece los lmites de las transacciones.

No incluye las transacciones de los entity-beans

No se limita el numero de transacciones asociadas a un mtodo

Tipos de transacciones:
JDBC
JTA

J2EE

Enterprise JavaBeans

Transacciones manejadas por el Componente

Transacciones JDBC: Son controladas directamente por el


manejador de transacciones del DBMS. Se usan los mtodos
commit y rollback. El comienzo de nuevas transacciones es
implcito.

Transacciones JTA: Java Transaction API. Permite demarcar


transacciones independientes de la implementacin de
manejador de transacciones. Llama a mtodos del JTS (Java
Transaction Servicie). Son controladas por el manejador de
transacciones de J2EE

Los beans sin estado deben hacer commit antes de retornar.

Mtodos no permitidos: set y getRollbackOnly

J2EE

Enterprise JavaBeans

Manejo de transacciones

Timeouts: El intervalo de timeout de las transacciones


manejadas por el contenedor se puede controlar con
transaction.timeout property en el archivo
default.properties.

Nivel de aislamiento: grado en el cual la data que se esta


cargando es visible a otras aplicaciones.

Web: Se puede demarcar transacciones sobre recursos web


con las interfaces java.sql.Connection o
javax.transaction.UserTransaction

J2EE

Enterprise JavaBeans

Manejo de transacciones

Actualizacin de mltiples bases de datos: El manejador de


transacciones J2EE controla todas las transacciones de EJB
menos las de tipo JDBC.

J2EE

Enterprise JavaBeans

Servicio de directorio

JNDI (Java Naming Directory Interface)


API a travs del cual los componentes J2EE encuentran los objetos,
invocando el mtodo lookup
Extensin de la plataforma Java que provee una interfaz unificada a los
mltiples servicios de nombre y directorio.

J2EE

Enterprise JavaBeans

Servicio de directorio

JNDI : (Java Naming ana Directory Interface)


Un nombre JNDI est atado a su objeto a travs del servicio de
directorios y naming del servidor J2EE.
Ej: base de datos Coromoto jdbc/Coromoto

Acceso de un componente J2EE a un recurso fbrica de conexiones


(devuelve objetos java.sql.Connection )

Una referencia a recurso es un elemento de un descriptor de despliegue


que identifica el nombre en cdigo del recurso. Este a su vez referencia a
una fbrica de conexiones para el recurso.

J2EE

Enterprise JavaBeans

Servicio de directorio

Contexto de naming conjunto de ataduras nombre-a-objeto

Objeto context mtodos para atar nombres a objetos, desatarlos,


renombrar objetos y listar ataduras.

Subcontextos estructura jerrquica