|
APIs de Java para XML |
El API JAXR
Introducción
El API Java para Registros XML (JAXR) proporciona una forma conveniente para acceder a registros de negocios estándars sobre Internet. Los registros de negocios normalmente se describen como páginas amarillas electrónicas porque contienen listados de negocios y los productos o servicios que los negocios ofrecen. JAXR da a los desarrolladores que escriben aplicaciones en el lenguaje Java una forma uniforme para usar registros de negocios que están basados en estándares abiertos (como ebXML) o especificaciones de la industria consorciadas (como UDDI).
Los negocios pueden registrase a si mismos con un registro o descubrir otros negocios con los que podrían querer negociar. Además, pueden enviar material para que sea compartido y buscar material que otros han enviado. Los grupos estándars han desarrollado DTDs para una clase de documentos XML particulars, y dos negocios podrian, por ejemplo, ponerse de acuerdo para usar el DTD como estándar para sus formularios de orden de pedidos industriales. Como el DTD está almacenado en un registro de negocios estándar, ámbas partes pueden usar JAXR para acceder a él.
Los registros se están convirtiendo en un componente importante de los servicios web porque permiten a los negocios colaborar unos con otros dinámicamente y de una forma cercana. Según esto, la necesidad de usar JAXR, que permite a las empresas acceder a registros de negocios estándars desde el lenguaje Java, también está creciendo.
Usar JAXR
Las siguientes secciones nos dan ejemplos de dos formas típicas en las que se usa un registro de negocios. Están pensados para darnos una idea de cómo usar JAXR en vez de ser completos o exhaustivos.
Registrar un Negocio
Una organización que usa la plataforma Java para sus negocios electrónicos podría usar JAXR para registrarse en un registro estándard. Suministaría su nombre, una descripción de sí misma, algunos conceptos de clasificación para facilitar su búsqueda. Esto se muestra en el siguiente fragmento de código, que primero crea un objeto RegistryService rs y luego lo usa para crear el objeto BusinessLifeCycleManager lcm. El negocio, una cadena de cafeterías llamada "The Coffee Break", está representado por el objeto Organization org, a la que "The Coffee Break" añade su nombe, una descripción de sí misma, y algunas categorías para su clasificación. El org, que ahora contiene las propiedades y los conceptos de clasificación para el "The Coffee Break" se añade al objeto Collection orgs. Finalmente, orgs es grabado por lcm, que manejará el ciclo de vida de los objetos Organization contenidos en orgs:
RegistryService rs = connection.getRegistryService();
BusinessLifeCycleManager lcm = rs.getBusinessLifeCycleManager();
Collection orgs = new ArrayList();
while (...) {
Organization org = new Organization();
org.setName("The Coffee Break");
org.setDescription("Purveyer of only the finest coffees. Established 1895");
.....
Collection classificationConcepts = new ArrayList();
classificationConcepts.add(new Key(<key for Industry/Food Manufacturing/
Other Food Manufacturing/Coffee And Tea Manufacturing concept>));
classificationConcepts.add(new Key(<key for Geography/North America concept>));
....
org.addClassifications(classificationConcepts);
orgs.add(org);
}
lcm.saveOrganizations(orgs);
Buscar un Registro
Un negocio también puede usar JAXR para buscar un registro de otros negocios. El siguiente fragmento de código usa el objeto BusinessQueryManager bqm para buscar el "The Coffee Break". Antes de que bqm pueda llamar al método findOrganizations, el código necesita definir los criterios de búsqueda a utilizar. En este caso, se suminstran a findOrganizations tres de los seis posibles parámetros de búsqueda; como se suministra null para los parámetros tercero, quinto y sexto, estos criterios no se usan para limitar la búsqueda. Los argumentos primero, segundo y cuarto son todos objetos Collection, con findQualifiers y nombres definidos aquí. El unico elemento findQualifiers es un String que especifica que no se devuelva ninguna organización a menos que su nombre sea una correspondencia exacta de uno de los parámetros names. Este parámetro, que también es un objeto Collection con sólo un elemento que dice que los negocios con "Coffee" en sus nombres son una correspondencia. El otro objeto Collection es classificationConcepts, que fue definido cuando el "The Coffee Break" se registró a sí mismo. El fragmento de código anerior, en el que se proporcionaron la industria y la localización geográfica del "The Coffee Break" fue un ejemplo de definición de conceptos de clasificación.
BusinessQueryManager bqm = rs.getBusinessQueryManager();
//Define find qualifiers
Collection findQualifiers = new ArrayList();
findQualifiers.add(BusinesQueryManager.exactNameMatch);
Collection names = new ArrayList();
names.add("%Coffee%"); //Find orgs with name containing Coffee
//Find using only the name and the classification concepts
BulkResponse response = bqm.findOrganizations(findQualifiers, names, null,
classificationConcepts, null, null);
Collection orgs = response.getCollection();
JAXR también soporta el uso de consultas SQL para buscar un registro. Esto se hace usando un objeto SQLQueryManager, como se ve en el siguiente fragmento de código:
SQLQueryManager sqm = rs.getSQLQueryManager();
BulkResponse response2 = sqm.submitQuery("SELECT id FROM RegistryEntry WHERE
name LIKE %Coffee% AND majorVersion >= 1 AND
(majorVersion >= 2 OR minorVersion >= 3)");
El objeto BulkResponse response2 contendrá un valor identificativo (un uuid) por cada entrada en el RegistryEntry que contenga "Coffee" en su nombres y que también tenga una versión 1.3 o mayor.
Para asegurarnos la comunicación entre un cliente JAXR y una implementación de registro, la mensajería se hace usando JAXM. Esto se hace completamente detrás de la escena, así que como usarios de JAXR, no tenemos que preocuparnos de ello.
Como JAXM soporta todos los principales registros estándar, podemos usarlo para acceder a una gran variedad de registros, incluyendo registros ebXML y UDDI.
















































