SlideShare una empresa de Scribd logo
J2EE Modelos Orientados por Objetos Abril 2011 Pablo Cáceres F.
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
Introduccion a J2EE
¿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.
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.
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.
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.
Capa de cliente (cont.) ‏
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.
Capa Web (cont.) ‏
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.
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.
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.
Enterprise 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
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.
Caracteristicas (cont.) ‏
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.
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.
Tipos de EJBs – Session Beans (cont.) ‏ Sin estado: Con estado:
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.
Tipos de EJBs – Entity Beans (cont.) ‏
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.
Tipos de EJBs – Message-driven Beans (cont.) ‏
Servicios de la Plataforma J2EE
¿Qué tipo de servicios provee el Contenedor J2EE? Seguridad Transaccionalidad Servicio de Nombres Conectividad Remota Servicios de la Plataforma
Seguridad Objetivos de la seguridad en J2EE Portabilidad Transparencia Aislamiento Extensibilidad Flexibilidad Independencia Testing de Compatibilidad Interoperabilidad segura
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. isCallerInRole(String name) ‏ isUserinRole(String name)
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.
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
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  getRemoteUser  isUserInRole  getUserPrincipal       java.security.Principal Recursos sin protección
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: isCallerInRole  getCallerPrincipal       java.security.Principal Uso del rol “ANYONE” por defecto. Mapeo automático del usuario “guest”
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
Seguridad – Propagación de identidad Se propaga al momento de despliegue No hay forma de autenticar una identidad ya propagada
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) ‏
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.
Transacciones manejadas por el Contenedor Atributos de transacción:  Determinan el alcance de una transacción. Especificados en el  descriptor de despliegue .
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.
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.
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
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
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
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
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.
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.
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.
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

Más contenido relacionado

PPTX
Clase ii intro j2 ee resumen
PDF
Sesion 3. desarrollo de aplicaciones jee
PPT
Clase 14 intro ej bs
PPTX
Arquitectura y diseño de aplicaciones Java EE
PPT
Introduccion Aplicaciones Web en java j2ee
PPTX
Introdución a aplicaciones web en java
Clase ii intro j2 ee resumen
Sesion 3. desarrollo de aplicaciones jee
Clase 14 intro ej bs
Arquitectura y diseño de aplicaciones Java EE
Introduccion Aplicaciones Web en java j2ee
Introdución a aplicaciones web en java

La actualidad más candente (20)

PDF
Seminario de programación Java, con Apache Maven, J2EE, JPA, Primefaces
PDF
Introducción a Enterprise Java Beans
PPTX
Qué es jdbc
PDF
Jsf jpa-y-hibernate-capitulo-01
PDF
Jpa modelos de componentes
PPS
Guia ejb deshabdig
PPT
Aplicaciones Distribuidas
DOCX
Modelo vista controlador vas Programacion por n capas
PPT
Aplicaciones En Capas
PPT
Arquitectura 3 Capas
PDF
[ES] Conectividad de java a base de datos(jdbc)
PDF
Taller 4 - Teleinformatica
PPTX
Backend middleware frontend (2)
PDF
Programación I 2. Arquitectura de Capas
DOCX
Explicacion metodologia 3 capas y base de datos, proyecto de ejemplo jsp
PPTX
Aplicaciones java
Seminario de programación Java, con Apache Maven, J2EE, JPA, Primefaces
Introducción a Enterprise Java Beans
Qué es jdbc
Jsf jpa-y-hibernate-capitulo-01
Jpa modelos de componentes
Guia ejb deshabdig
Aplicaciones Distribuidas
Modelo vista controlador vas Programacion por n capas
Aplicaciones En Capas
Arquitectura 3 Capas
[ES] Conectividad de java a base de datos(jdbc)
Taller 4 - Teleinformatica
Backend middleware frontend (2)
Programación I 2. Arquitectura de Capas
Explicacion metodologia 3 capas y base de datos, proyecto de ejemplo jsp
Aplicaciones java
Publicidad

Destacado (20)

