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.