Welcome!

SOA & WOA Authors: Eddie Budgen, Maureen O'Gara, Derek Singleton, Jill Tummler Singer , Ken Rutsky

Related Topics: SOA & WOA

SOA & WOA: Article

Registering a Web Service in UDDI

Registering a Web Service in UDDI

UDDI (Universal Description, Discovery and Integration) is a registry for Web services. It provides a mechanism to advertise and discover Web services. Although you don't need to use UDDI to implement a Web services solution, you'll find that a UDDI registry greatly simplifies the management and administration of your services, particularly once they have reached a certain critical mass.

Once you've developed more than a few services, and once you start giving access to those services to more than a few controlled individuals, management starts to get more challenging. Potential service consumers need a way to search for available services, to determine which services might be applicable to their projects, and to find metadata about those services. In particular, a service consumer must find the WSDL (Web Services Description Language) files that define a service. UDDI was designed to support these requirements.

A business may set up multiple UDDI registries in-house to support intranet and extranet operations, and a business may use UDDI registries set up by its customers and business partners. The UDDI Business Registry (UBR) is a free, public registry operated by IBM, Microsoft, SAP, and NTT, although few businesses feel comfortable advertising their business services in such an insecure public forum.

One key difference between a UDDI registry and other registries and directories is that UDDI provides a mechanism to categorize businesses and services using taxonomies. For example, service providers can use a taxonomy to indicate that a service implements a specific domain standard, or that it provides services to a specific geographic area. These taxonomies make it easier for consumers to find services that match their specific requirements.

Now, of course, in order for consumers to find a service, the service provider must first properly register the service. There are many different ways to register a service, so it's important to define registration conventions so that consumers know what to search for.

In July 2003, the standards group that manages the UDDI specification (the OASIS UDDI-Spec Technical Committee) published a Technical Note called "Using WSDL in a UDDI Registry, Version 2.0." This Technical Note defines conventions for registering a Web service based on information in the service's WSDL definition. (This Technical Note supercedes the previous UDDI Best Practices document, "Using WSDL in a UDDI Registry, Version 1.08.")

The UDDI Data Model
A UDDI registry manages information about service types and service implementations. Going back to basic object-oriented concepts, a type is the definition of a thing, and an implementation is an instance of a thing. A service-type registration, called a technical model (tModel), represents a technical specification or some other metadata. For example, a tModel could represent a WSDL document that defines a Web service.

A service implementation registration represents a service offered by a specific service provider. It specifies information about the business entity that offers the service (businessEntity), describes the service (businessService), and captures the binding information (bindingTemplate) required to use the service. The binding Template captures the service endpoint address, and associates the service with the tModels that represent its technical specifications. Figure 1 shows the UDDI data model that captures these registrations.

 

UDDI also uses tModels to represent taxonomies. Service providers categorize UDDI registrations using a construct called a keyedReference. A keyedReference allows you to assign property values to a UDDI entity using a name/value pair. The "name" is the tModelKey of the taxonomy tModel. The "value" is the descriptive information supplied for this categorization. You may define a limited set of valid values (a Value Set) for a taxonomy. For example, you could define a taxonomy to represent the deployment status of a service, and define a Value Set with values of "development", "test", and "production". To indicate that a service is in production, you would add a keyedReference to the businessService entity that represents the service. The keyedReference would specify the tModelKey for the deployment status tModel taxonomy, and a value of "production". It would look something like this:

<keyedReference
tModelKey="uuid:2e444afb-33e5-
3a7b-81b7-1cb8a373f457"
keyName="deployment status"
keyValue="production"/>

You'll notice that the keyedReference includes three attributes: tModelKey, keyName, and keyValue. The tModelKey and keyValue attributes are required. The keyName attribute is optional and insignificant. The keyName attribute allows you to assign a human-readable name to the keyedReference attribute, but you cannot search the registry using this name.

The WSDL Data Model
A WSDL file describes a Web service. A WSDL file describes what functionality a Web service offers, how it communicates, and where to find it. Figure 2 shows the WSDL data model, and shows the relationship of the various definition elements.

 

