Various extensions to the UDDI standard have been published by the standards bodies OASIS and W3C. The extensions described below are implemented in CentraSite's UDDI environment.
Since a UDDI registry houses information about web services and their providers, it is essential that the information contained in a web service's WSDL document is accurately mapped to the UDDI data model. This means that subsequent search operations to discover a registered web service are possible, based on the information that is mapped from the WSDL.
OASIS has published a recommendation for how the WSDL-to-UDDI mapping should be implemented, and CentraSite implements this recommendation fully. The technical description of the OASIS recommendation for implementing the WSDL-to-UDDI mapping is contained in the OASIS web site in the document https://www.oasis-open.org/committees/uddi-spec/doc/tn/uddi-spec-tc-tn-wsdl-v2.htm.
An XML-based expression grammar for policies is described in the Web Services Policy Framework (WS-Policy) specification, published by the W3C at http://www.w3.org/Submission/WS-PolicyAttachment/. The specification also describes how a policy can be associated with a registry object.
The CentraSite UDDI registry supports WS-PolicyAttachment version 1.2 and 1.5. Policy attachments can be either WSDL-based or UDDI-based. Currently, CentraSite supports UDDI-based policy attachments. With UDDI-based policy attachments, the policies are modeled in the UDDI registry using UDDI elements.
The CentraSite WS-PolicyAttachment support for version 1.2 covers the following aspects of the WS-PolicyAttachment specification:
CentraSite supports the UDDI-based policy attachments for the following policy subjects:
Service Provider Policy Subject
Service Policy Subject
Endpoint Policy Subject
An example for a remote policy reference is shown by the following uddi:businessService that is taken from the WS-PolicyAttachment specification:
<businessService serviceKey="…" > <name>…</name> <description>…</description> <bindingTemplates>…</bindingTemplates> <categoryBag> <keyedReference keyName="Policy Expression for example's Web services" keyValue="http://www.example.com/myservice/policy" tModelKey="uuid:a27078e4-fd38-320a-806f-6749e84f8005" /> </categoryBag> </businessService>
The uddi:businessService is attached to a WS-Policy that accessible through the URL http://www.example.com/myservice/policy. The uddi:keyedReference represents the attachment. It is referencing the remote policy reference category system via its uddi:tModelKey and its value holds the URI of the policy document.
A reusable policy expression is represented by a dedicated uddi:tModel in the UDDI registry. The following uddi:tModel shows an example:
<tModel tModelKey="uuid:04cfa…"> <name>…</name> <description xml:lang="EN"> Policy Expression for example's Web services </description> <overviewDoc> <description xml:lang="EN">WS-Policy Expression</description> <overviewURL>http://www.example.com/myservice/policy</overviewURL> </overviewDoc> <categoryBag> <keyedReference keyName="Reusable policy Expression" keyValue="policy" tModelKey="uuid:fa1d77dc-edf0-3a84-a99a-5972e434e993" /> <keyedReference keyName="Policy Expression for example's Web services" keyValue="http://www.example.com/myservice/policy" tModelKey="uuid:a27078e4-fd38-320a-806f-6749e84f8005" /> </categoryBag> </tModel>
The uddi:tModel comes with two uddi:keyedReferences. The first uddi:keyedReference specifies the uddi:tModel to represent a reusable policy expression. The second one points to the document holding the policy expression. An example that shows the attachment of a reusable policy expression is given by the following uddi:businessService:
<businessService serviceKey="…" > <name>…</name> <description>…</description> <bindingTemplates>…</bindingTemplates> <categoryBag> <keyedReference keyName="Policy Expression for example's Web services" keyValue="uuid:04cfa…" tModelKey="uuid:a27f7d45-ec90-31f7-a655-efe91433527c" /> </categoryBag> </businessService>
The uddi:businessService holds a keyedReference pointing to the uddi:tModel holding the reusable policy expression. The uddi:tModelKey of the uddi:keyedReference points to the local policy reference uddi:tModel.
CentraSite supports UDDI-based policy attachments for UDDI version 2 and 3.
CentraSite provides the tModels necessary to support UDDI-based WS-PolicyAttachments. These tModels from version 1.2 are described in this section.
This tModel is used to attach a policy to a UDDI entity by referencing the policy's URI.
<tModel tModelKey="uddi:schemas.xmlsoap.org:remotepolicyreference:2003_03" > <name>http://schemas.xmlsoap.org/ws/2003/03/remotepolicyreference</name> <description xml:lang="EN"> Category system used for UDDI entities to point to an external WS-PolicyAttachment Policy Expression that describes their characteristics. See WS-PolicyAttachment specification for further details. </description> <categoryBag> <keyedReference keyName="uddi-org:types:categorization" keyValue="categorization" tModelKey="uuid:c1acf26d-9672-4404-9d70-39b756e62ab4" /> </categoryBag> </tModel>
This tModel is used to categorize tModels as representing Policy Expressions. There is only one valid value, namely "policy", that indicates this very fact. It is RECOMMENDED that tModels categorized as representing Policy Expressions reference no more and no less than this very Policy Expression using the Remote Policy Reference category system.
<tModel tModelKey=" uddi:schemas.xmlsoap.org:policytypes:2003_03" > <name>http://schemas.xmlsoap.org/ws/2003/03/policytypes</name> <description xml:lang="EN"> WS-Policy Types category system used for UDDI tModels to characterize them as WS-Policy – based Policy Expressions. </description> <categoryBag> <keyedReference keyName="uddi-org:types:categorization" keyValue="categorization" tModelKey="uuid:c1acf26d-9672-4404-9d70-39b756e62ab4" /> </categoryBag> </tModel>
This tModel is used to attach a Policy Expression to a UDDI entity by referencing the UDDI entity that represents this Policy Expression. The Local Policy Reference category system is based on tModelKeys. It is expected that referenced tModels are registered with the same UDDI registry and are categorized as representing Policy Expressions using the WS-Policy Types category system.
UDDI Key (V3): uddi:schemas.xmlsoap.org:remotepolicyreference:2003_03 UDDI V1,V2 format key: uuid:a27f7d45-ec90-31f7-a655-efe91433527c Categorization: categorization Checked: Yes
<tModel tModelKey="uddi:schemas.xmlsoap.org:localpolicyreference:2003_03" > <name>http://schemas.xmlsoap.org/ws/2003/03/localpolicyreference</name> <description xml:lang="en"> Category system used for UDDI entities to point to a WS-Policy Policy Expression tModel that describes their characteristics. See WS-PolicyAttachment specification for further details. </description> <categoryBag> <keyedReference keyName="uddi-org:types:categorization" keyValue="categorization" tModelKey="uuid:c1acf26d-9672-4404-9d70-39b756e62aB4" /> <keyedReference keyName="uddi-org:entityKeyValues" keyValue="tModelKey" tModelKey="uuid:916b87bf-0756-3919-8eae-97dfa325e5a4" /> </categoryBag> </tModel>
The CentraSite WS-PolicyAttachment support for version 1.5 covers the same aspects as for version 1.2. Additionally, CentraSite provides the following tModels necessary to support UDDI-based WS-PolicyAttachments:
uddi:w3.org:ws-policy:v1.5:attachment:localpolicyreference
uddi:w3.org:ws-policy:v1.5:attachment:policytypes
uddi:w3.org:ws-policy:v1.5:attachment:remotepolicyreference
For the physical deletion of un-referenced tModels, CentraSite extends
the UDDI Publication API set. Appendix H of the UDDI V3 Specification describes
how UDDI can be extended. For removing a tModel from a registry, CentraSite
introduces the request purge_tModel
. This extension
is only supported for UDDI version 3.
The purge_tModel
request has the same
arguments as the delete_tModel
V3 request:
authInfo
: This optional argument is an element
that contains an authentication token.
tModelKey
: One or more required uddiKey
values that represent specific instances of known tModel data.
The request removes a hidden tModel from the registry that is not referenced by any other UDDI object.
On successful completion an empty message is returned.
In the case of an error, a disposition report will be returned within a SOAP fault. In addition to the errors which are common to all API calls, the following errors are relevant here:
E_invalidKeyPassed
: Signifies that one of the uddiKey
values passed did not match any known tModelKey values, or multiple instances
of the same tModelKey values were passed. The error is also returned if the
referenced tModel is not hidden, or it is still referenced. This means there
are four conditions for this error. The different conditions should be
reflected in the errInfo
element:
The specified tModel cannot be found
Multiple references to the same tModel
The specified tModel is not hidden
The specified tModel is still referenced
E_userMismatch
: Signifies that one or more of the
tModelKey values passed refers to data that is not owned by the individual
publisher who is represented by the authentication token.