Documentos de Académico
Documentos de Profesional
Documentos de Cultura
APLICACIONES
DISTRIBUIDAS
INTRODUCCION
Aplicaciones distribuidas
• Las aplicaciones y frameworks que hemos venido estudiando y utilizando hasta ahora se basan en el denominado modelo de N-capas que
separa claramente la presentación, la lógica de negocio y el acceso a los datos. Este diseño facilita sobremanera el mantenimiento de la
aplicación, ya que la separación en capas nos permite modificar una de las partes de la aplicación sin que el resto se vea afectado por el
cambio (o, al menos, viéndose afectado de forma muy localizada).
• Toda la aplicación, exceptuando el servidor de base de datos, está implementada por clases Java que se ejecutan en el contenedor web,
ejecutado a su vez por una única JVM (Máquina Virtual Java). Esta JVM da por tanto soporte a todos los servicios que ofrece el servidor web
(gestión de la seguridad en el acceso a los servlets, definición de recursos JNDI, etc.).
• Necesidades de las aplicaciones empresariales distribuidas:
• Acceso remoto a la capa de negocio.- el acceso a los BO se realiza de forma remota. Java EE proporciona dos tecnologías para
posibilitar el acceso remoto a los Java Business Objects a través de los Enterprise JavaBeans (EJB), y los Web Services (WS).
• Seguridad en el acceso a la capa de negocio.- si diseñamos aplicaciones con requisitos de seguridad estrictos (como banca, telefonía,
etc.) es necesario ser muy cuidadoso en el acceso a las operaciones de negocio. La arquitectura EJB permite dar una solución a estos
requisitos, definiendo restricciones de acceso en los enterprise beans.
• Transacciones distribuidas.- La arquitectura EJB soporta este tipo de transacciones distribuidas mediante la utilización de JTA (Java
Transaction API) y haciendo que los enterprise beans sean también recursos transaccionales. El API de transacciones de Java incluye
soporte para transacciones distribuidas utilizando el algoritmo two phase commit, un algoritmo estándar para la gestión de
transacciones distribuidas utilizado desde hace muchos años por los sistemas de gestión de transacciones.
• La tecnología Enterprise JavaBean (EJB) proporciona la posibilidad de usar componentes soAware transaccionales y seguros que residen en el servidor de
aplicaciones. Los componentes soAware (componentes EJB o enterprise beans) pueden ser usados desde cualquier programa Java de forma distribuida.
• El servidor de aplicaciones proporciona los servicios necesarios para el funcionamiento de los enterprise beans. Entre estos servicios destacan los relacionados con
el acceso remoto, la generación automáHca de transacciones, la seguridad en el acceso al componente y la escalabilidad del componente mediante la definición de
clusters de servidores que gesHonan un conjunto único de enterprise beans.
• La arquitectura Enterprise JavaBeans permite el desarrollo de aplicaciones distribuidas en las que se realizan peHciones de métodos de negocio (servicios) a
objetos remotos que residen en servidores específicos. El contenedor EJB manHene estos objetos remotos, dándoles soporte, manteniendo su ciclo de vida y
filtrando y procesando las peHciones de los clientes.
• Ventajas:
• Manejo de transacciones: apertura y cierre de transacciones asociadas a las llamadas a los métodos del bean.
• Seguridad: comprobación de permisos de acceso a los métodos del bean.
• Concurrencia: llamada simultánea a un mismo bean desde múlHples clientes.
• Servicios de red: comunicación entre el cliente y el bean en máquinas disHntas.
• Ges6ón de recursos: gesHón automáHca de múlHples recursos, como colas de mensajes, bases de datos o fuentes de datos en aplicaciones heredadas que
no han sido traducidas a nuevos lenguajes/entornos y siguen usándose en la empresa.
• Persistencia: sincronización entre los datos del bean y tablas de una base de datos.
• Ges6ón de mensajes: manejo de Java Message Service (JMS).
• Escalabilidad: posibilidad de consHtuir clusters de servidores de aplicaciones con múlHples hosts para poder dar respuesta a aumentos repenHnos de carga
de la aplicación con sólo añadir hosts adicionales.
• Adaptación en 6empo de despliegue: posibilidad de modificación de todas estas caracterísHcas en el momento del despliegue del bean.
• SessionBeans
• Servicios que se ejecutan de forma síncrona, el cliente se bloquea hasta que terminan su ejecución
• Encapsula la lógica de negocio de la aplicación
• El cliente invoca los métodos, pero el contenedor puede interceptar la llamada para ofrecer seguridad, gesWón de transacciones,
concurrencia y llamadas remotas
• Message-DrivenBeans
• Servicios que se ejecutan de forma asíncrona
• El cliente no se bloquea al iniciar la ejecución
• Lo habitual es uWlizar JMS (Java Message Service)
• Propiedades
• Atomicidad. O todas o ninguna
• Consistencia. Datos coherentes al finalizar
• Aislamiento. Los cambios sólo son visibles para quien esta realizando la transacción, el resto sólo los ve al hacer commit
• Durabilidad. Una vez completados son duraderos
• Tipos
• Resource-local transacWons. Transacciones gesWonadas por el recurso
• Container transacWons. Transacciones gesWonadas por el contenedor, se involucran varios recursos. Se implementan con Java
TransacWon API (JTA)
• Por defecto, los métodos de los beans son transaccionales
• Al finalizar el método, se realiza commit; si se produce una excepción se hace rollback