Skip to main content

skip to main content

developerWorks  >  SOA and Web services  >

Understanding UDDI

Tracking the evolving specification

developerWorks
Document options

Document options requiring JavaScript are not displayed


Rate this page

Help us improve this content


Level: Introductory

Tom Bellwood (bellwood@us.ibm.com), Senior Technical Staff Member, IBM

01 Jul 2002

The Universal Description, Discovery, and Integration (UDDI) project continues to enrich the toolset available to businesses to represent and model Web services in the UDDI business registry. This article introduces UDDI and the enabling role it serves in the growth of Web services. You can learn how UDDI works, as well as discover new and upcoming features for the UDDI specification. (This article was published in the May 2002 issue of the IBM developerWorks journal.)

What is UDDI?

The UDDI project encourages the inter operability and adoption of Web services. It is a partnership among industry and business leaders and was founded by IBM, Ariba, and Microsoft. Now, over 300 companies participate. UDDI provides a standards-based set of specifications for service description and discovery, as well as a set of Internet-based implementations. UDDI continues to rapidly evolve and to gain industry support. The specification has developed quickly because it is backed with rapid implementation, which proves the concepts and provides a rich experience base for further refinement of the specification.

UDDI addresses a number of business problems. First, it helps broaden and simplify business-to-business (B2B) interaction. For the manufacturer who needs to create many relationships with different customers, each with its own set of standards and protocols, UDDI supports a highly flexible description of services using virtually any interface. For the flower shop in Australia that wants to get plugged in to every marketplace in the world but does not know how, UDDI provides a way to do this. The specifications allow the efficient and simple discovery of their business and the services they offer by publishing them in the registry.

For the B2B marketplace provider that needs to get catalog data for the suppliers in its industry along with connections to billing services, packers, shippers, insurers, and so on, UDDI allows dynamic discovery and integration of relevant Web services into an aggregate business process. UDDI provides one-stop shopping for information on businesses and electronic services. Publishing business and service information in UDDI makes it broadly accessible to others.

UDDI is based on existing standards, such as Extensible Markup Language (XML) and Simple Object Access Protocol (SOAP). All compliant implementations of UDDI support the UDDI specification. The public specification is developed in an open, inclusive process by the organization's members. The intention is to produce and implement three successive versions of the specification before turning ownership for future development over to an independent standards body. The UDDI Version 1 specification was published in September 2000, and Version 2 was published in June 2001. Version 3 is under development with availability expected in mid 2002. Version 1 established a base for the registry, while Version 2 added features like business relationships. Version 3 continues to address areas important to the ongoing development of Web services, such as security, improved internationalization, registry interoperability, and various API improvements to enable further tooling improvements.


Figure 1. The layered Web services stack with UDDI
The layered Web services stack with UDDI

As shown in Figure 1, UDDI fits into an overall Web services stack and is a key component of its foundation, enabling the creation, specification, discovery, and invocation of Web services.

UDDI builds on a network transport layer and a SOAP-based XML messaging layer. Service description languages, such as Web Services Description Language (WSDL), provide a uniform XML vocabulary (similar to an Interactive Data Language (IDL)) for use in describing Web services and their interfaces. You can build upon this overall foundation by adding layered capabilities, such as Web services workflow descriptions using Web Services Flow Language (WSFL), security, management, and quality-of-service features, which address system reliability and availability.



Back to top


How UDDI works

A UDDI registry contains programmatically accessible descriptions of businesses and the services they support. It also contains references to industry-specific specifications that a Web service might support, taxonomy definitions (used for meaningful categorization of businesses and services), and identification systems (used for meaningful identification of businesses). UDDI provides a programming model and schema, which define the rules for communicating with the registry. All APIs in the UDDI specification are defined in XML, wrapped in a SOAP envelope, and sent over HTTP.


Figure 2. Flow of UDDI messages between Client and Registry
Flow of UDDI messages between Client and Registry