The what part of a WSDL document (a portType) defines the abstract interface of a Web service. A portType is a reusable definition component. Multiple providers can offer Web services that implement the same portType. A portType specifies what operations the abstract service supports, and it specifies the input and output messages associated with each operation. Each message is defined in a separate message definition, which in turn references element or type definitions in the types section.

The how part of a WSDL document (a binding) maps a portType to a concrete set of formats and protocols. A binding indicates how the input and output messages defined in the referenced portType should be packaged into a message, and it specifies what communication protocols can be used to convey the messages. As with portTypes, a WSDL binding is a reusable definition component. Multiple service providers can support the same WSDL binding. A service can also implement multiple bindings of the same portType, thereby supporting multiple protocols.

The where part of a WSDL document (a service) describes a specific Web service implementation. A Web service implementation contains one or more ports. A port implements the referenced binding and specifies the endpoint of that Web service binding. A business might offer multiple endpoints to a particular service, each implementing a different binding.

Mapping WSDL to UDDI
The "Using WSDL in a UDDI Registry" Technical Note defines a mapping model between WSDL and UDDI that supports the reusability characteristics of the WSDL data model.

Figure 3 shows a Web service description that consists of three different WSDL files for the portType, binding, and service definitions. The service definition imports the binding definition, and the binding definition imports the portType definition. By breaking the descriptions into multiple files, the portType and binding definitions support reusability.

 

This is the approach people should take when defining corporate standards or industry-specific domain standards. A standards group should define the abstract service portTypes and bindings, but it should not define specific service implementations. A service provider that implements a standard service description should not redefine the standard definitions. It should import the standard definitions.

The WSDL-to-UDDI mapping model is designed to help users find services that implement standard definitions. It also helps users find services that support a specific set of protocols, such as SOAP over HTTP. The Technical Note defines a new set of canonical tModels to help capture the necessary information. These tModels include categorization systems to capture the WSDL element type (portType, binding, or service) and the element's fully qualified name (its local name and namespace name), along with the protocols supported by a WSDL binding.

