Los componentes del software de interacción de las aplicaciones de empresa distribuidas requieren un conjunto subyacente de servicios de infraestructura que permitan a los componentes distribuidos comunicarse entre sí, coordinar su trabajo, implementar un acceso seguro, etc. Esta sección explica la función principal desarrollada por una serie de componentes de Java ES al proporcionar estos servicios de infraestructura.
Al diseñar un sistema de software distribuido, con independencia de que conste principalmente de los componentes desarrollados de forma personalizada o de que incluya todos los componentes "de fábrica" de Java ES, debe incluir una serie de servicios de infraestructura. Estos servicios operan en varios niveles.
La dimensión de las dependencias de los servicios de infraestructura se muestra en la Figura 2–2. Los niveles que se muestran en esta figura son una vista ampliada de la capa de los servicios de infraestructura de la Figura 1–1.
La jerarquía de los servicios de la Figura 2–2 y las dependencias existentes entre ellos constituyen una importante dimensión de la arquitectura lógica de la solución. Estos servicios de infraestructura proporcionan las bases conceptuales para comprender la función de los componentes de los servicios del sistema de Java ES (consulte Componentes de los servicios del sistema).
En general, los servicios que se muestran en la Figura 2–2 se pueden clasificar en tres amplios grupos: servicios de plataforma de nivel inferior, servicios de aplicación de nivel superior y un grupo de servicios de nivel intermedio. Los respectivos nombres proceden de su ubicación entre los otros dos grupos.
Los siguientes párrafos describen los distintos niveles de servicio de infraestructura y hacen referencia a artefactos de lenguaje de programación Java, cuando corresponde. Los niveles de servicio se describen desde el nivel inferior al superior, tal y como se muestra en la Figura 2–2:
Plataforma de sistema operativo. Proporciona la compatibilidad básica para cualquier proceso que se ejecute en un equipo. El sistema operativo (como SolarisTM, Linux o Microsoft Windows) administra dispositivos físicos, así como la memoria, los subprocesos y otros recursos necesarios para la compatibilidad con Java Virtual Machine (máquina JVMTM).
Transporte de red. Proporciona la compatibilidad de red necesaria para las comunicaciones entre los componentes de aplicación distribuidos que se ejecutan en distintos equipos. Estos servicios son compatibles con protocolos como TCP y HTTP. Otros protocolos de comunicación de nivel superior (consulte el nivel de mensajería) dependen de estos servicios de transporte básicos.
Persistencia. Proporciona la compatibilidad necesaria para almacenar datos estáticos (información sobre el usuario, el directorio o la configuración) y datos de aplicación dinámica (información que se actualiza con frecuencia). También permite acceder a estos dos tipos de datos.
Mensajería. Compatible con la comunicación síncrona y asíncrona entre componentes de aplicaciones. La mensajería síncrona es el envío y la recepción en tiempo real de mensajes; incluye invocación de método remoto (RMI) entre componentes de J2EE e interacciones de SOAP con servicios web. La mensajería asíncrona es la comunicación por la cual el envío de un mensaje no depende de la disponibilidad del consumidor para recibirlo inmediatamente. Las especificaciones de mensajería asíncrona, por ejemplo, Java Message Service (JMS) y ebXML, admiten la fiabilidad garantizada y otras semánticas de mensajería.
Tiempo de ejecución. Ofrece la asistencia necesaria para cualquier modelo de componente distribuido, como los modelos J2EE o CORBA. Además de la invocación de métodos remotos necesaria para componentes distribuidos y bien acoplados, los servicios de tiempo de ejecución incluyen administración de estado de componentes (ciclo de vida), administración de grupos de subprocesos, sincronización (bloqueo mutuo), servicios de persistencia, supervisión de transacciones distribuidas y gestión de excepciones distribuidas. En un entorno de J2EE, estos servicios de tiempo de ejecución los ofrecen los contenedores de EJBTM, Web y beans controlados por mensajes en un servidor de aplicación o en un servidor web.
Seguridad y directiva. Proporciona asistencia para acceder de forma segura a los recursos de la aplicación. Estos servicios incluyen compatibilidad para las directivas que rigen el acceso basado en funciones o en grupos a los recursos distribuidos, así como las funciones de inicio de sesión único. El inicio de sesión único permite que la autenticación de un usuario en un servicio en un sistema distribuido se aplique automáticamente a otros servicios (componentes de J2EE, servicios de negocios y servicios web) del sistema.
Colaboración de usuarios. Incluye servicios que desempeñan un papel importante al permitir la comunicación directa entre usuarios y la colaboración entre usuarios en entornos de Internet y de empresas. Como tales, son servicios de negocios de aplicaciones proporcionados normalmente por servidores independientes (como un servidor de correo electrónico o servidor de calendario).
Integración. Proporciona los servicios que agregan servicios de negocio existentes. Ofrece una interfaz común para acceder a los servicios, como en un portal, o integrando los servicios mediante un motor de procesos que los coordina con el flujo de trabajo de producción. La integración también puede producirse como interacciones de negocio a negocio entre varias empresas.
Los niveles de servicio que se muestran en la Figura 2–2 reflejan una dependencia general entre los distintos servicios de infraestructura, desde los servicios del sistema operativo de nivel inferior hasta los servicios de aplicación de nivel superior y los servicios de integración. Cada servicio depende normalmente de servicios de niveles inferiores y respalda el funcionamiento de servicios superiores.
La Figura 2–2, sin embargo, no representa una distribución en capas estricta de los servicios de infraestructura. Los servicios de nivel superior pueden interactuar directamente con servicios de nivel inferior sin depender de niveles intermedios. Por ejemplo, algunos servicios de tiempo de ejecución pueden depender directamente de servicios de plataforma sin necesitar ninguno de los niveles de servicio intermedios. Además, otros niveles de servicio, como los de supervisión o administración, también podrían incluirse en esta ilustración conceptual.
Los componentes de Java ES despliegan los niveles de los servicios de infraestructura distribuidos que se muestran en la Figura 2–2. La posición de los componentes de los servicios del sistema de Java ES en los diferentes niveles es la que se muestra en la Figura 2–3.
Las plataformas de los sistemas operativos que se muestran en la Figura 2–3 no son una parte formal de Java Enterprise System; sin embargo, se incluyen para mostrar las plataformas de los sistemas operativos en las que se admite el uso de los componentes de Java ES.
En general, los componentes de los servicios del sistema de Java ES que se muestran en la Figura 2–3 dependen de los componentes situados debajo de ellos en la infraestructura, a la vez que proporcionan respaldo a los componentes que están situados encima de ellos. Estas relaciones de dependencia y compatibilidad son un factor clave para diseñar las arquitecturas lógicas.
En la Tabla 2–1 se muestran las relaciones específicas entre los componentes de los servicios del sistema de Java ES, enumerados desde el nivel superior al inferior, tal y como se muestra en la Figura 2–3.
Tabla 2–1 Relaciones entre los componentes de los servicios del sistema de Java ES
Componente |
Depende de |
Respalda el funcionamiento de |
---|---|---|
Portal Server |
Application Server o Web Server Access Manager Directory Server Si se configura para usar los canales de: Calendar Server Messaging Server Instant Messaging | |
Messaging Server |
Directory Server Access Manager (para el inicio de sesión único) |
Calendar Server (para las notificaciones de correo electrónico) Portal Server (para el canal de mensajería) |
Instant Messaging |
Directory Server Access Manager (para el inicio de sesión único) |
Portal Server (para el canal de mensajería instantánea) |
Calendar Server |
Directory Server Messaging Server (para el servicio de notificación de correo electrónico) Access Manager (para el inicio de sesión único) |
Portal Server (para el canal de calendario) |
Access Manager |
Application Server o Web Server Directory Server |
Portal Server Si se configura para el inicio de sesión único: Calendar Server Messaging Server Instant Messaging |
Application Server |
Message Queue Directory Server (para los objetos administrados) |
Portal Server Access Manager |
Message Queue |
Directory Server (para los objetos administrados) |
Application Server |
Web Server |
Access Manager (para el control de acceso) |
Portal Server Access Manager |
Directory Server |
Ninguno |
Portal Server Calendar Server Messaging Server Instant Messaging Access Manager |
Service Registry |
Ninguno |
Componentes basados en Application Server |