Control de Conexion
Este capítulo específica cómo un proveedor JAXR maneja conexiones JAXR. Proporciona detalles sobre el interface
ConnectionFactory y el interface Connection.
Crear una Conexión JAXR
Para crear una Connection a un proveedor JAXR, un cliente usa el método
createConnection de esa ConnectionFactory del
proveedor JAXR.
public Connection createConnection(java.util.Properties properties,
RegistryClient client)
throws JAXRException;
Configuración de la Conexión
El cliente puede especificar un objeto Properties al método
createConnection, que contiene las propiedades de configuración para la
Connection. Estas propiedades pueden ser propiedades estándars o propiedades
específicas del proveedor.
- Las propiedades estándars están definidas por el API JAXR.
- Las propiedades específicas del proveedor están definidas por un proveedor JAXR específico. Las propiedades de configuración
de la Connection deben ser cualificadas por un nombre de paquete. Las propiedades estándar de
configuración de la Connection utilizan el paquete javax.xml.registry,
mientras que las propiedades específicas del proveedor utilizan el nombre de nivel superior del paquete del proveedor
(por ejemplo, com.sun.xml.registry.ebxml).
Propiedades de Conexión Estándard
La siguiente tabla describe estar propiedades de conexión que están estandarizadas para esta especificación. Los proveedores
JAXR podrían definir propiedades adicionales específicas para ese proveedor:
| Propiedad |
Tipo de Dato |
Descripción |
|
javax.xml.registry.
queryManagerURL
|
String
|
URL al servicio de control de consulta dentro del proveedor de servicio objetivo.
|
|
javax.xml.registry.
lifeCycleManagerURL
|
|
URL al servicio de control de consulta dentro del proveedor de servicio objetivo.
|
|
javax.xml.registry.
factoryClass
|
String
|
Nombre de clase totalmente cualificado del ConnectionFactory de un proveedor JAXR
específico del registro. Realmente sólo para proveedores JAXR enchufables.
|
Especificar un RegistryClient
El cliente podría especificar un objeto RegistryClient no-null al método
createConnection. Este interface sirve como un manejador de retrollamada que es proporcionado
por el cliente del proveedor JAXR para recibir respuestas asíncronas.
El cliente podría especificar un objeto RegistryClient null al método
createConnection si no planeamos utilizar comunicación asíncrona dentro del
proveedor JAXR.
Especificación Local
El cliente JAXR usa el método setLocale sobre una Connection
para alterar dinámicamente a su preferencia de localidad. El proveedor JAXR debe usar el Locale
definido en el ejemplar Connection en cualquier momento dado cuando esté sirviendo
peticiones por cuenta del cliente. Esta habilidad de un cliente de modificar dinámicamente su
Locale es útil en casos donde usuarios multi-idioma podrían compartir una conexión JAXR
dentro de una aplicación cliente.
Conexiones Síncronas contra Asíncronas
El cliente JAXR usa el método setSynchronous sobre una Connection
para alterar dinámicamente si recibe respuestas y excepciones desde el proveedor JAXR síncrona o asíncronamente. El proveedor
JAXR debe usar está preferencia de comunicación cuando entregue respuestas y excepciones generadas después de procesar las
peticiones por cuenta del cliente.
Si la preferencia de comunicación es síncrona, cada llamada a método request devuelve un
ejemplar JAXRResponse no-null (o un sub-interface) que contenga la respuesta a la petición.
Si la preferencia de comunicación es asíncrona, entonces cada llamada a método request
devuelve un ejemplar JAXRResponse no-null (o un sub-interface) que contenga sólo la respuesta
identificada para esa petición. Esta respuesta limitada podría usarla el cliente para correlacionar peticiones con respuestas
asíncronas en el futuro. Una respuestas o excepción asíncrona es entregada por el proveedor JAXR a los métodos
onResponse o onException del interface
RegistryClient proporcionado por el Connection del cliente.
La respuesta o excepción asíncronas contienen el mismo identificador de petición que fué devuelto en la respuesta síncrona
parcial.
Especifición de Credenciales de Seguridad
El cliente JAXR usa el método setCredentials para alterar dinámicamente sus credenciales
de seguridad. Estas credenciales proporcionan detalles sobre la identidad relacionada con la seguridad asociada con el
cliente. Un ejemplo de una credencial es la combinación de nombre de usuario y password. El proveedor JAXR debe usar las
credenciales definidas en el ejemplar Connection en cualquier momento mientras procesa
las peticiones del cliente. Esto podría requerir tener que re-autentificarse con el proveedor de registro en respuesta a
la llamada a setCredentials cuando sea apropiado.
conexiones Concurrentes
Un sólo cliente JAXR podría mantener varias conexiones. Colectivamente, estas conexiones podrían acceder concurrentemente
a múltiples proveedores JAXR. Individualmente, cada Connection debe ser sólo para un
proveedor JAXR. Una petición de cliente sólo puede ser procesar por una sóla conexión. Las implementaciones de
Connection deben ser seguras ante los threads.
Manejo de Recursos
Un proveedor JAXR normalmente asigna recursos significantes fuera de la JVM por cuenta de una
Connection. Estos recursos incluyen una conexión de red entre el proveedor JAXR y el
proveedor de registro objetivo mostrado en la parte inferior de la figura 5. La conexión de red entre el proveedor JAXR
y el proveedor de registro objetivo está presentada en la figura 5 por el bloque de flechas marcadas
ebXML/SOAP, etc. Los detalles técnicos de dicha conexión son específicas del proveedor de
registro y por lo tanto están fuera del contenido de este docuemnto.
Para poder conservar los recursos del sistema, los clientes deberían cerrar las Connections
cuando ya no sean necesarias. Un cliente cierra una Connection llamando al método
close sobre ella.
Secuencia de Configuración de Conexion
La Figura 19 ilustra la secuencia de eventos durante el establecimiento de una conexión JAXR:
Figura 19: Secuencia de Configuración de
Connection.
Código de Ejemplo de Creación de una Conexión
import javax.xml.registry.*;
...
//Create a client specific implementation of the RegistryClient interface
RegistryClient client = new MyRegistryClient();
//Look up the JAXR Pluggable provider's connection factory
ConnectionFactory factory = (ConnectionFactory)ctx.lookup("JAXRConnectionFactory");
//Define connection configuration properties
Properties props = new Properties();
props.put("javax.xml.registry.factoryClass", "com.sun.xml.registry.ConnectionFactory");
props.put("javax.xml.registry.queryManagerURL", "http://java.sun.com/uddi/inquiry");
props.put("javax.xml.registry.lifeCycleManagerURL", "http://java.sun.com/uddi/publish");
//Create the connection passing it the configuration properties and the RegistryClient interface
Connection connection = factory.createConnection(props, client);
Set credentials = new Set();
...
connection.setCredentials(credentials);
connection.setLocale(locale);
connection.setSynchronous(false);
RegistryService rs = connection.getRegistryService();