Download Plataforma J2EE.
Document related concepts
no text concepts found
Transcript
Plataforma J2EE. Tecnologías que la componen. Roles en la plataforma. Servicios de la plataforma. Tecnologías de servicio. Tecnologías de comunicación. Antonio Vega Eligio Profesor: Dr. Mauricio J. Procel Moreno 31 de Octubre de 2008 Tecnologías de la plataforma J2EE. Java 2 Enterprise Edition, puede proporcionar características que distinguen a una implementación de otra, como por ejemplo: facilidad de desarrollo o mejor desempeño. El nivel de abstracción que proporciona J2EE permite que sean desarrollados, explicados y examinados temas comunes. O bien que sean desarrolladas ciertas pautas de diseño. Java BluePrints es una guía de mejores prácticas para desarrollar en la plataforma J2EE, Java BluePrints se refiere al manejo de conceptos mencionados, BluePrints responde preguntas como: Guía de mejores prácticas Java Blueprints. ¿Cuál es la mejor manera de utilizar un componente J2EE? ¿Donde tiene sentido utilizar Servlets y donde JSP? ¿Cual es la mejor manera de distribuir la lógica de negocios entre Beans de sesión y de entidad? ¿Como elegir entre persistencia administrada por Contenedor o por Bean, cuando se usan Beans de entidad? ¿Cuales son sacrificios de diseño y rendimiento cuando se escoge entre una arquitectura distribuida y otra basada en interfaces locales? En temas de seguridad, ¿como se diseñan aplicaciones distribuidas accesibles a usuarios que las necesitan e inaccesibles para intrusos? Java Blueprints. La arquitectura J2EE define un nivel o capa de cliente, una capa intermedia (que consiste en una o más capas intermedias) y una capa de servidor. La primera capa puede estar dentro o fuera de una pared de fuego corporativa (Firewall), la segunda contiene la lógica de negocio a través de contenedores Web o contenedores JavaBeans, la capa final contiene los Enterprise Information Systems y generalmente es accesible mediante APIs o programas interfaces de aplicaciones. Contenedores. Ambientes de tiempo de ejecución que proporcionan servicios específicos a diversos componentes del sistema como: Responder peticiones de clientes, procesar requerimientos de ejecución de tareas (invocar Servlets o JSPs), regresar resultados al cliente, proporcionar APIs para manejos de sesión, administración de transacciones y objetos en ejecución, acceso estandarizado a sistemas de información corporativos, como por ejemplo el uso de JDBC, etc. Proporcionan mecanismos de comportamiento requerido de aplicaciones durante el ensamble o instalación / liberación (deployment), por medio del uso de descriptores de instalación (archivos XML con el comportamiento de los componentes y del contenedor) en vez de hacerlo al nivel de código de componente. Contenedores. El diseñador de aplicaciones trabaja directamente con la lógica de negocio por medio de los EJBs y las complejidades de entrega de confiabilidad y escalabilidad de servicio son manejadas por el contenedor. Cuando un componente se libera en un contenedor, como el mismo administra los servicios, el comportamiento puede ser configurado declarativamente con archivos de configuración de la liberación. Por ejemplo, un proveedor de componentes de aplicación puede especificar un nombre abstracto de una base de datos que un componente Enterprise JavaBeans necesita acceder y el instalador (deployer) ligará ese nombre con la información necesaria para acceder la base de datos (como el usuario y la palabra de paso). Tecnologías de plataforma J2EE. J2EE especifica tecnologías para dar soporte a aplicaciones empresariales multicapa. Existen 3 categorías: Componentes, Servicios y Comunicación. Connector EIS Tier Contenedores-ComponentesServicios. Componentes. Utilizados por desarrolladores para crear la interfaz de usuario y la lógica de negocio. Unidad de software al nivel de aplicación: JavaBeans, Applets, Clientes de aplicación, Enterprise JavaBeans, componentes Web (Servlet, JSP) y componentes adaptadores de recursos. Ejecución. Plataforma cliente - Applets y aplicaciones cliente. Plataforma servidor - EJBs, Componentes Web y Adaptadores de recursos. Desarrolladores y arquitectos - Componentes J2EE. Proveedores EIS - Componentes adaptadores de recursos. Clientes J2EE. Applets. Ejecutados en navegadores Web, Se comunican por medio de HTTP. Aplicaciones cliente. Tienen su propio contenedor (librerías propias de tiempo de ejecución). El contenedor-cliente usa RMI-IIOP(Remote Method Invocation - Internet Inter-Object Request Broker Protocol) para comunicarse con un servidor EJB. Tiene acceso directo a JNDI (Java Naming and Directory Interface) , JDBC ( Java Database Connectivity). Clientes enriquecidos Java Web Start. Clientes autónomos basados en APIs Java Foundation Classes JFC/Swing, enriquecidos gráficamente, utilizan XML sobre HTTPS, para comunicarse con el servidor EJB. Componentes Web. Soportados por contenedores Web. Un componente Web proporciona respuesta a requerimientos, usualmente generan la interfaz de usuario en una aplicación Web. Servlet. Es código Java. Extiende la funcionalidad de un servidor Web. Necesita de un contenedor (run-time) para ejecutarse. El servidor Web mapea la ejecución de un Servlet a una URL a través del protocolo HTTP. Cuando un Servlet recibe un requerimiento, devuelve una respuesta en formato XML o HTML. Se pueden comunicar con otros Servlets, refuerzan la seguridad de la capa Web. Componentes Web. JSP. Java Server Page. Se usa para generar contenido dinámico en un cliente Web. Es un documento de texto que describe como procesar un requerimiento para crear una respuesta. Una página JSP usualmente contiene: • Una plantilla para formatear el documento Web (XML o HTML). Este contenido es estático. • Elementos JSP y scripts para generar contenido dinámico. La mayoría de páginas JSP usan componentes JavaBeans o Enterprise JavaBeans para ejecutar procesamiento complejo. Su funcionalidad se puede extender por medio de acciones configurables, o etiquetas que se encapsulan en librerías de etiquetas. Componentes EJB. Tecnología del lado del servidor. Ejecutados dentro de contenedores EJB que proveen servicios de transacción y persistencia. Contienen la lógica de negocio de una aplicación empresarial. Son escalables, transaccionales y manejan seguridad multi-usuario. Existen tres tipos de EJBs: EJBs de Entidad (Entity EJBs): Su objetivo es encapsular como un objeto en el lado del servidor una representación de datos. Están enfocados al uso de datos, son objetos que representan datos almacenados en alguna fuente. Componentes EJB. Los EJBs 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 de una tabla de la base de datos. • 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, la responsabilidad de implementar los mecanismos de persistencia es del programador. En JEE 5, los Entity Beans son reemplazados por JPA (Java Persistence Api). Componentes EJB. EJBs de Sesión (Session 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 (procesar en el servidor en representación del cliente). Puede haber dos tipos: • Con estado (statefull). Objetos distribuidos que poseen un estado. El estado no es persistente, pero el acceso al Bean se limita a un solo cliente. • Sin estado (stateless). Objetos distribuidos que carecen de estado asociado, esto es: se les puede acceder concurrentemente. Los contenidos de las variables de instancia entre llamadas al método no se garantizan. Componentes EJB. EJBs dirigidos por mensajes (Message-driven EJBs): son los únicos Beans con funcionamiento asíncrono. Usando el Java Messaging System (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 ser creados por parte del cliente. Los EJBs requieren para su ejecución del ambiente proporcionado por el contenedor, el cuál les da acceso a todas las APIs y servicios disponibles en la plataforma J2EE. APIs Disponibles por contenedor. API Applet Application Client Web EJB JDBC 2.0 Extension N Y Y Y JTA 1.0 N N Y Y JNDI 1.2 N Y Y Y Servlet 2.3 N N Y N JSP 1.2 N N Y N EJB 2.0 N Y API Cliente Y API Cliente Y RMI-IIOP 1.0 N Y Y Y JMS 1.0 N Y Y Y JavaMail 1.2 N N Y Y JAF 1.0 N N Y Y JAXP 1.1 N Y Y Y JAAS 1.0 N Y Y Y Connector 1.0 N N Y Y Roles en la plataforma J2EE. La plataforma define diferentes roles durante el proceso de desarrollo y de instalación. Proveedor de producto J2EE. Proveedor de componentes de aplicación. Ensamblador de aplicación. Instalador / Implementador / Liberador. Administrador de sistema. Proveedor de herramientas o utilerías. Hay roles comunes a todos los sistemas, otros más específicos a J2EE. Ayudan a identificar quién debe de hacer qué durante la construcción de una aplicación. Roles en la plataforma J2EE. Proveedor de producto J2EE. Proveedor de Sistema Operativo, manejador de Base de datos, Servidor de aplicaciones Web Proveedor de componentes de aplicación. Programadores Java expertos. Ensamblador de aplicación. Especialista por industria. Se encarga de ensamblar aplicaciones a partir de componentes por medio de descriptores. Identifica dependencias externas. Instalador / Implementador. Experto en un determinado ambiente operacional. Instala componentes de la aplicación en un servidor J2EE Roles en la plataforma J2EE. Administrador de sistema. Responsable de administrar infraestructura de computo y de red de una empresa. Debe vigilar el buen estado de las aplicaciones J2EE. Proveedor de herramientas o utilerías. Proporciona herramientas para desarrollo o empacado de los componentes de una aplicación. Proporciona también herramientas administrativas y de monitoreo de aplicaciones. Servicios de la plataforma J2EE. Simplifican la programación de un aplicativo y permiten que las aplicaciones y componentes sean configurados durante la instalación, para utilizar recursos del ambiente donde se instalan. Servicio de nombres. Proporciona acceso a los componentes J2EE al ambiente de nombres JNDI. La API permite asociar un nombre a objetos o recursos, y con este se pueden acceder, modificar sus atributos o referenciar sin necesidad de preocuparse por su ubicación física real. Servicios de desplegado / liberación. Permiten que los aplicativos y componentes puedan ser configurados al momento de ser empacados, instalados, liberados o publicados. Basados en XML. Servicios de la plataforma J2EE. Unidades de desplegado / liberación. Una aplicación consiste en uno o más módulos J2EE y un descriptor de liberación que contiene la lista de módulos e información acerca de cómo configurar la aplicación. Aplicación J2EE: Uno o más Archivos JAR (módulos norar), junto con cero o más archivos de recursos RAR empacados en un archivo EAR Enterprise Archive extensión ear. Un módulo J2EE: Uno o más componentes J2EE del mismo tipo de contenedor y un archivo descriptor de liberación de componentes de este tipo. Servicios de la plataforma J2EE. Módulos EJB. (Archivos class de Componentes EJB, y un descriptor EJB de liberación empacados en un archivo JAR con extensión jar) Módulos Web. (Archivos JSP, class de Servlets, GIF, HTML y un descriptor Web de liberación empacados en un archivo JAR con extensión war) Módulos adaptadores de recursos. (interfaces Java, clases, librerías nativas, conectores para aplicativos EIS y otra documentación junto con un descriptor de liberación de adaptador de recursos empacados en un archivo JAR con extensión rar) Módulos de aplicaciones cliente. (Archivos class y un descriptor de liberación del cliente, Empacados en archivo JAR con extensión jar) Servicios de transacción. Una transacción divide una aplicación en unidades indivisibles de trabajo. Un sistema que soporta transacciones se asegura que cada una de ellas se ejecute completamente sin interferencia de otros procesos. Si la transacción se completa entonces esta es aceptada (commit), en caso contrario se deshace (roll back) cualquier tarea parcial ejecutada hasta el momento de la interrupción. La API que maneja transacciones para componentes EJB en J2EE es JTA, por medio de interfaces de definición y administración de las mismas. Servicios de transacción. En componentes Web se utiliza la interfase javax.transaction.UserTransaction para manejar de manera limitada transacciones. En particular para las características de propagación de la transacción al cliente y aislamiento de estados. Las transacciones EJB pueden ser administradas por el Bean o bien administradas por el contenedor. Servicios de Seguridad. El control de acceso involucra 2 pasos: Autenticación. Un cliente se autentica proporcionando datos como usuario y palabra de paso. Una entidad que puede ser autenticada es llamada principal. Una principal puede ser un usuario o un programa. Autorización. Una vez autenticada una principal el sistema determina si la misma puede o no acceder determinados recursos. Servicios de Seguridad. Principales servicios de seguridad de J2EE: Metodologías de seguridad. De manera externa al aplicativo o dentro de los programas. Autenticación. En diferentes formas: Básica, Digest (con password encriptado), basada en formas, certificado de autenticación. Autorización. Basada en roles de seguridad. La API que proporciona servicios de autenticación y seguridad es: Java Authentication and Authorization Services (JAAS). Servicios de Tecnología. Permiten acceder servicios de una manera uniforme. Algunos ejemplos de APIs son: JDBC. Proporciona conectividad entre J2EE y bases de datos independientes. Java Transaction API (JTA). Permite acceder transacciones de manera independiente a su implementación. Java Naming and Directory Interface(JNDI). Servicio de nombre y de directorio. Servicios de Tecnología. Arquitectura J2EE connector. Conexión a servicios EIS como CICS Customer Information Control System (mainframe IBM con sistema operativo Z Series o OS/ESA), SAP, Aplicativos heredados o bases de datos no relacionales (como IMS Information Management System de International Business Machines). Java API for XML Processing (JAXP). Soporta el manejo de documentos XML usando el Document Object Model. Tecnologías de comunicación J2EE. Estas tecnologías proporcionan mecanismos de comunicación entre clientes, servidores y objetos colaboradores, alojados en servidores de distintas plataformas. J2EE requiere soporte para los siguientes protocolos: • Protocolos de Internet • Protocolos de invocación remota RMI. • Protocolos de administración de objetos OMG (Organismo Internacional). • Tecnologías de mensajería. • Formatos de datos. Protocolos de Internet. TCP/IP. Proporcionan entrega confiable de paquetes de datos de una computadora a otra. IP se encarga de la transmisión errática de paquetes y TCP agrega elementos de ensamblado y de control de errores. HTTP 1.0 Utilizado para obtener objetos hipertexto en servidores remotos, los mensajes HTTP consisten en peticiones y respuesta a las mismas. SSL 3.0 Conexión de capa segura. Proporciona privacidad (contra espías o intervención) al comunicar datos por la Internet. Protocolos RMI. Método de invocación remota, conjunto de APIs que permiten a los desarrolladores construir aplicaciones distribuidas en lenguaje Java. Por medio de interfaces en Java se definen objetos remotos. Se usa tecnología de serialización de objetos y el protocolo de método remoto de Java (JRMP), para convertir invocaciones locales a métodos en invocaciones remotas. La plataforma J2EE soporta el JRMP, que es el mecanismo de comunicación entre objetos en Java en diferentes ambientes o servidores. Protocolos de administración de objetos OMG. OMG.- Organismo internacional autor de la especificación CORBA. Los protocolos OMG permiten que objetos alojados en la plataforma J2EE puedan acceder objetos en servidores remotos (o al revés) utilizando Common Object Request Broker Architecture CORBA. Los objetos CORBA se definen usando Interface Definition Language (IDL). El proveedor del objeto remoto define la interfaz del mismo en IDL, lo compila en IDL para generar una pseudo especificación del cliente y el servidor. La misma conecta las implementaciones del objeto a un agente de requisición de objetos ORB (Object Request Broker), librería que habilita a objetos CORBA a localizarse y comunicarse entre ellos. Los ORBs se comunican entre ellos usando el protocolo Internet Inter-ORB (IIOP). J2EE necesita de tecnologías CORBA: Java IDL (clientes Java invocando objetos CORBA) y RMI-IIOP (Interfaces remotas en Java por parte de proveedores). Tecnologías de mensajería. Proporcionan soporte para envío y recepción asíncronos de mensajes, las APIs que dan soporte al envío de mensajes son: • Java Message Service JMS. • Java Mail API. JMS proporciona interfaz de acceso a aplicaciones de mensajería empresariales como MQ Series de IBM o TIBCO Rendezvous. Los mensajes JMS contienen información definida para acciones específicas de negocio. La API soporta mensajería en estilos punto-a-punto o de publicación-subscripción. Punto-a-punto se basa en el manejo de colas, o bandejas de entrada. JMS - JavaMail. En JMS modalidad publicar-suscribir los clientes publican mensajes para suscribirse a nodos de contenido jerárquico, llamados tópicos (asunto). Un tópico puede ser pensado como un agente que administra mensajes que son direccionados a él: los colecta y los distribuye a los suscriptores, la comunicación es de muchos a muchos, algún cliente publica un mensaje que es recibido por uno o varios servidores/clientes suscritos al tópico/tema. JavaMail es una API que proporciona un conjunto de clases abstractas que forman un sistema electrónico de correo. Las mismas soportan almacenamiento de correo, formato y transporte. Se incluye la implementación de varios protocolos de correo-e, dando soporte a diversos sistemas de mensajes como IMAP4, POP2 y SMTP. JavaMail. JavaBeans Activation Framework (JAF). Esta API integra soporte en la plataforma J2EE para MIME: Multipurpose Internet Mail Extensions que son convenciones para intercambiar diferentes tipos de archivos (texto, audio, video) a través de la Internet. Los componentes Java pueden ser especificados para operar con datos MIME, es decir leerlos o editarlos. La API JAF es utilizada por la API JavaMail para manejar los datos incluidos en los correos. JavaMail. Formatos de datos: J2EE requiere soporte para los • • • • • siguientes tipos de datos: HTML 3.2. Documentos de hipertexto. Archivos de imagen. GIF Graphic Interchange Format y JPEG Joint Photographic Experts Group. Archivos JAR. Archivos con formato de archivero (archive) que es independiente a la plataforma y se compone de muchos archivos agregados (concepto similar al resultado de archivos comprimidos/empacados en formato zip). Archivo class. Código Java pseudo-compilado (bytecode). XML. Lenguaje de texto etiquetado, donde los datos se identifican/describen con marcas o etiquetas. Resumen J2EE. J2EE Es un conjunto de componentes en diversas tecnologías: Enterprise JavaBeans, JavaServer Pages, y Java Servlets que simplifican el proceso para desarrollar aplicaciones empresariales. J2EE proporciona servicios al nivel de sistema, que simplifican la programación y permiten que los componentes creados sean configurados para usar los recursos disponibles en el ambiente sobre el cual se van a liberar (deploy). Junto con los componentes J2EE, la plataforma proporciona APIs (Application Program Interface / Interfaz de Programa Aplicativo) que permiten a los componentes acceder a servicios remotos y mecanismos de comunicación entre clientes-servidores-objetos colaboradores alojados en otros servidores. J2EE. • El contenedor de EJBs para Tomcat es OpenEJB, una vez integrado el plugin a Tomcat y este a NetBeans, se puede crear un proyecto J2EE. • Dependiendo de la naturaleza del proyecto, Otras APIs mencionadas deberían ser agregadas. • Otro servidor que soporta EJB Beans es JBoss. Descriptor ejb-jar.xml • META-INF/ejb-jar.xml (Documento XML de Liberación/Despliegue) <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd"> <ejb-jar > <description><![CDATA[No Description.]]></description> <display-name>Generated by XDoclet</display-name> <enterprise-Beans> <session>…</session> <entity> <description>Extremely Simple Entity Bean, models a person</description> <ejb-name>HelloEntity</ejb-name> <home>HelloEntityHome</home> <remote>HelloEntity</remote> <ejb-class>HelloEntityEJB</ejb-class> <persistence-type>Container</persistence-type> <prim-key-class>java.lang.String</prim-key-class> <primkey-field>name</primkey-field> <reentrant>False</reentrant> <cmp-field><field-name>name</field-name></cmp-field> <cmp-field><field-name>email</field-name></cmp-field> </entity> <message-driven>…</message-driven> </enterprise-Beans> …. </ejb-jar> En él se dan de alta y declaran EJBs, Parámetros de contexto, Relaciones, Políticas transaccionales, etc. Gracias.