The javax.xml.registry and
javax.xml.registry.infomodel packages contain the classes and
interfaces that make up the Java API for
XML-based Registries (JAXR). The
javax.xml.registry.infomodel package (described in
the next chapter), defines the programming interface for the objects
that reside in a registry, while the
javax.xml.registry package (the subject of this
chapter), provides the means to connect to a registry, submit
queries, and update and delete objects within the registry.
In the JAXR API, a client application connects to a JAXR provider
that is usually co-resident with it. The JAXR provider is specific to
a particular type of registry, but provides a programming model that
is entirely independent of the way in which the target registry
stores and manages its content. There are currently two major
registry types in common use: the
UDDI registry
and the ebXML
registry/repository. Although these registries have a lot of common
functionality, the ebXML registry/repository also provides features
that have no counterpart in the UDDI registry and that cannot
reasonably be emulated by a UDDI-based JAXR provider. The JAXR API
deals with this situation by allocating each method to a capability
level. There are currently two such levels: level 0, which broadly
corresponds to the functionality provided by a UDDI registry, and
level 1, which extends level 0 to include functionality from the
ebXML registry specification. All JAXR providers are required to
implement level 0. The JAXR reference implementation includes a level
provider that works with a UDDI registry. The level to which each
method in the API is allocated is shown in the reference sections in
both this and the next chapter.
The core interface of the JAXR API is
RegistryService. Each JAXR provider is represented
by a single instance of this interface, which can be retrieved by
creating a ConnectionFactory, then obtaining a
Connection to the JAXR provider and calling its
getRegistryService( ) method. The
RegistryService object provides access to the
query managers and the lifecycle manager that can be used to query
and update the registry itself.
Querying a registry and updating a registry are modeled as two
separate activities. This is appropriate because registry queries can
usually (depending on the policy of the registry) be performed by any
user, without the need for authentication. Registry updates, on the
other hand, almost always require prior authentication and are
typically carried out only over a secure transport protocol, such as
HTTPS. The JAXR API provides the QueryManager and
BusinessQueryManager interfaces to handle registry
queries and the LifeCycleManager and
BusinessLifeCycleManager interfaces for registry
updates. In addition, level 1 registries may support registry queries
written using SQL-92 or XQuery (and possibly other query languages)
via the DeclarativeQueryManager interface.