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();