CentraSite UDDI Architecture
CentraSite behaves like an UDDI registry, as described in the UDDI specification. The main components of CentraSite's UDDI environment are:
The
CentraSite Registry or Repository, in which the UDDI objects are stored.
One or more UDDI servlets running on different application servers. Each UDDI servlet implements the web services of the UDDI API sets.
This figure illustrates the multiple UDDI servlet scenario, in which multiple UDDI clients and a JAXR client interact with a single CentraSite Registry or Repository:
Although, there can be multiple UDDI servlets, CentraSite installation is a single-node UDDI registry. Each UDDI servlet provides an alternative endpoint for the UDDI web services.
When UDDI data is stored in the CentraSite Registry or Repository, it is mapped to a data model that is common for JAXR and UDDI clients. The data model is an XML representation of JAXR data. Since this representation is also used to store data from the JAXR API, UDDI, and JAXR clients act on the same data.
Note:
JAXR instance-based security is the basis of the CentraSite UDDI security, so modifications made to the JAXR instance-based security may affect UDDI security.
Client Access using UDDI
UDDI clients can access the CentraSite registry using the:
URL for the inquiry API: http://<hostname>:53307/UddiRegistry/inquiry, where <hostname> is the name of the host machine. For example, if the UDDI client is running on the same machine as the UDDI servlet, the URL is http://localhost:53307/UddiRegistry/inquiry.
URL for the publish API: http://<hostname>:53307/UddiRegistry/publish.
Every UDDI servlet in a multiple UDDI servlet environment has these endpoints.
Localization
Localization for UDDI means that the error messages are localized. These messages are given in the content of an errorInfo element in the disposition report. Example of disposition report:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<soapenv:Fault>
<faultcode>Client</faultcode>
<faultstring>Client Error</faultstring>
<faultactor />
<detail>
<dispositionReport generic="3.0" xmlns="urn:uddi-org:api_v3">
<result errno="10120">
<errInfo errCode="E_authTokenRequired">
The authentication token value dummy passed in the authInfo
argument of the UDDI request is not valid.
</errInfo>
</result>
</dispositionReport>
</detail>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>
Modeling of the Node Business Entity
The modeling of the Node Business Entity is based on the Recommended Modeling of Node Business Entity in the UDDI 3.0.2 standard.
Key Generator tModel
The UDDI objects needed for the self-modeling of the node business entity have keys defined internally by CentraSite that belong to the key partition that is owned by the key generator:
<tModel
tModelkey="...:keyGenerator"
xmlns="urn:uddi-org:api_v3">
<name xml:lang="en-US">centrasite-node-com:keyGenerator</name>
<description xml:lang="en-US">
Key generator for self registering node business entity
</description>
<categoryBag>
<keyedReference
tModelkey="...:keyGenerator"
keyName="uddi-org:types:keyGenerator"
keyValue="keyGenerator"/>
</categoryBag>
</categoryBag>
</tModel>
The key generator is preloaded in the UDDI registry.
Node Business Entity
The node business entity that is preloaded into the Registry or Repository looks like this:
<businessEntity
businessKey="...">
<name xml:lang="en-US">NodeBusinessEntity</uddi:name>
<description xml:lang="en-US">
Node Business Entity of the CentraSite UDDI registry
</description>
<categoryBag>
<uddi:keyedReference
keyName=""
keyValue="node"
tModelkey="...:keyGenerator"/>
</categoryBag>
</businessEntity>
The node business entity references certain businessService objects which reflect the UDDI API sets. The first UDDI registry interacting with the Registry or Repository adds the businessService objects. It also adds the bindingTemplate objects pointing to the API set's endpoints offered by the UDDI registry. Every additional UDDI registry in a multiple UDDI servlet environment adds bindingTemplate objects pointing to the additional endpoints where the UDDI services can be called. The tModels referenced by the businessService objects are preloaded into the UDDI registry. Due to the fact that multiple bindingTemplate objects are defined for each UDDI registry, the bindingTemplate objects get node generated keys.
The web services that implement the UDDI API sets are registered in the UDDI registry. For CentraSite, only the supported API sets are reflected by this self-registration. These are:
Inquiry API set
Publication API set
Security Policy API set
Custody and Ownership Transfer API Set
Inquiry API Set
<businessService
serviceKey="uddi:centrasite.node.com:service_inquiry"
businessKey="..."
xmlns="urn:uddi-org:api_v3">
<name xml:lang="en-US">UDDI Inquiry Services</name>
<description xml:lang="en-US">Web Service supporting UDDI Inquiry APIs
</description>
<bindingTemplates>
<bindingTemplate
bindingKey="..."
serviceKey="uddi:centrasite.service.com:inquiry">
<description xml:lang="en-US">
This binding supports the UDDI Programmer's API Specification
For inquiry
</description>
<accessPoint useType="endPoint">
http://localhost:53307/UddiRegistry/inquiry
</accessPoint>
<tModelInstanceDetails>
<tModelInstanceInfo
tModelkey="...:keyGenerator">
<description xml:lang="en-US">
This access point supports the UDDI Version 2.0
Programmer's API Specification for inquiry
</description>
</tModelInstanceInfo>
</tModelInstanceDetails>
</bindingTemplate>
<bindingTemplate
bindingKey="..."
serviceKey="uddi:centrasite.node.com:service_inquiry">
<description xml:lang="en-US">
This binding supports the UDDI Programmer's API Specification
for inquiry
</description>
<accessPoint useType="endPoint">
http://localhost:53307/UddiRegistry/inquiry
</accessPoint>
<tModelInstanceDetails>
<tModelInstanceInfo tModelkey="...:keyGenerator">
<description xml:lang="en-US">
This access point supports the UDDI Version 3.0
Programmer's API Specification for inquiry
</description>
</tModelInstanceInfo>
</tModelInstanceDetails>
</bindingTemplate>
</bindingTemplates>
</businessService>
Publish API Set
<businessService
serviceKey="uddi:centrasite.node.com:service_publish"
businessKey="..."
xmlns="urn:uddi-org:api_v3">
<name xml:lang="en-US">UDDI Publish API Services</name>
<description xml:lang="en-US">
Web Service supporting UDDI specifications
</description>
<bindingTemplates>
<bindingTemplate
bindingKey="..."
serviceKey="uddi:centrasite.node.com:service_publish">
<description xml:lang="en">
This binding supports the UDDI Programmer's API Specification
for publication
</description>
<accessPoint useType="endPoint">
http://localhost:53307/UddiRegistry/publish
</accessPoint>
<tModelInstanceDetails>
<tModelInstanceInfo
tModelkey="...:keyGenerator">
<description xml:lang="en">
This binding supports the UDDI Version 2.0 Programmer's
API Specification for publication
</description>
</tModelInstanceInfo>
</tModelInstanceDetails>
</bindingTemplate>
<bindingTemplate
bindingKey="uddi:centrasite.node.com:binding_publish_v3"
serviceKey="uddi:centrasite.node.com:service_publish">
<description xml:lang="en">
This binding supports the UDDI Programmer's API Specification
for publication
</description>
<accessPoint useType="endPoint">
http://localhost:53307/UddiRegistry/publish
</accessPoint>
<tModelInstanceDetails>
<tModelInstanceInfo tModelkey="...:keyGenerator">
<description xml:lang="en">
This binding supports the UDDI Version 3.0 Programmer's
API Specification for publication
</description>
</tModelInstanceInfo>
</tModelInstanceDetails>
</bindingTemplate>
</bindingTemplates>
</businessService>
Security API Set
<businessService
serviceKey="uddi:centrasite.node.com:service_security"
businessKey="..."
xmlns="urn:uddi-org:api_v3">
<name xml:lang="en">UDDI Security Service</name>
<description xml:lang="en-US">
Web Service supporting UDDI Security API
</description>
<bindingTemplates>
<bindingTemplate
bindingKey="..."
serviceKey=" uddi:centrasite.node.com:service_security">
<description xml:lang="en">
This binding to authenticate with the UDDI services using the
UDDI Security API.
</description>
<accessPoint useType="endPoint">
http://localhost:53307/UddiRegistry/publish
</accessPoint>
<tModelInstanceDetails>
<tModelInstanceInfo tModelkey="...:keyGenerator">
<description xml:lang="en">
This binding's supports the UDDI v3 Security API.
</description>
</tModelInstanceInfo>
</tModelInstanceDetails>
</bindingTemplate>
</bindingTemplates>
</businessService>
Custody and Ownership Transfer API Set
<businessService
serviceKey="uddi:centrasite.node.com:service_ownership_transfer"
businessKey="..."
xmlns="urn:uddi-org:api_v3">
<name xml:lang="en">UDDI Custody and Ownership Transfer API</name>
<description xml:lang="en-US">
Web Service providing partly support for the UDDI Custody and Ownership
Transfer API
</description>
<bindingTemplates>
<bindingTemplate
bindingKey="uddi..."
serviceKey=" uddi:centrasite.node.com:service_ownership_transfer">
<description xml:lang="en-US">
This binding provides partly support for the UDDI Custody and
Ownership Transfer API.
</description>
<accessPoint useType="endPoint">
http://localhost:53307/UddiRegistry/publish
</accessPoint>
<tModelInstanceDetails>
<tModelInstanceInfo
tModelkey="...:keyGenerator">
<description xml:lang="en-US">
This binding provides partly support for the UDDI
Custody and Ownership Transfer API
</description>
</tModelInstanceInfo>
</tModelInstanceDetails>
</bindingTemplate>
</bindingTemplates>
</businessService>
WSDL
The referenced tModels refer to the WSDL file as follows. Each port, specified by the <port> element, specifies an access point. The WSDL representation is a description of the web services that are provided by the UDDI servlets:
<?xml version="1.0" encoding="UTF-8"?>
<definitions name="UDDI_API_V3"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:api_v3_binding="urn:uddi-org:api_v3_binding"
xmlns:tns="urn:uddi-org:api_v3"
targetNamespace="urn:uddi-org:api_v3">
<documentation>
UDDI V3 Security, Publication, Inquiry and Transfer APIs.
</documentation>
<import
namespace="urn:uddi-org:api_v3_binding"
location="http://uddi.org/wsdl/uddi_api_v3_binding.wsdl"/>
<import
namespace="urn:uddi-org:api_v3_binding"
location="http://uddi.org/wsdl/uddi_custody_v3_binding.wsdl"/>
<service name="UDDI_Security_SoapService">
<port
name="UDDI_Security_PortType"
binding="api_v3_binding:UDDI_Security_SoapBinding">
<soap:address
location="http://localhost:53307/UddiRegistry/publish"/>
</port>
</service>
<service name="UDDI_Publication_SoapService">
<port
name="UDDI_Publication_PortType"
binding="api_v3_binding:UDDI_Publication_SoapBinding">
<soap:address
location="http://localhost:53307/UddiRegistry/publish"/>
</port>
</service>
<service name="UDDI_Inquiry_SoapService">
<port
name="UDDI_Inquiry_PortType"
binding="api_v3_binding:UDDI_Inquiry_SoapBinding">
<soap:address
location="http://localhost:53307/UddiRegistry/inquiry"/>
</port>
</service>
<service name="UDDI_Ownership_Transfer_SoapService">
<port
name="UDDI_Inquiry_PortType"
binding="api_v3_binding:UDDI_Inquiry_SoapBinding">
<soap:address
location="http://localhost:53307/UddiRegistry/inquiry"/>
</port>
</service>
</definitions>
The WSDL defines the proper endpoints of each web service. Each UDDI registry adds a port pointing to its endpoints. The first UDDI registry also inserts the service elements. The WSDL file can be accessed through these URIs:
http://localhost:53307/UddiRegistry/inquiry?WSDL http://localhost:53307/UddiRegistry/publish?WSDL The WSDL is stored in the CentraSite repository.