Figure 2 illustrates the UDDI message transport, from the client's SOAP request over HTTP to a registry node and back. The registry server's SOAP server handles the UDDI SOAP message, processes it, and returns a SOAP response to the client. As a matter of registry policy, client requests that entail modifying data are required to be secured and authenticated transactions.


Figure 3. How UDDI works
How UDDI works

Figure 3 illustrates how a UDDI registry is populated with data and how customers discover and use this information. A UDDI registry is built on the data provided by its customers. There are several steps to making data useful in UDDI. As shown in step 1, publishing useful information to the registry begins when software companies and standards bodies define specifications relevant to an industry or business, which they register in UDDI. These are known as technical models, or more commonly as tModels.

In step 2, companies also register descriptions of their businesses and the services they offer. A UDDI registry keeps track of all these entities by assigning each one a programmatically unique identifier, known as a Unique Universal Identifier (UUID) key as shown in step 3. A UUID key is guaranteed to be unique and never changes within a UDDI registry. These keys look like a formatted random hexadecimal string (for example, C0B9FE13-179F-413D-8A5B-5004DB8E5BB2). They may be used to reference the entity with which they are associated. UUID keys created in a registry are only meaningful within the context of that registry.

Other clients, such as e-Marketplaces, search engines, and business applications (for example, a workflow-based aggregation of Web services) in step 4, use a UDDI registry to discover services of interest. In turn, other businesses may invoke these services, allowing simple and dynamic integration as illustrated in step 5.

Data in a UDDI registry can be conceptually divided into four categories, each of which represents a top-level entity in UDDI. Every such entity is assigned its own UUID and always can be located in the context of that UDDI registry with this identifier:

  • Technical models
  • Businesses
  • Business services
  • Service bindings

Registry information for businesses and services can be thought of in three groups: white, yellow, and green pages.

White pages represent basic information on a business, such as its name, description of the business it does, contact information, and the like. It also includes any identifiers for that business, such as a Dun & Bradstreet D-U-N-S® Number.

Yellow page information extends your ability to find a business or service within the registry by supporting classification using various taxonomy systems for categorization. Such classifications may be associated not only with businesses and their services, but with tModels. If only white, yellow, or both page data is provided, a registry entry is of limited value in the programmatic discovery and use of services. To do that, information on how and where to programmatically invoke a service is needed, and the green pages provide this information.

Green pages are the binding information associated with services and provide references to the technical specifications those services implement, as well as pointers to various file and URL-based discovery mechanisms.

A UDDI registry is composed of one or more implementations of the UDDI specification that interoperate to share registry data. One special UDDI registry is composed of a set of publicly accessible UDDI implementations called nodes. These interoperate to share registry data and, taken together, form the UDDI Business Registry. This registry is provided at no charge to the public. All UDDI Business Registry entries exist redundantly on all Operator sites, but entries may be changed only at the site where they were created.

Both IBM and Microsoft operate Version 1 nodes in the UDDI Business Registry, and they, as well as both HP and SAP, currently operate beta sites that support much of the Version 2 UDDI specification. All four plan to support Version 2 production registries in mid-2002. Each operator supports the SOAP APIs defined by the UDDI specification. Compliance is enforced through a business contract. Operators are free to offer additional services beyond those required by the specification, such as browser-based user interfaces (which all of the operators have done).



Back to top


The UDDI specification at a glance

The UDDI specification is composed of several documents. The API specification describes the SOAP APIs, which allow you to perform discovery and publishing operations. Request/response semantics and error handling are described. There is also substantial information on conventions and usage. Companion documents include the Data Structure specification and the API Schema, which define the message and data semantics.

The UDDI APIs fall into either the Inquiry or Publishing category. Version 1 supports the API operations, as shown in .


Listing 1. Summary of UDDI V1 APIs

