Getting Started with JAXR
Jaxr (Java API for XML Registries) is a client-side API for accessing different kinds of XML-based business registries, but is used predominantly for UDDI and ebXML registries. Actually, the data model of the API closely matches ebXML concepts and terminology, but it still works well for UDDI.
In some respects JAXR is analogous to JDBC. Where JDBC provides a vendor-neutral API for accessing any type of relational database, JAXR provides a vendor-neutral API for accessing any ebXML or UDDI registry. J2EE vendors will provide their own implementations of the JAXR API for accessing ebXML, UDDI, or other types of XML registry systems.
The JAXR API has two conformance levels: Level 0 and Level 1. Level 1 is a richer API that is designed for accessing ebXML registries. Level 0 provides fewer features and is intended for UDDI registries, which are less flexible than ebXML but more popular. The WS-I Basic Profile 1.0 sanctions the use of UDDI, but not ebXML. Because J2EE Web Services are aligned with the Basic Profile, this book covers only JAXR Level 0, the UDDI-compliant aspect of the API.
JAXR comes in two interdependent packages: The Query and Life Cycle API (javax.xml.registry) and the Information Model (javax.xml.registry.infomodel). The Query and Life Cycle API supports the UDDI Inquiry and Publishing APIs respectively. The Information Model (infomodel for short) provides business- and technical-object views that correspond to UDDI data structures (businessEntity, bindingTemplate, tModel, and so on). This part of the book covers both packages.
JAXR is very useful under certain circumstances. If you need to build a UDDI browsing tool, JAXR is a great choice for supporting the actual SOAP communications between the browser and the UDDI registry. JAXR is useful for implementing failover mechanisms, to handle gracefully the problem of a Web service endpoint becoming unavailable. The JAXR API can be used to look up the Web service in UDDI and determine whether an alternative access point is offered.
Some have proposed that UDDI provides a "self-organizing" system, where software automatically locates new business partners and interacts with those partners automatically. The concept of self-organizing systems is more fantasy than reality, however. In truth, there is not a lot of self-organizing going on in real-world implementations—most businesses don't trust software to create business relationships, which is the implication of a self-organizing system.
JAXR is a good API for developers to use for accessing a UDDI registry. A lot of the grunt work of communicating with a UDDI registry is hidden behind JAXR's APIs and infomodel. Essentially, you work with business objects and technical objects, which represent organizations, services, classification systems, and so on, without having to think in terms of SOAP messaging. This is a departure from other UDDI APIs like IBM's UDDI4J (UDDI for Java) open source project or Systinet's WASP UDDI API, both of which model the data structures and SOAP operations more closely.