PPT
Creación aplicación Web base struts2
PDF
Sensores y electrónica de soporte
PDF
Script oracle
PPT
Clase 1-modelo e-r
PDF
Conferencias ACIS: Análisis y visualización de información georreferenciada u...
PPTX
Cedes cloud 2013 ronald vargas quesada
PDF
Oracle introduccion
PPT
DOC
Notas pst i,2
PDF
Certificate osb
PPT
como ser_un_cristiano
PDF
Performance tuning how to write and run correctly sql statement
PPT
Creación aplicación Web base struts2
Sensores y electrónica de soporte
Script oracle
Clase 1-modelo e-r
Conferencias ACIS: Análisis y visualización de información georreferenciada u...
Cedes cloud 2013 ronald vargas quesada
Oracle introduccion
Notas pst i,2
Certificate osb
como ser_un_cristiano
Performance tuning how to write and run correctly sql statement
Publicidad

Similar a Introducción JEE (20)

PDF
01 jee5-componentes
 
PDF
1/9 Curso JEE5, Soa, Web Services, ESB y XML
PPT
JEE 5 - EJB3
PPT
Curso Java Avanzado 5 Ejb
PPT
J2 Ee Para Seres Humanos Slides
PPTX
Modulo 1 java ee platform
PPT
Introducción a Java y BEA (2008)
PDF
[ES] Introducción a Java EE 7
PDF
Curso Arquitectura J2 Ee Parte1
PPTX
ARQUITECTURA JAVA ENTERPRISE EDITION.pptx
PPT
Desarrollo Componentes J2EE
PDF
Introducción a java EE 7
PPS
Desarrollo de aplicaciones empresariales con Java EE
PPT
Charla Ejbs
PDF
Modulo Jee Intro Pos Fp Une
PDF
Taller introducción Java EE 7 @UAPA
PDF
Tema 6
01 jee5-componentes
 
1/9 Curso JEE5, Soa, Web Services, ESB y XML
JEE 5 - EJB3
Curso Java Avanzado 5 Ejb
J2 Ee Para Seres Humanos Slides
Modulo 1 java ee platform
Introducción a Java y BEA (2008)
[ES] Introducción a Java EE 7
Curso Arquitectura J2 Ee Parte1
ARQUITECTURA JAVA ENTERPRISE EDITION.pptx
Desarrollo Componentes J2EE
Introducción a java EE 7
Desarrollo de aplicaciones empresariales con Java EE
Charla Ejbs
Modulo Jee Intro Pos Fp Une
Taller introducción Java EE 7 @UAPA
Tema 6

Más de Pablo Andres Cáceres Ferreira (12)

PPT
Clase 21 programacion ejb 3.0
PPT
Clase 19 programación en base a patrones
PPT
Clase 18 packages y subsistemas
PPT
Clase 16 arq-capa-negocios
PPTX
Clase ii patrones de diseño
DOC
Conexión base de datos con jdbc
DOC
Clase 11 12-tags struts2
PPT
Introducción Patrones de Diseño
PPT
Introduccion a UML
PPT
Java2 servicios web
Clase 21 programacion ejb 3.0
Clase 19 programación en base a patrones
Clase 18 packages y subsistemas
Clase 16 arq-capa-negocios
Clase ii patrones de diseño
Conexión base de datos con jdbc
Clase 11 12-tags struts2
Introducción Patrones de Diseño
Introduccion a UML
Java2 servicios web

Último (20)

