SCDJWS Study Guide: JAXR
Printer-friendly version |
Mail this to a friend
JAXR Information Model
Invoking life-cycle and query management methods on the JAXR provider requires the JAXR client to create and use the JAXR information model objects. The JAXR information model resembles the one defined in the ebXML Registry Information Model 2.0, but also accommodates the data types defined in the UDDI Data Structure Specification. Although developers familiar with the UDDI information model might face a slight learning curve, once understood, the JAXR information model will provide a more intuitive and natural interface to most developers.
Most JAXR information-model interfaces are derived from the abstract RegistryObject interface, which defines the common state information, called attributes, that all registry objects share. Example attributes include: key, name, and description. The InternationalString interface defines attributes that must be internationalization compatible, such as name and description. The InternationalString interface contains a collection of LocalizedStrings, where each LocalizedString defines locale, character set, and string content.
The RegistryObject interface also defines collections of Classification, ExternalIdentifier, ExternalLink, and Association objects. The BusinessQueryManager often uses those collections as parameters in its find methods.
Also specializations of the RegistryObject interface, the concrete interfaces Organization, Service, ServiceBinding, Concept, and ClassificationScheme provide additional state information. For example, the Organization interface defines a collection of Service objects, and Service defines a collection of ServiceBinding objects. A ServiceBinding might contain a collection of SpecificationLink objects. UDDI developers should be familiar with these concrete interfaces; they map quite well to major UDDI data types shown in the table below:
UDDI-to-JAXR Information Model Mappings
|
JAXR Information Model |
UDDI Data Model |
|
Organization A business, such as a corporation whose data is contained in the registry, is represented by an Organization instance. An Organization can have multiple Organizations under it or can refer to another organization as a parent. An Organization can offer one or more services, represented by Service objects which can be accessed via Collection Organization.getServices() method. |
>businessEntity The businessEntity structure contains information about a particular business organization and holds references to the services it offers. businessEntity is the highest in the hierarchy and contains descriptive information. Each businessEntity is identified by itsbusinessKey. If its businessKey is not specified at publication time, the registry will automatically generate a key. |
|
Service Each Service can have multiple ServiceBinding objects that specify the details about the protocol binding information for that service. |
businessService businessService entry indicates a logical service and holds descriptive information about a Web service in business terms. A businessService is a child of a businessEntity that provides the service. Information about how a businessService can be instantiated is contained within abindingTemplate. Each businessService is has a unique identifier - serviceKey. This value is assigned by each UDDI operator and cannot be edited by the publisher. It also contains the key to its parent businessEntity - businessKey. |
|
ServiceBinding ServiceBinding has attributes that describe the location where the service can be accessed. A ServiceBinding is associated with one or more SpecificationLink objects that point to the technical specifications defining the service (e.g., a WSDL file for the Web service). ServiceBinding instances are RegistryObject objects that represent technical information on a specific way to access a specific interface offered by a Service instance. A ServiceBinding may have a set of SpecificationLink instances. Maps to a bindingTemplate in UDDI. |
bindingTemplate A bindingTemplate contains information necessary for a client to invoke a service. It specifies the information for a particular Web service and provides the URL of the service where it can be invoked. The bindingTemplate also contains references to tModel s as well as service-specific settings. A bindingTemplate is a child of a >businessService . |
|
ClassificationScheme A ClassificationScheme instance represents a taxonomy that may be used to classify or categorize RegistryObject instances. The classification scheme, or taxonomy, can be internal or external to the registry, meaning that the structure of the taxonomy is defined internal to the registry or is represented somewhere outside the registry and is represented by a ClassificationScheme interface. A good example of an external taxonomy for e-business is that of North American Industry Classification System (NAICS) devised by the U.S. Census Bureau. NAICS is a classification scheme used to classify businesses and services by the industry to which they belong and the business processes they follow. |
tModel |
|
Concept The Concept interface is used to represent taxonomy elements and their structural relationship with each other in order to describe an internal taxonomy. Concept instances are used to define tree structures where the root of the tree is a ClassificationScheme instance and each node in the tree is a Concept instance. As any RegistryObject , a Concept may be classified and also associated with a set of external identifiers and links. |
|
|
Association A RegistryObject instance may be associated with zero or more RegistryObject instances. The information model defines an Association interface, an instance of which may be used to associate any two RegistryObject instances. An Association instance represents an association between a source RegistryObject and a target RegistryObject . These are referred to as sourceObject and targetObject for the Association instance. It is important which object is the sourceObject and which is the targetObject as it determines the directional semantics of an Association . Each Association must have an associationType attribute that identifies the type of that association. The associationType attribute is a reference to an enumeration Concept as defined by the predefined associationType ClassificationScheme in the JAXR specification. An association may need to be confirmed by the parties whose objects are involved in that Association . |
publisherAssertion |
|
ExternalLink ExternalLink instances model a named URI to content that may reside outside the registry. RegistryObject may be associated with any number of ExternalLink instances to annotate a RegistryObject with external links to external content. Consider the case where a Submitting Organization submits a repository item (e.g. a DTD) and wants to associate some external content to that object (e.g. the Submitting Organization's home page). The ExternalLink enables this capability. |
overviewDoc |
|
Classification The Classification interface is used to classify RegistryObject instances. A RegistryObject may be classified along multiple dimensions by adding zero or more Classification instances to the RegistryObject . For example, an Organization may be classified by its industry, by the products it sells and by its geographical location. In this example the RegistryObject would have at least three Classification instances added to it. The RegistryObject interface provides several addClassification methods to allow a client to add Classification instances to a RegistryObject . |
keyedReference (in categoryBag ) |
|
ExternalIdentifier ExternalIdentifier instances provide the additional identifier information to RegistryObject such as DUNS number, Social Security Number, or an alias name of the organization. The attribute name inherited from RegistryObject is used to contain the identification scheme (Social Security Number, etc), and the attribute value contains the actual information. Each RegistryObjects may have 0 or more association(s) with ExternalIdentifier . |
keyedReference (in identifierBag ) |
|
User |
contact |
|
Collection of ExternalIdentifier instances |
identifierBag |
|
Collection of Classification instances |
categoryBag |
|
PostalAddress |
address |
|
SpecificationLink A SpecificationLink provides the linkage between a ServiceBinding and one of its technical specifications that describes how to use the service using the erviceBinding . For example, a ServiceBinding may have a SpecificationLink instance that describes how to access the service using a technical specification in form of a WSDL document. It serves the same purpose as the union of tModelInstanceInfo and instanceDetails in UDDI. |
The union of tModelInstanceInfo and instanceDetails |
Example of JAXR-UDDI Mapping
Let's look an example from Sun Microsystems's JAXR specification.
The figure (figure came frome SUN's JAXR specification) below shows
a simplified example described in terms of UDDI data structures.

The figure (figure came from SUN's JAXR specification) then shows the
same example in terms of JAXR information model using the mapping
described above.

In this example a UDDI businessEntity is classified by an external
classification using the taxonomy element with name "Automobile and
Light Duty Motor Vehicle M anufacturing" and value in the NAICS
taxonomy. It is also identified using a DUNS number of using the DUNS
identification scheme. The businessEntity has a single businessService
for a purchasing service that has a single bindingTemplate that has a
single specification document that is a WSDL file.
Mapping of UDDI Inquiry API Calls To JAXR (BusinessQueryManager)
|
UDDI Method |
BusinessQueryManager Method |
|
find_binding |
findServiceBindings |
|
find_business |
findOrganizations |
|
find_related_business |
findAssociatedObjects(RegistryObject, asociationType) |
|
find_service |
findServices |
|
find_tModel |
findConcepts, findClassificationSchemes |
|
get_bindingDetail |
Not needed. Handled transparently by JAXR provider |
|
get_businessDetail |
Not needed. Handled transparently by JAXR provider |
|
get_businessDetailExt |
Unsupported. Use RegistryService.makeRegistrySpecificRequest |
|
get _serviceDetail |
Not needed. Handled transparently by JAXR provider |
|
get_tModelDetail |
Not needed. Handled transparently by JAXR provider |
Mapping of UDDI Publisher API Calls to JAXR (BusinessLifeCycleManager)
|
UDDI Method |
BusinessLifeCycleManager Method |
|
add_publisherAssertions |
saveAssociations(associations, replace), Association.confirm |
|
delete_binding |
deleteServiceBindings |
|
delete_business |
deleteOrganizations |
|
delete_publisherAssertions |
deleteAssociations |
|
delete_service |
deleteServices |
|
delete_tModel |
deleteClassificationsSchemes, deleteConcepts. NOTE, In UDDI delete_tModel does not delete the tModel. It simply hides it from find_tModel calls. The QueryManager.getRegistryObject calls will still return the deleted tModel after a deleteConcepts or deleteClassificationSchemes call. |
|
discard_authToken |
Not needed. Handled transparently by JAXR provider |
|
get_assertionStatusReport |
findAssociations(findQulifiers, associationTypes, sourceObjectConfirmed, targetObjectConfirmed) |
|
get_authToken |
Not needed. Handled transparently by JAXR provider |
|
get_publisherAssertions |
QueryManager.getRegistryObjects(objectType) |
|
get_registeredInfo |
QueryManager.getRegistryObjects |
|
save_binding |
saveServiceBindings |
|
save_business |
saveOrganizations |
|
save_service |
saveServices |
|
save_tModel |
saveClassificationsSchemes, saveConcepts |
|
set_publisherAssertions |
saveAssociations(assiations,replace) |
The JAXR specification defines the following information model interfaces:
- Organization instance is a RegistryObject that provides information on an organization that has been published to the underlying registry.
- Service instance is a RegistryObject that provides information on services (e.g., Web Service) offered by an Organization. An Organization can have a set of Service objects.
- ServiceBinding instance is a RegistryObject that represents technical information on how to access a specific interface offered by a Service instance. A Service can have a collection of ServiceBinding objects.
- SpecificationLink links a ServiceBinding with its technical specifications that describe how to use the service. For example, a ServiceBinding might have SpecificationLink instances that describe how to access the service using a technical specification in the form of a WSDL (Web Services Description Language) document.
- ClassificationScheme instance represents a taxonomy that you can use to classify or categorize RegistryObject instances.
- Classification instances classify a RegistryObject instance using a classification scheme. Because classification facilitates rapid discovery of RegistryObject instances within the registry, the ability to classify RegistryObject instances in a registry is one of the registry's most significant features.
- Concept instance represents an arbitrary notion, or concept. It can be virtually anything.
- Association instances define many-to-many associations between objects in the information model.
- RegistryPackage instances group together logically related RegistryObject instances. A RegistryPackage might contain any number of RegistryObject instances, and a RegistryObject can be a member of any number of RegistryPackage objects.
- ExternalIdentifier instances provide identification information to a RegistryObject. You can base such identification on well-known identification schemes such as DUNS (D&B's Data Universal Numbering System) number and social security number.
- ExternalLink instances provide a link to content managed outside the registry using a URI (uniform resource identifier).
- Slot instances dynamically add arbitrary attributes to RegistryObject instances at runtime, an ability that enables extensibility within the information model.
- Most interfaces in the JAXR information model extend the ExtensibleObject interface. It provides methods that allow the addition, deletion, and lookup of Slot instances.
- AuditableEvent instances are RegistryObject instances that provide an audit trail for RegistryObject instances.
- Affiliated with Organization, User objects are RegistryObject instances that provide information about registered users within the registry. You use User objects in a RegistryObject's audit trail.
- PostalAddress defines a postal address's attributes. Currently, it provides address information for a User and an Organization.