Inquiry Operations:      Publishing Operations:
Find                      Save
     find_business             save_business
     find_service              save_service
     find_binding              save_binding
     find_tModel               save_tModel
Get details               Delete
     get_businessDetail        delete_business
     get_serviceDetail         delete_service
     get_bindingDetail         delete_binding
     get_tModelDetail          delete_tModel
     get_registeredInfo        get_registeredInfo
                          Security
                               get_authToken
                               discard_authToken
	

The Inquiry APIs lend themselves to three query patterns:

UDDI Version 2.0

UDDI defines four core data elements within the data model:

  • businessEntity (modeling business information)
  • businessService (describing a service)
  • tModel (describing specifications, classifications, or identifications)
  • binding Template (mapping between a businessService and the set of tModels that describe its technical fingerprint)

Beyond these core elements, Version 2 has added support for modeling relationships between businesses.

The UDDI Specification and the UDDI Business Registry, which provides a set of reference implementations that interoperate to share registrations, enable a programming model that supports either design-time or run-time service discovery, depending on the needs of the client. The just-in-time integration value proposition of the IBM Web Services Initiative combined with other important enabling technologies, such as the WSDL, allows organizations to perform dynamic discovery and binding of Web services at run time.

The continuing evolution of the UDDI Specification further increases the value of UDDI registries by addressing key areas, such as data integrity, access control, identification, and authentication, as well as interoperability, improved data modeling, query, and localization.

  • The browse pattern entails the use of find operations, which allow you to browse for entries using a variety of criteria, such as taxonomy categorizations, identifiers, or partial name information using the find_xxx APIs.
  • The drill down pattern involves obtaining detailed information about an entity that you already have found. The get_xxx APIs support this capability.
  • The invocation pattern is the last pattern. Invoking services requires using the binding template information, which typically is cached by the client for repeated use without the need to return to the registry for the same information each time the client needs it. If the binding information changes, failure to acquire and use the service should cause clients to return to the registry to refresh this information. This is known as the invocation pattern.

Saving and deleting (with save_xxx and delete_xxx APIs) can be accomplished against each of the top-level entities and is mostly self-explanatory, but it should be noted that the behavior of save operations in UDDI is generally destructive. An example is resaving the same service with different information, which results in the complete replacement of the prior entry for that service.

The operations associated with authTokens require you to preregister with a particular UDDI Business Registry node and provide credentials necessary to establish a publisher's identity. These credentials are used to obtain an authToken for purposes of performing a publishing operation (with the save_xxx APIs). This authToken may be reused for a short time during successive publishing operations provided it has not expired. Operator policy determines both the content and life of an authToken.



Back to top


What's new in UDDI version 2?

Version 2 of UDDI introduces some key features that improve the quality and efficiency of using a UDDI registry from the Version 1 specifications. The following sections describe the new features in Version 2:

  • Modeling support for complex organizations
  • More powerful categorization and identifier support for clients
  • Enhanced inquiry
  • Internationalization features
  • Peer-based replication



Back to top


Modeling support

The updates associated with modeling support are targeted primarily at helping large organizations more efficiently model their businesses and services. Many companies, from large conglomerates involved in different ventures to focused ones that wish to partition their Web offerings by the geographies they serve, may wish to represent themselves on the Web as separate but related businesses. In Version 1 of UDDI, the only choice for these situations was to maintain separate and unrelated businesses. Version 2 allows you to define relationships between businesses, such as parent-child, peer-peer, and identity. This gives you the flexibility to model a business with subsidiaries, external business partners, or various internal divisions. Relationships may be formed between any two businesses (as defined by their unique business keys). The new canonical tModel for Business Relationship types supports this capability, together with several new publishing APIs that allow you to define, delete, and request the status of a relationship, as shown in Listing 2.