PDF
Maste clas de estructura metálica y arquitectura
PPTX
Power Point Nicolás Carrasco (disertación Roblox).pptx
PDF
clase auditoria informatica 2025.........
PDF
taller de informática - LEY DE OHM
PDF
SAP Transportation Management para LSP, TM140 Col18
PPTX
historia_web de la creacion de un navegador_presentacion.pptx
PPT
El-Gobierno-Electrónico-En-El-Estado-Bolivia
PPTX
IA de Cine - Como MuleSoft y los Agentes estan redefiniendo la realidad
PDF
Diapositiva proyecto de vida, materia catedra
DOCX
Zarate Quispe Alex aldayir aplicaciones de internet .docx
PDF
Plantilla para Diseño de Narrativas Transmedia.pdf
PDF
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
PDF
Estrategia de apoyo tecnología grado 9-3
PDF
Influencia-del-uso-de-redes-sociales.pdf
PDF
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
PDF
MANUAL TECNOLOGÍA SER MINISTERIO EDUCACIÓN
PPTX
REDES INFORMATICAS REDES INFORMATICAS.pptx
PPTX
Sesion 1 de microsoft power point - Clase 1
PPTX
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PDF
MÓDULO DE CALOR DE GRADO DE MEDIO DE FORMACIÓN PROFESIONAL
Maste clas de estructura metálica y arquitectura
Power Point Nicolás Carrasco (disertación Roblox).pptx
clase auditoria informatica 2025.........
taller de informática - LEY DE OHM
SAP Transportation Management para LSP, TM140 Col18
historia_web de la creacion de un navegador_presentacion.pptx
El-Gobierno-Electrónico-En-El-Estado-Bolivia
IA de Cine - Como MuleSoft y los Agentes estan redefiniendo la realidad
Diapositiva proyecto de vida, materia catedra
Zarate Quispe Alex aldayir aplicaciones de internet .docx
Plantilla para Diseño de Narrativas Transmedia.pdf
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
Estrategia de apoyo tecnología grado 9-3
Influencia-del-uso-de-redes-sociales.pdf
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
MANUAL TECNOLOGÍA SER MINISTERIO EDUCACIÓN
REDES INFORMATICAS REDES INFORMATICAS.pptx
Sesion 1 de microsoft power point - Clase 1
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
MÓDULO DE CALOR DE GRADO DE MEDIO DE FORMACIÓN PROFESIONAL

Introducción JEE

  • 1. J2EE Modelos Orientados por Objetos Abril 2011 Pablo Cáceres F.
  • 2. 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
  • 4. ¿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.
  • 5. 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.
  • 6. 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.
  • 7. 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.
  • 8. Capa de cliente (cont.) ‏
  • 9. 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.
  • 11. 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.
  • 12. 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.
  • 13. 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.
  • 15. 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
  • 16. 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.
  • 18. 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.
  • 19. 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.
  • 20. Tipos de EJBs – Session Beans (cont.) ‏ Sin estado: Con estado:
  • 21. 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.
  • 22. Tipos de EJBs – Entity Beans (cont.) ‏
  • 23. 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.
  • 24. Tipos de EJBs – Message-driven Beans (cont.) ‏
  • 25. Servicios de la Plataforma J2EE
  • 26. ¿Qué tipo de servicios provee el Contenedor J2EE? Seguridad Transaccionalidad Servicio de Nombres Conectividad Remota Servicios de la Plataforma
  • 27. Seguridad Objetivos de la seguridad en J2EE Portabilidad Transparencia Aislamiento Extensibilidad Flexibilidad Independencia Testing de Compatibilidad Interoperabilidad segura
  • 28. 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. isCallerInRole(String name) ‏ isUserinRole(String name)
  • 29. 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.
  • 30. 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
  • 31. 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 getRemoteUser isUserInRole getUserPrincipal  java.security.Principal Recursos sin protección
  • 32. 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: isCallerInRole getCallerPrincipal  java.security.Principal Uso del rol “ANYONE” por defecto. Mapeo automático del usuario “guest”
  • 33. 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
  • 34. Seguridad – Propagación de identidad Se propaga al momento de despliegue No hay forma de autenticar una identidad ya propagada
  • 35. 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) ‏
  • 36. 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.
  • 37. Transacciones manejadas por el Contenedor Atributos de transacción: Determinan el alcance de una transacción. Especificados en el descriptor de despliegue .
  • 38. 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.
  • 39. 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.
  • 40. 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
  • 41. 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
  • 42. 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
  • 43. 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
  • 44. 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.
  • 45. 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.
  • 46. 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.
  • 47. 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