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.