The mapping model works as follows:

  • Register each WSDL portType as a tModel. Give the tModel the same name as the portType local name. Capture the URL of the WSDL file in the tModel overviewURL. Use keyedReferences to indicate that the tModel represents a WSDL portType and to capture the namespace.
  • Register each WSDL binding as a tModel. Give the tModel the same name as the binding local name. Capture the URL of the WSDL file in the tModel overviewURL. Use keyedReferences to indicate that the tModel represents a WSDL binding, to capture the namespace, to reference the tModel that describes the portType for this binding, and to indicate protocols supported by this binding.
  • Register each WSDL service as a businessService. Give the businessService a hu-man-readable name. Use keyedReferences to indicate that this service is described by WSDL and to capture the WSDL service local and namespace names.
  • Register each WSDL service port as a bindingTemplate. Capture the port endpoint address in the bindingTemplate accessPoint. Using the tModelInstanceDetails structure, associate the service with all the tModels that describe the service. At a minimum, the bindingTemplate should point to the tModels that represent the WSDL portType and WSDL binding definitions. Capture the port's local name in the InstanceParms field of the WSDL binding link.

    Conclusion
    The new mapping gives users some powerful options when searching for services. It permits users to perform the following types of queries:

    • Find specifications by namespace name
    • Find specifications by WSDL portType or binding name
    • Find all bindings for a portType
    • Find all SOAP bindings for a portType
    • Find implementations by namespace name
    • Find all implementations of a WSDL portType
    • Find all SOAP implementations of a WSDL portType
    • Find all implementations of a WSDL binding
    As your investment in Web services grows, you'll no doubt find these capabilities valuable.
  • More Stories By Anne Thomas Manes

    Anne Thomas Manes is a Research Director at Burton Group, a research, consulting, and advisory firm. Anne leads research for the Application Platform Strategies service. Named one of NetworkWorld's "50 Most Powerful People in Networking," in 2002 and one of Enterprise Systems Journal's "Power 100 IT Leaders," in 2001, Anne is a renowned technologist in the Web services space. Anne participates in standards development at W3C and OASIS. She is a member of the editorial board of Web Services Journal. She is a frequent speaker at trade shows and author of numerous articles and the book, Web Services: A Manager's Guide, published by Addison Wesley.
    Prior to joining Burton Group, Anne was chief technology officer at Systinet, a Web services infrastructure company, and before that she pioneered Sun's Web services strategy. A 24-year industry veteran, Anne developed her expertise working at a number of the world's leading hardware and software companies. You can reach Anne via e-mail at anne@manes.net or through her Web site at http://www.bowlight.net.

    Comments (4) View Comments

    Share your thoughts on this story.

    Add your comment
    You must be signed in to add a comment. Sign-in | Register

    In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.


    Most Recent Comments
    Anne Thomas Manes 12/02/03 12:14:23 PM EST

    A number of vendors supply private UDDI implementations, including Systinet (www.systinet.com), Blazeworks (www.blazeworks.biz), Select (www.selectbs.com), and Acumen Technologies (www.acumentechnologies.com).
    There are two open source implementations: from Novell (develop.novell.com/uddi) and SourceForge (www.juddi.org). Sun distributes a UDDI server with the Java Web Services Developer Pack (http://java.sun.com/webservices/webservicespack.html). Many J2EE and Web services platforms include a UDDI server, including webMethods Glue Professional, Cape Clear Server Enterprise, IBM WebSphere ND Edition, BEA WebLogic Enterprise, OracleAS 9i Enterprise, Windows Server 2003, etc.

    My personal favorite is Systinet's, but I'm biased (I used to work there). It's available for free download and evaluation, and the documentation is excellent.

    yangxiaoman 12/02/03 12:28:11 AM EST

    Dear Anne:
    I want to know how to set up a private UDDI registry and how difficult it is to set up one.
    In addition, can you recommend some materials and books about setting up a private UDDI registry.
    Expected your reply!
    Thanks!!
    yours
    yangxiaoman

    Anne Thomas Manes 10/14/03 09:10:54 AM EDT

    I agree that the public UDDI (the UDDI Business Registry -- UBR -- operated by IBM, Microsoft, SAP, and NTT) doesn't play a particularly important role in Web services today. It will grow in importance as more industry groups define standard Web services specifications. The UBR will become the official registry of standard specifications.

    But you shouldn't constrain your view of UDDI just to the UBR. You can also set up a private UDDI registry within your organization to support intenal and external applications.

    Private UDDI plays a very important SOA management role within an organization. Many companies are still just experimenting with Web services, so it's still viable to communicate between groups via word of mouth. But once a company gets beyond the pilot stage -- once you have lots of people in lots of different departments building and consuming Web services, you need a automated mechanism to disseminate metadata about these services. You could do so using a Web page or a Wiki page, or you could use a proprietary content management systems. Or you could use a Web services standard registry. I'm biased, but I think UDDI is the right way to go.

    David 10/06/03 08:45:32 PM EDT

    UDDI is a perfect example of a new "standard" that's created before its time. There are hardly any web services out there, yet we have a standard to create an automated system to "discover" these.

    What sort of search scheme to you use today to find a product you need? What scheme do you use to find a class library that you may need for your project? What scheme do you use to find a car, a date or anything else in life?

    My guess is that you don't go to some large directory and do queries. The descriptions in a public UDDI will be marketing fluff, with no pricing and no real way to determine if there's a fit.

    You'll need to investigate the product, learn about licensing/usage terms, find out about pricing, determine if the product will really work in your environment, you'll need to test it using a test account/system, you'll need to pay and sign service agreements, etc.

    The easiest part will be writing the code that integrates the web service. The hard part is doing what humans do best: take information and think about which options are really important.

    Just as there is no Automobile or Account or Customer class in Java that works for most people, you'll find the same is true of web services.

    Getting the URL and XML structures in place is easy. The business decision is harder.

    I don't think UDDI will really be much help now or in the future. Google and Yahoo will no doubt lead the race in searches for such technologies in the future as there is just too much more to selecting a web service than whether it's listed in UDDI or not.

    Also, you have the chicken and egg issue. Why list in UDDI if it doesn't drive business now? And if I don't list, then good web services can't be found in UDDI, so it's not worthwhile searching using it because I rarely find what's truly available out there.

    UDDI is a solution to a problem that doesn't exist. But it's sure to sell some new front ends to the large vendor's LDAP and other proprietary directory services.