A new inquiry API called find_relatedBusinesses enables anonymous searches of relationships involving a given company. The other new publishing APIs in Listing 2 all pertain to the relationships that a particular publisher created and owns and are not accessible through anonymous inquiry. A business relationship consists of a pair of identical relationship assertions, each of which ties two businesses together and identifies the specific relationship being established. The owners of both of the two businesses involved must each declare the same relationship assertion in order to form an externally visible business relationship. Only these matched relationship assertions are returned as the result of a find_relatedBusinesses() inquiry.

The following example shows how a relationship is formed and then discovered. First, you get an authorization token for publishing:


Listing 2. Getting an authToken


<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
  <Body>
<get_authToken generic="2.0"
  xmlns="urn:uddi-org:api_v2"
  userID="businessA_UserId"
  cred="businessA_Password" />
  </Body>
</Envelope>
	

Which returns the following:


Listing 3. The response to get authToken

<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
  <Body>
<authToken generic="2.0"
  operator="www.ibm.com/services/uddi"
  xmlns="urn:uddi-org:api_v2" >
    <authInfo>businessA_AuthToken</authInfo>
</authToken>
  </Body>
</Envelope>
	

Next, you establish a business assertion relating two businesses, A and B, whose respective businessKeys are simplified here to businessKeyA and businessKeyB instead of the typical UUID format. The SOAP envelope is not shown, for brevity.

<add_publisherAssertions generic="2.0"
  xmlns="urn:uddi-org:api_v2">
  <authInfo>businessA_AuthToken</authInfo>
    <publisherAssertion>
    <fromKey>"businessKeyA"</fromKey>
<toKey>"businessKeyB"</toKey>
  <keyedReference keyValue="parent-child"
  keyName="Subsidiary"
  tModelKey="uuid:c1acf26d-9672-4404-9d70-39b756e62ab4"/>
  </publisherAssertion>
</add_publisherAssertions>
	

Once an identical assertion is established by the owner of business B, a publicly visible business relationship will be visible in the registry. Next, you perform a simple inquiry using the find_relatedBusinesses() API:

<find_relatedBusinesses generic="2.0"
xmlns="urn:uddi-org:api_v2">
  <businessKey>"businessKeyA"</businessKey>
</find_relatedBusinesses>
	

Listing 3 shows the returned XML. A more fine-grained inquiry might include a keyedReference identifying the specific relationship being sought.

Another important feature added in Version 2 to support the modeling needs of large businesses is called a Service Projection, which allows one business to create a reference to a service owned by another business. This is useful in several scenarios, such as for a company that offers the same service across two or more of its businesses, or for a common service (for example, overnight shipping) whose use many businesses might want to encourage by linking it to the services they offer themselves.

A projected service reference is nothing more than that. The creator of a Service Projection cannot alter the actual service being referenced, but in all other respects, the service behaves as if it were owned by the business creating the projection. The service is returned as part of a get_businessDetail() or get_serviceDetail() API call. You differentiate a projected service from an actual one through the owning business key associated with the service. The key always matches the actual business that owns the service, rather than the business that created the service projection.



Back to top


Powerful categorization

In Version 1, three built-in taxonomies were provided for use in categorizing businesses and services. These were the NAICS industry categorizations, UNSPC project and service categorizations, and ISO-3166-2 geographic taxonomies. Use of these taxonomies is internally checked by the UDDI registry; attempts to save invalid codes are rejected. The importance of meaningful categorization in UDDI cannot be overstated. It is the single most powerful means of finding useful information of interest, and thus improving the ability of industry to create and control new taxonomies continues to be a priority.

Version 2 adds the ability for organizations to define new externally checked taxonomies, which can be offered for public use in UDDI. These external taxonomy suppliers must support a validate_values Web service and make it accessible to the UDDI Business Registry to support external checking and validating of taxonomy values that clients wish to associate with their registry entries. This is a controlled process. Registration of an externally validated taxonomy can be accomplished only with the approval of a UDDI Business Registry operator.

