Este cap�tulo describe la arquitectura de alto nivel de JAXR y presenta algunos de los interfaces principales.
La siguiente figura muestra una vista de alto nivel de la arquitectura JAXR, a la que nos referiremos muy frecuentemente dentro de esta especificaci�n.
Figura 5: Arquitectura JAXR.
Los c�rculos representan los distintos interfaces implementados por el cliente y el proveedor JAXR:
- RC representa el interface RegistryClient implementado por el cliente.
- RS representa el interface RegistryService implementado por el proveedor JAXR.
- C1, C2 hasta Cn representan los interfaces JAXR implementados
por el proveedor JAXR que proporcionan distintas capaciades de Registro. Estos interfaces se presentar�n m�s adelante en esta
especificaci�n.
[Nota] Se espera que el cliente y el proveedor JAXR est�n localizados dentro del mismo proceso de la JVM en la mayor�a de las implementaciones. El �nico punto de distribuci�n sobre la Web est� entre el proveedor JAXR y el proveedor del registro (entre las capas central e inferior).
En las secciones siguientes, se describir� cada componente de la configuraci�n JAXR en un orden de arriba hacia abajo. La mayor�a de las descripciones est�n acompa�adas por una versi�n minimizada de la figura anterior. La figura minimizada destaca el componente que se est� describiendo acentuado con una flecha y sombre�ndolo en color rojo.
�Cliente JAXR
La parte superior de la figura anterior es el cliente JAXR. El cliente JAXR puede ser cualquier aplicaci�n independiente Java, un Applet o un componente J2EE. El cliente JAXR utiliza el API JAXR para acceder a un registro mediante un proveedor JAXR.
�Interface Connection
Figura 6: Interface Connection
Un objeto Connection (se�alado por flecha en la figura anterior) representa una sesi�n del cliente con un proveedor JAXR. Mantiene la informaci�n de estado para una conexi�n espec�fica.
Un cliente debe crear un Connection JAXR sobre un proveedor JAXR apropiado para emplear los servicios de un registro que usa el API JAXR. El cap�tulo Control de Conexi�n describe el papel de las conexiones en m�s detalle.
El cliente usa el interface ConnectionFactory de JAXR para crear una Connection. La Connection JAXR no se muestra expl�citamente en la figura 5. Sin embargo, los interfaces RegistryClient y RegistryService definidos por el API JAXR est�n contenidos dentro de una conexi�n JAXR.
El interface Connection proporciona varios m�todos seleccionadores (por ejemplo, setLocale, setSynchronous, setCredentials) que permiten que el cliente JAXR altere din�micamente su estado, contexto, y preferencias sobre el proveedor JAXR en cualquier momento.
�Interface RegistryClient
Figura 7: Interface RegistryClient
El cliente JAXR debe implementar un interface RegistryClient (se�alado por la flecha en la figura 7) si utiliza comunicaci�n as�ncrona con el proveedor JAXR. El interface RegistryClient esta representado por el c�rculo etiquetado RC en la figura 5.
Un RegistryClient sirve como un proxy para el cliente JAXR desde la perspectiva del proveedor JAXR. Un cliente JAXR puede implementar cualquier n�mero de interfaces RegistryClient. Sin embargo, solamente un interface RegistryClient puede asociarse con una Connection dada a un proveedor JAXR. Si un cliente utiliza el mismo ejemplar de RegistryClient para m�ltiples Connections, debe asegurarse de que la implementaci�n de RegistryClient sea segura ante los threads.
El interface RegistryClient proporciona los m�todos de servicio de retrollamada para entregar respuestas as�ncronas y excepciones desde el proveedor JAXR al cliente JAXR. El proveedor JAXR invoca as�ncronamente a estos m�todos de servicio de retrollamada si el cliente prefiere notificaci�n as�ncrona.
Los m�todos de entrega as�ncrona son:
- El m�todo onException se usa para entregar excepciones as�ncronas.
- El m�todo onResponse se usa para entregar respuestas as�ncronas.
�Interface RegistryService
Figura 8: Interface RegistryService
Interface RegistryService (se�alado por la flecha la figura 8) es el interface principal implementado por un proveedor JAXR. Un cliente del registro puede conseguir este interface desde su conexi�n a un proveedor JAXR.
El proveedor JAXR debe implementar un interface RegistryService
El interface RegistryService proporciona los m�todos que son utilizados por el cliente para descubrir los distintos interfaces espec�ficos de la capacidad implementados por el proveedor JAXR. Tambi�n proporciona un m�todo getCapabilityProfile que permite que el cliente JAXR tenga acceso al perfil de capacidad que describe las capacidades utilizadas por el proveedor JAXR.
�Interfaces Espec�ficos de Capacidad
Figura 9: Interfaces Espec�ficos de la Capacidad
Los interfaces espec�ficos de la capacidad (apuntados por la flecha de la Figura 9) proporcionan capacidades espec�ficas como:
- Control del ciclo de vida, que se discute en el cap�tulo Control del Ciclo de Vida
- Control de consultas, que se explica en el cap�tulo Control de Consultas
Cada interface especifico de la capacidad se mapea en un perfil de capacidad definido por el JAXR. Actualmente estos perfiles de capacidad est�n definidos como perfiles de Nivel 0 y de Nivel 1. Los interfaces espec�ficos de la capacidad normalmente est�n disponibles en dos sabores: un interface de negocios y un interface gen�rico.
�El Proveedor JAXR
Figura 10: Proveedor JAXR
El proveedor JAXR (apuntado por la flecha en la figura 10) es una implementaci�n del API JAXR. Un cliente JAXR accede a un registro mediante un proveedor JAXR.
La figura 5 muestra al proveedor JAXR como la uni�n de un proveedor JAXR gen�rico y un provedor JAXR espec�fico del registro.
�Proveedor JAXR Enchufable
El proveedor enchufable JAXR implementa las caracter�sticas del API JAXR que son independientes de cualquier tipo espec�fico de registro. El proveedor enchufable proporciona una sola abstracci�n para varios proveedores JAXR espec�ficos de registro. Permite al cliente evitar ser expuesto al hecho de que all� hay varios proveedores JAXR espec�ficos de registro realizando el acceso real al registro.
Una importante caracter�stica del proveedor JAXR enchufable es proporcionar una implementaci�n de ConnectionFactory enchufable para poder crear Connections utilizando el proveedor JAXR espec�fico del registro apropiado.
�Proveedor JAXR Espec�fico del Registro
Los proveedores JAXR espec�ficos del registro implementan el API JAXR de una forma espec�fica del registro. Un proveedor espec�fico del registro JAXR se enchufa dentro de un proveedor JAXR enchufable y es utilizado por �ste en un patr�n de delegaci�n. El contrato entre el proveedor enchufable JAXR y un proveedor espec�fico del registro JAXR es el API JAXR usado en un patr�n de delegaci�n en vez de un SPI separado o diferente.
un proveedor espec�fico del registro JAXR acepta peticiones JAXR del cliente y las transforma en peticiones equivalentes basadas en las especificaciones del registro objetivo. Env�a las peticiones espec�ficas del registro al proveedor de registro usando protocolos espec�ficos del registro.
Un proveedor de registro procesa una petici�n del cliente y env�a una respuesta espec�fica del registro de vuelta al proveedor espec�fico del registro JAXR. Entonces el proveedor espec�fico del registro JAXR transforma la respuesta espec�fica del registro en una respuesta equivalente JAXR que se entregua al cliente JAXR.
Desde la perspectiva del proveedor del registro, su cliente es el proveedor JAXR espec�fico del registro.
�Proveedor Puente JAXR
Es probable que la mayor�a de los proveedores JAXR sean desarrollados como puentes a los proveedores de registro existentes. Dichos proveedores JAXR son referenciados como proveedores puente JAXR. Esto es similar al concepto de puente JDBC-ODBC en la implementaci�n de referencia de JDBC. Un proveedor puente no es espec�fico a ning�n ejemplar determinado de registro. En su lugar, un proveedor puente es espec�fico a un tipo de registros (por ejemplo, ebXML) y se puede utilizar para acceder a cualquier ejemplar de registro que cumpla con la especificaci�n que define ese tipo de registros.
Por ejemplo, un proveedor puente de ebXML da acceso a cualquier implementaci�n que cumpla con la especificaci�n ebXML.
�Proveedor de Registro
Los proveedores de registro se mostraron en la capa inferior de la figura 5. Estas son implementaciones de varias especificaciones de registro como ebXML y UDDI.
�Estructura de Paquetes del API JAXR
El API JAXR est� divido en dos paquetes principales:
- El paquete java.xml.registry.infomodel consta de interfaces que definen el modelo de informaci�n de JAXR. Estos interfaces definen los tipos de objetos que residen en un registro y c�mo se relacionan unos con otros. El modelo de informaci�n se discute en la p�gina siguiente.
- El paquete java.xml.registry consta de los interfaces y clases del API que definen el interface de acceso al registro.
Mientras que el modelo de informaci�n describe qu� tipos de objetos residen en el registro, el API define c�mo esos objetos se env�an al registro y se manejan posteriormente. La Figura 11 muestra los interfaces y las clases definidas por el API JAXR seg�n lo definido por el paquete java.xml.registry. Los interfaces del modelo de informaci�n se describen m�s detalladamente en la p�gina siguiente.
Figura 11: Interfaces definidos por el API JAXR.