sábado, 6 de julio de 2013

SERVICE LOCATOR



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
 
Figura 8.31 Diagrama de clase de servicio Localizador

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.
 
·         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.
 
·         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.
 
·         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.
 
·         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.




(© 2001-2002 Sun Microsystems, Inc. Todos los derechos reservados.)




 
 



No hay comentarios:

Publicar un comentario