|
El API JAXR |
Arquitectura
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.
















































