Contexto
Servicio de búsqueda y la creación implica interfaces complejas y operaciones de red.Problema
Clientes J2EE interactúan con componentes de servicio, tales como Enterprise JavaBeans (EJB) y Java Message Service (JMS) componentes, que proporcionan servicios a las empresas y las capacidades de persistencia. Para interactuar con estos componentes, los clientes deben ya sea localizar el componente de servicio (referido como una operación de búsqueda) o crear un nuevo componente. Por ejemplo, un cliente EJB debe localizar un objeto home del bean enterprise, que el cliente utiliza entonces o para encontrar un objeto o para crear o eliminar uno o más beans enterprise. Del mismo modo, un cliente JMS debe primero localizar la fábrica de conexiones de JMS para obtener una conexión JMS o una sesión de JMS.Todas Plataforma Java 2, Enterprise Edition (J2EE clientes de aplicaciones) utilizan el sistema común JNDI para buscar y crear componentes EJB y JMS. La API JNDI permite a los clientes obtener un objeto de contexto inicial que contiene el nombre del componente a los enlaces de objetos. El cliente comienza por obtener el contexto inicial para objeto home de un bean. El contexto inicial sigue siendo válida mientras que la sesión del cliente es válida. El cliente proporciona el nombre registrado JNDI del objeto requerido para obtener una referencia a un objeto administrado. En el contexto de una aplicación EJB, un objeto administrado típico es objeto home de un bean enterprise. Para aplicaciones JMS, el objeto administrado puede ser una fábrica de conexiones de JMS (para un tema o una cola) o de un destino JMS (un tema o una cola).
Por lo tanto, la localización de un objeto de servicio JNDI administrada es común a todos los clientes que necesitan tener acceso a ese objeto de servicio. Siendo ese el caso, es fácil ver que muchos tipos de clientes utilizan repetidamente el servicio JNDI y el código JNDI aparece varias veces a través de estos clientes. Esto se traduce en una duplicación innecesaria de código en los clientes que tienen que buscar servicios.
Fortalezas:
·
Clientes EJB necesitan utilizar
el API JNDI para buscar objetos EJBHome utilizando el nombre JNDI registrado
del bean enterprise.
·
Clientes JMS necesitan
utilizar API JNDI para buscar componentes JMS utilizando los nombres JNDI
registrados para componentes JMS, como fábricas de conexiones, colas y temas.
·
La fábrica de contexto a
utilizar para la creación inicial contexto JNDI es proporcionado por el
proveedor de proveedor de servicios y por lo tanto es dependiente del
proveedor. La factoría de contexto también
depende del tipo de objeto que se alzó. El
contexto para JMS es diferente del contexto para EJB, con diferentes
proveedores.
·
Búsqueda y creación de
componentes de servicio pueden ser complejas y pueden utilizarse repetidamente
en varios clientes en la aplicación.
·
Creación del contexto
inicial y las búsquedas de objeto de servicio, si es necesario con frecuencia,
pueden consumir muchos recursos y pueden afectar al rendimiento de la
aplicación. Esto es especialmente cierto si los
clientes y los servicios que se encuentran en diferentes niveles.
·
Clientes EJB puede ser
necesario restablecer la conexión a una instancia de bean enterprise accedido
previamente, que sólo su objeto Handle.
Solución
Utilice un objeto Service Locator para abstraer todo el uso de JNDI y para ocultar la complejidad de la creación inicial contexto, EJB home búsqueda objeto y EJB objeto re-creación. Varios clientes pueden reutilizar el objeto Service Locator para reducir la complejidad del código, proporcionar un único punto de control, y mejorar el rendimiento al proporcionar una instalación de almacenamiento en caché.Este modelo reduce la complejidad del cliente que resulta de la dependencia del cliente y en la necesidad de realizar operaciones de búsqueda y creación de procesos, que son recursos. Para eliminar estos problemas, este modelo proporciona un mecanismo para abstraer todas las dependencias y los detalles de la red en el Servicio de localización.
Estructura
La
figura 8.31 muestra el diagrama de clases que representa las relaciones para el
patrón Service Locator
Participantes y Responsabilidades
Figura 8.32 contiene el diagrama de secuencia que muestra la interacción entre los diferentes participantes del patrón de Servicio de Localización.
Figura 8.32 Diagrama de secuencia Servicio Localizador
Cliente
Este es el cliente del Servicio de localización.
El cliente es un objeto que normalmente requiere el
acceso a los objetos de negocio como un Business Delegate
Servicio de localización
El Service Locator abstrae los servicios de búsqueda
de nombres (API), las dependencias de proveedores, las complejidades de
búsqueda y creación de objetos de negocio y proporciona una interfaz sencilla para
los clientes. Esto reduce la complejidad del
cliente. Además, el mismo cliente o de otros
clientes pueden reutilizar el Servicio de localización.
InitialContext
El objeto InitialContext es el punto de partida en
el proceso de búsqueda y creación. Los
proveedores de servicios ofrecen el objeto de contexto, que varía dependiendo
del tipo de objeto de negocio proporcionada por búsqueda el localizador de
servicio y el servicio de la creación. Un
Servicio de localización que ofrece servicios para varios tipos de objetos de
negocio (como beans enterprise y componentes JMS, etc) utiliza múltiples tipos
de objetos de contexto, cada uno obtenido de un proveedor diferente (por
ejemplo, el proveedor de contexto para un servidor de aplicaciones EJB puede
ser diferente del proveedor de contexto para el servicio JMS).
ServiceFactory
El objeto ServiceFactory representa un objeto que
proporciona gestión del ciclo de vida de los objetos BusinessService. El objeto ServiceFactory para beans enterprise es un objeto
EJBHome. El ServiceFactory para componentes JMS
puede ser un objeto JMS ConnectionFactory, como un TopicConnectionFactory (para
publicar / suscribir modelo de mensajería) o una QueueConnectionFactory (de
punto a punto de modelo de mensajería).
BusinessService
El BusinessService es un rol que cumple el servicio
al cliente está tratando de acceder. El objeto
BusinessService se crea o se miró hacia arriba o removido por el
ServiceFactory. El objeto BusinessService en el
contexto de una aplicación EJB es un bean enterprise. El objeto BusinessService en el contexto de una aplicación
JMS puede ser un TopicConnection o un QueueConnection. El TopicConnection y QueueConnection a continuación, se
pueden utilizar para producir un objeto JMSSession, tales como TopicSession o
un QueueSession respectivamente. Consecuencias
·
Resúmenes Complejidad
El patrón de Servicio Localizador encapsula la complejidad de este proceso de búsqueda y la creación (descrito en el problema) y lo mantiene oculto desde el cliente. El cliente no tiene que hacer frente a la búsqueda de objetos de fábrica de componentes (EJBHome, QueueConnectionFactory y TopicConnectionFactory, entre otros) debido a que el ServiceLocator se delega esa responsabilidad.
El patrón de Servicio Localizador encapsula la complejidad de este proceso de búsqueda y la creación (descrito en el problema) y lo mantiene oculto desde el cliente. El cliente no tiene que hacer frente a la búsqueda de objetos de fábrica de componentes (EJBHome, QueueConnectionFactory y TopicConnectionFactory, entre otros) debido a que el ServiceLocator se delega esa responsabilidad.
·
Proporciona servicio de acceso uniforme
a los clientes
El patrón Service Locator abstrae todas las complejidades, como se ha explicado anteriormente. De este modo, se proporciona una interfaz muy útil y precisa que todos los clientes pueden utilizar. La interfaz patrón asegura que todos los tipos de clientes en la aplicación acceder de manera uniforme los objetos de negocio, en términos de la búsqueda y la creación. Esta uniformidad reduce el desarrollo y actividades generales de mantenimiento.
El patrón Service Locator abstrae todas las complejidades, como se ha explicado anteriormente. De este modo, se proporciona una interfaz muy útil y precisa que todos los clientes pueden utilizar. La interfaz patrón asegura que todos los tipos de clientes en la aplicación acceder de manera uniforme los objetos de negocio, en términos de la búsqueda y la creación. Esta uniformidad reduce el desarrollo y actividades generales de mantenimiento.
·
Facilita la adición de nuevos
componentes de Negocios
Dado que los clientes de enterprise beans no son conscientes de los objetos EJBHome, es posible añadir nuevos objetos EJBHome para beans enterprise desarrollados y desplegados en un momento posterior sin afectar a los clientes. Clientes JMS no son directamente conscientes de las fábricas de conexiones de JMS, lo que las nuevas fábricas de conexiones se pueden añadir sin afectar a los clientes.
Dado que los clientes de enterprise beans no son conscientes de los objetos EJBHome, es posible añadir nuevos objetos EJBHome para beans enterprise desarrollados y desplegados en un momento posterior sin afectar a los clientes. Clientes JMS no son directamente conscientes de las fábricas de conexiones de JMS, lo que las nuevas fábricas de conexiones se pueden añadir sin afectar a los clientes.
·
Mejora el rendimiento de la red
Los clientes no están involucrados en la búsqueda JNDI y la creación de objetos de fábrica / home. Debido a que el Servicio de localización lleva a cabo este trabajo, se puede agregar la red de llamadas necesario para buscar y crear objetos de negocio.
Los clientes no están involucrados en la búsqueda JNDI y la creación de objetos de fábrica / home. Debido a que el Servicio de localización lleva a cabo este trabajo, se puede agregar la red de llamadas necesario para buscar y crear objetos de negocio.
·
Mejora el rendimiento del cliente de
caché
El Servicio de localización puede almacenar en caché los objetos de contexto inicial y las referencias a los objetos de fábrica (EJBHome, fábricas de conexiones JMS) para eliminar la actividad JNDI innecesaria que se produce al obtener el contexto inicial y el resto de objetos. Esto mejora el rendimiento de las aplicaciones.
El Servicio de localización puede almacenar en caché los objetos de contexto inicial y las referencias a los objetos de fábrica (EJBHome, fábricas de conexiones JMS) para eliminar la actividad JNDI innecesaria que se produce al obtener el contexto inicial y el resto de objetos. Esto mejora el rendimiento de las aplicaciones.
(© 2001-2002 Sun Microsystems, Inc. Todos los derechos
reservados.)
No hay comentarios:
Publicar un comentario