j2ee
DESCRIPTION
TRANSCRIPT
J2EEEnterprise JavaBeans
J2EEEnterprise JavaBeans
Modelos Orientados por Objetos
Javier Azabache
Jesus De Oliveira
Sergio AguileraFebrero 2004
Universidad Simon Bolivar
CI4822 – Sistemas de Operacion III
Enero – Marzo 2004
J2EEEnterprise 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
J2EEEnterprise JavaBeans
Introduccion a J2EE
J2EEEnterprise JavaBeans
¿Que es J2EE?
La Java 2 Platform, Enterprise Edition (J2EE) es un
conjunto de especificaciones y prácticas coordinadas
que juntas permiten soluciones para el desarrollo,
implantación y administración de aplicaciones de
múltiples capas con un servidor centralizado. Añade
las capacidades necesarias para proveer una
plataforma Java completa, estable, segura y rápida a
un nivel empresarial. Provee valor al reducir
significativamente el costo y complejidad del
desarrollo e implantación de soluciones de múltiples
capas, lo que resulta en servicios que pueden ser
rápidamente implementados y fácilmente
aumentados.
J2EEEnterprise JavaBeans
Componentes de J2EE
La especificación del J2EE define
las siguientes capas de una
aplicación:
Capa de cliente. Corre en la
máquina cliente.
Capa de web. Corre en el
servidor J2EE.
Capa de negocio. Corre en el
servidor J2EE.
Capa de Sistema de
Información Empresarial (EIS).
Corre en el servidor EIS.
J2EEEnterprise JavaBeans
Capa de cliente Clientes web. Consisten de dos partes: páginas web dinámicas 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 pequeña aplicación cliente escrita en Java que es
ejecutada por la máquina virtual de Java instalada en el navegador
web.
Clientes de aplicación. Son aplicaciones que corren en la máquina
cliente y permiten a los usuarios manejar tareas que requieren una
interfaz más rica que la que es otorgada por html o xml.
Generalmente tienen una interfaz gráfica (GUI) creada usando
Swing o Abstract Window Toolkit (AWT). También es posible usar un
intérprete de comandos.
J2EEEnterprise 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 aplicación 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 través de páginas JSP o servlets que
corren en el componente web.
J2EEEnterprise JavaBeans
Capa de cliente (cont.)
J2EEEnterprise JavaBeans
Capa Web
Servlets: Son clases del lenguaje Java que procesan
solicitudes y construyen respuestas de forma
dinámica.
Páginas JSP: Son documentos de texto que son
ejecutados como servlets pero permiten un
acercamiento más natural a la creación de contenido
estático.
Applets y Páginas html estáticas. 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.
J2EEEnterprise JavaBeans
Capa Web (cont.)
J2EEEnterprise JavaBeans
Capa del Negocio
Es toda la parte lógica que resuelve o satisface las necesidades
de un dominio de negocio particular como la banca, finanzas,
ventas, etc. Dicha lógica es manejada por Enterpise JavaBeans.
Hay tres tipos de enterprise beans: beans de sesión, beans de
entidad y beans manejados por mensajes.
J2EEEnterprise JavaBeans
Capa del Negocio
Maneja el software del sistema de información empresarial
Maneja sistemas de infraestructura empresariales como
planificación de recursos empresariales (ERP), procesamiento de
transacciones del mainframe, sistemas de bases de datos, y otros
sistemas de información heredados.
J2EEEnterprise JavaBeans
Motivacion
Reutilización: Liberar al programador de “reinventar la rueda”
en cada aplicación. El programador solo se dedica a
implementar la logica del negocio.
Escalabilidad: Agregar y distribuir componentes que conforman
una misma aplicación, 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.
J2EEEnterprise JavaBeans
Enterprise JavaBeans
J2EEEnterprise JavaBeans
Concepto
Un EJB (Enterprise JavaBean) es un componente de la
plataforma J2EE.
Pieza de software autocontenida que es parte de una aplicación
orientada por transacciones
Ejecuta dentro de un Container, el Servidor de Aplicaciones
Empresarial
Proveen metodos que implementan ¨plomeria¨ de manera
automatica (persistencia, transacciones, seguridad,
comunicación, etc.)
Representan objetos del negocio, de la aplicación a la que
pertenecen
Pueden estar distribuidos
Se encuentran en la capa del negocio, en el modelo por capas
de J2EE
J2EEEnterprise 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.
J2EEEnterprise JavaBeans
Caracteristicas (cont.)
J2EEEnterprise 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 aplicación. 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.
J2EEEnterprise 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 aplicación.
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.
J2EEEnterprise JavaBeans
Tipos de EJBs – Session Beans (cont.)
Sin estado: Con estado:
J2EEEnterprise JavaBeans
Tipos de EJBs – Entity Beans
Representan objetos persistentes de la capa de aplicación, 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.
J2EEEnterprise JavaBeans
Tipos de EJBs – Entity Beans (cont.)
J2EEEnterprise 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 aplicación que utilice JMS.
J2EEEnterprise JavaBeans
Tipos de EJBs – Message-driven Beans (cont.)
J2EEEnterprise JavaBeans
Servicios de la Plataforma J2EE
J2EEEnterprise JavaBeans
¿Qué tipo de servicios provee el Contenedor J2EE?
Seguridad
Transaccionalidad
Servicio de Nombres
Conectividad Remota
Servicios de la Plataforma
J2EEEnterprise JavaBeans
Seguridad
Objetivos de la seguridad en J2EE
Portabilidad
Transparencia
Aislamiento
Extensibilidad
Flexibilidad
Independencia
Testing de Compatibilidad
Interoperabilidad segura
J2EEEnterprise JavaBeans
Seguridad – Tipos de seguridad
Declarativa: Especificación de la estructura de seguridad y de
los mecanismos en un descriptor de despliegue
Programática: 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 aplicación.
o isCallerInRole(String name)
o isUserinRole(String name)
J2EEEnterprise JavaBeans
Seguridad – Roles
Roles de seguridad: categorías de usuarios relevantes a una
aplicación con acceso a determinados EJB.
Son creados sobre el archivo JAR o WAR del bean en
particular dentro de la aplicación
Cuando se despliega una aplicación 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 sólo para
una aplicación en el mismo.
J2EEEnterprise JavaBeans
Seguridad – Capas
Capa Web: Protección de recursos Web especificando
Restricciones de seguridad.
Restricciones de seguridad Colección Recursos Web
lista de patrones URL y metodos HTTP que describen un
conjunto de recursos a proteger
Mecanismos de autenticación del contenedor Web:
HTTP basic authentication
Form-based authentication
Client-certificate authentication
Uso de SSL
J2EEEnterprise JavaBeans
Seguridad – Capas
Capa Web
Uso de seguridad programática. Los servlets usan los
applets para tomar decisiones en base a los usuarios y sus
roles. Métodos de la interfaz HttpServletRequest
o getRemoteUser
o isUserInRole
o getUserPrincipal
java.security.Principal
Recursos sin protección
J2EEEnterprise JavaBeans
Seguridad – Capas
Capa EJB: Protección de recursos de los EJB. (métodos)
Seguridad declarativa: especificación de permisos de
método. (roles que pueden invocarlo)
Seguridad Programática: métodos de la interfaz
EJBContext:
o isCallerInRole
o getCallerPrincipal
java.security.Principal
Uso del rol “ANYONE” por defecto. Mapeo automático del
usuario “guest”
J2EEEnterprise JavaBeans
Seguridad – Capas
Capa Aplicación: 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
J2EEEnterprise JavaBeans
Seguridad – Propagación de identidad
Se propaga al momento de despliegue
No hay forma de autenticar una identidad ya propagada
J2EEEnterprise 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)
J2EEEnterprise JavaBeans
Transacciones manejadas por el Contenedor
El contenedor establece los límites de las transacciones.
Simplifica el código no incluye declaraciones de inicio o final
de la transacción.
Típicamente el contenedor inicia una transacción
inmediatamente antes de iniciarse un método de un EJB y la
termina justo antes de que éste finalice.
Solamente se asocia una transacción por método. No se
permiten transacciones múltiples o anidadas
No todos los métodos requieren ser asociados a una
transacción.
J2EEEnterprise JavaBeans
Transacciones manejadas por el Contenedor
Atributos de transacción: Determinan el alcance de una
transacción. Especificados en el descriptor de despliegue.
J2EEEnterprise JavaBeans
Transacciones manejadas por el Contenedor Atributos de transacción:
Required method-B se ejecuta dentro de la misma transacción del
cliente o se inicia una nueva en caso de no existir.
RequiresNew se suspende la transacción del cliente y se inicia
una nueva para method-B. Al terminar, se reinicia la ejecución del
cliente. Si el cliente no tiene transaccion es igual al atributo anteror.
Mandatory similar a required pero si el cliente no tiene
transacción, el contenedor lanza una
TransactionRequiredException.
J2EEEnterprise JavaBeans
Transacciones manejadas por el Contenedor Atributos de transacción:
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 transacción, method-B se ejecuta
dentro de ella. Si no, no se inicia ninguna nueva.
Never si el cliente no tiene una transacción, se ejecuta method-B
sin iniciar una nueva. En caso contrario, el contenedor lanza una
RemoteException.
J2EEEnterprise JavaBeans
Transacciones manejadas por el Contenedor Roll back
Excepción del sistema
Invocación de setRollBackOnly (EJBContext)
Sincronización de variables: Interfaz SessionSynchronization
afterBegin
beforeCompletion
afterCompletion
Métodos no permitidos: commit, setAutoCommit y rollback
(java.sql.connection); getUserTransaction (EJBContext)
y cualquier método de Javax.transacctionUserTransaction
J2EEEnterprise JavaBeans
Transacciones manejadas por el Componente
Cada componente establece los límites de las transacciones.
No incluye las transacciones de los entity-beans
No se limita el numero de transacciones asociadas a un método
Tipos de transacciones:
JDBC
JTA
J2EEEnterprise JavaBeans
Transacciones manejadas por el Componente Transacciones JDBC: Son controladas directamente por el
manejador de transacciones del DBMS. Se usan los métodos
commit y rollback. El comienzo de nuevas transacciones es
implícito.
Transacciones JTA: Java Transaction API. Permite demarcar
transacciones independientes de la implementación de
manejador de transacciones. Llama a métodos del JTS (Java
Transaction Servicie). Son controladas por el manejador de
transacciones de J2EE
Los beans sin estado deben hacer commit antes de retornar.
Métodos no permitidos: set y getRollbackOnly
J2EEEnterprise 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
J2EEEnterprise JavaBeans
Manejo de transacciones
Actualización de múltiples bases de datos: El manejador de
transacciones J2EE controla todas las transacciones de EJB
menos las de tipo JDBC.
J2EEEnterprise JavaBeans
Servicio de directorio JNDI (Java Naming Directory Interface)
API a través del cual los componentes J2EE encuentran los objetos, invocando el método lookup
Extensión de la plataforma Java que provee una interfaz unificada a los múltiples servicios de nombre y directorio.
J2EEEnterprise JavaBeans
Servicio de directorio
JNDI : (Java Naming ana Directory Interface)
Un nombre JNDI está atado a su objeto a través del servicio de
directorios y naming del servidor J2EE.
Ej: base de datos Coromoto jdbc/Coromoto
Acceso de un componente J2EE a un recurso fábrica de conexiones
(devuelve objetos java.sql.Connection )
Una referencia a recurso es un elemento de un descriptor de despliegue
que identifica el nombre en código del recurso. Este a su vez referencia a
una fábrica de conexiones para el recurso.
J2EEEnterprise JavaBeans
Servicio de directorio
Contexto de naming conjunto de ataduras nombre-a-objeto
Objeto context métodos para atar nombres a objetos, desatarlos,
renombrar objetos y listar ataduras.
Subcontextos estructura jerárquica