This new validation feature allows taxonomy providers the flexibility of ensuring that only valid taxonomy values are saved by clients using their taxonomy. When a client requests to use a provider's taxonomy, the provider may choose to perform a contextual validation along with validating that the requester is authorized to use the taxonomy. The more common non-contextual scenarios also support caching taxonomy data within the UDDI Business Registry to reduce dependence on the provider's external taxonomy service.



Back to top


Enhanced inquiry

Version 2 builds upon the inquiry capabilities previously provided by adding several powerful features dealing with more complex query requirements. To enhance existing find_xxx inquiry APIs, several new filter criteria (find qualifiers) have been added, including orLikeKeys, orAllKeys, combineCategoryBags, serviceSubset, and andAllKeys. Of these, combineCategoryBags, serviceSubset, and orLikeKeys are of particular interest.

The combineCategoryBags qualifier allows you to group all of the taxonomy data associated with a business and all of its contained services (including any service projections) into a single collection that the search is performed against. This is useful because it reduces the steps in finding a business of interest by looking in both the business and its constituent services at the same time.

Similarly, the serviceSubset filter allows you to search for businesses using taxonomy criteria, which are tested only against the categorizations associated with a business' constituent services. Categorizations associated with the business itself are not included in the search.

Finally, the orLikeKeys qualifier is particularly useful because it enables pseudo-complex queries. For example, you can find businesses located in the United States, Mexico, or Canada that also offer cold storage or generic shipping services. This enables you to search for businesses that are categorized with different levels of specificity, while at the same time allowing a single inquiry to reference multiple different taxonomies.



Back to top


Internationalization

Several new features have been added in an ongoing effort to address internationalization improvements in UDDI. Support for multiple names together with an xml:lang code has been added to businessEntity and businessService entities. You must provide at least one name, but you can provide multiple names (each with a different language code).

Another internationalization feature in Version 2 is the addition of a new type of taxonomy called postalAddress, which enables you to create a tModel describing localized postal addresses that then may be associated with the addresses found in business entities.



Back to top


Replication

While not directly visible to UDDI clients, significant improvements were made in replication between registry operators for Version 2. UDDI Version 1 only supported a file-based replication scheme whose complexity grew as n-squared with the number of registry node implementations participating within a UDDI registry. Version 2 addresses the needs of a larger number of participating nodes that replicate with each other. Replication can proceed in a peer-based approach where registry updates from all other nodes can be obtained from any one node. Replication is now further supported by the definition of a set of APIs that allows processing of the changes and management of the process.



Back to top


What's ahead

The next version of the UDDI Specification planned for mid-2002 will focus on security, advanced data management, and further internationalization. Security will be addressed by improving UDDI data integrity through enhanced access control, identity, and authentication. This will include support for existing and emerging security technologies from such organizations as W3C and OASIS. Advanced data management features will provide continued enhancements to the search capability to provide more concise and targeted queries, better interpretation of query results, the ability to capture richer and more meaningful descriptions of businesses and services, and easier management of existing data. Improvements to internationalization will include enhanced support for multinational corporations to describe their global operations across international business units and will address localization of UDDI data and services.



Back to top


Conclusion

UDDI continues to evolve rapidly. Publicly available beta implementations of UDDI Version 2 were provided by multiple UDDI Business Registry operators in 2001. As Version 3 of the specification becomes available in mid-2002, the registry will continue to add features needed for conducting business through the Web, addressing the areas of security, improved internationalization, and additional features to support registry use and interoperability.



About the author

Tom Bellwood is a Senior Technical Staff Member with IBM and has many years of experience in the technology sector, ranging from the world of semiconductor design and design automation to systems and application development. He is an expert on UDDI and how it supports the growing world of Web services. He is the technical lead for the IBM UDDI Business Registry and has spoken at many technical conferences.




Rate this page


Please take a moment to complete this form to help us better serve you.



YesNoDon't know
 


 


12345
Not
useful
Extremely
useful
 


Back to top