Browsing Basic Information
A series of messages allow a program to retrieve basic information about a
business, a web service, or metadata about a specification that a web service
supports. These messages all have SOAP messages whose XML body element begins
with find. Table
6-2 lists the messages that can be used to retrieve basic information for
searching purposes. The "Message name" column lists the name of the XML root
element used as the body of the SOAP envelope on the call's request portion.
The "Response document" column shows the name of the XML root element that is
the body of the SOAP envelope for the response.
Table 6-2: XML documents used in
browsing inquiry messages
|
Message name |
Response document |
Brief description |
|
<find_binding>
|
<bindingDetail>
|
Given a UUID to a <businessService> structure,
this message retrieves zero or more <bindingTemplate>
structures within a single <bindingDetail> structure
matching the criteria specified in the input arguments. |
|
<find_business>
|
<businessList>
|
Given a regular expression, business category, business identifier,
or <tModel>, this message retrieves zero or more
<businessInfo> structures contained within a single
<businessList> structure that meet the criteria
specified in the input arguments. |
|
<find_relatedBusinesses>
|
<relatedBusinessesList>
|
Given the UUID of a <businessEntity>, this message
returns a list of UUIDs contained within a
<relatedBusinessList> structure for the other
businesses that have a relationship with this business. |
|
<find_service>
|
<serviceList>
|
Given the UUID of a <businessEntity> and either
the name of the service, the <tModel> of an
implemented specification, or the service category, this message returns
a list of all matching <businessService> documents
contained within a <serviceList> structure. |
|
<find_tModel>
|
<tModelList>
|
Given the a name, a category, or identifier, this message returns all
matching <tModel> structures contained within a
<tModelList> structure. |
|
UDDI Response Structure
Many response messages return an XML document that contains zero or
more of the primary UDDI data structures, rather than the data
structures themselves. For example, the
<find_business> message returns zero or more
<businessInfo> structures, but does so in a
<businessList> structure. The
<businessList> structure is merely another data
structure designed to hold zero or more other elements, similar to a
Java Collection object. Don't confuse collection structures such as
<businessList> with the primary UDDI data
structures; they exist only for
grouping. |
The UDDI Programmer's API and UDDI Schema documents identify dozens of
different structures used to make up the request and response messages. The
Programmer's API identifies the structure of the request and response
messages, paying particular attention to the input parameters for every
request message. The UDDI Schema represents the same data structures, but
provides datatyping and constraint information that can't be conveyed in the
Programmer's API. When doing any development with UDDI, you should keep a copy
of these two documents.
Traversing UDDI data structures can be complicated. To demonstrate this
complexity, let's delve into the inner workings of the
<find_business> message. The
<find_business> message returns a
<businessList> structure. Here's the definition of
<businessList> from the UDDI Schema:
<element name="businessList" type="uddi:businessList" />
<complexType name="businessList">
<sequence>
<element ref="uddi:businessInfos" />
</sequence>
<attribute name="generic" use="required" type="string" />
<attribute name="operator" use="required" type="string" />
<attribute name="truncated" use="optional" type="uddi:truncated" />
</complexType>
This definition says that a <businessList> contains a
single <businessInfos> subelement (defined in the same
schema, as indicated by the preceding uddi:) and three attributes
named generic, operator, and truncated.
Doesn't tell us much, does it? So, let's delve further. The schema for the
<businessInfos> structure is:
<element name="businessInfos" type="uddi:businessInfos" />
<complexType name="businessInfos">
<sequence>
<element ref="uddi:businessInfo" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
This definition tells us that a <businessInfos>
structure contains zero or more <businessInfo> subelements,
which are also defined in the same schema document. minOccurs="0"
and maxOccurs="unbounded" tell us that the included
<businessInfo> elements can be repeated zero or more times.
We now need to seek out the schema definition of the
<businessInfo> structure, which is:
<element name="businessInfo" type="uddi:businessInfo" />
<complexType name="businessInfo">
<sequence>
<element ref="uddi:name" maxOccurs="unbounded" />
<element ref="uddi:description" minOccurs="0" maxOccurs="unbounded" />
<element ref="uddi:serviceInfos" />
</sequence>
<attribute name="businessKey" use="required" type="uddi:businessKey" />
</complexType>
This structure contains three subelements and an attribute. The attribute,
businessKey, is the UUID for this business. The first subelement,
<name>, gives the name of the business. The second
subelement, <description>, is zero or more text elements
that describe what the business does. The third subelement,
<serviceInfos>, is a grouping of
<businessService> documents. To figure out what a
<businessService> document is, we must search the schema
for the <serviceInfos> element.
Searching for this schema is left as the proverbial "exercise for the
reader." At this stage, you should have an idea of the complexity of UDDI data
structures and their navigation. An entire book could be dedicated to
exploring every facet of the UDDI Programmers API. The rest of this chapter
focuses on how to interact with UDDI and presents Java clients that demystify
some of the complexity in the UDDI API and its data structures.
New on the Java Boutique:
New Review:
Time Management Made Easy with the Quartz Enterprise Job Scheduler
Why not just use the Java timer API? This open source scheduling
API boasts simplicity, ease-of-integration, a well-rounded feature
set, and it's free!
New Applet:
Reverse Complement
Reverse Complement is a simple applet that converts DNA or RNA
sequences into three useful formats.
Elsewhere on internet.com:
WebDeveloper Java
Lots of Java information on webdeveloper.com
WDVL Java
Thorough Java resource at the Web Developer's Virtual Library.
ScriptSearch Java
Hundreds of free Java code files to download.
jGuru: Your View of the Java Universe
Customizable portal with online training, FAQs, regular news updates, and tutorials.