User Guide
Universal Description, Discovery and Integration (UDDI) registries are used in an enterprise to share Web services. Using UDDI services helps companies organize and catalog these Web services for sharing and reuse in the enterprise or with trusted external partners.
A UDDI registry service for Web services is defined by the UDDI specification available at:
http://www.oasis-open.org/committees/uddi-spec/doc/tcspecs.htm#uddiv3
This specification is a standard on which UDDI registries are based and provides the details on how to publish and locate information about Web services using UDDI. The specification does not define run-time aspects of the services (it is only a directory of the services). UDDI provides a framework in which to classify your business, its services, and the technical details about the services you want to expose.
Publishing a service to a registry requires knowledge of the service type and the data structure representing that service in the registry. A registry entry has certain properties associated with it and these property types are defined when the registry is created. You can publish your service to a registry and make it available for other organizations to discover and use. Proxy services developed in BEA AquaLogic Service Bus can be published to a UDDI registry.AquaLogic Service Bus can interact with any UDDI 3.0 compliant registry. BEA provides the AquaLogic Service Registry.
Figure 8-1 AquaLogic Service Bus integration with UDDI
AquaLogic Service Bus' Web-based interface to AquaLogic Service Registry makes the registry accessible and easy to use. In working with UDDI, AquaLogic Service Bus promotes the reuse of standards based Web services. In this way, AquaLogic Service Bus registry entries can be searched for and discovered and used by a wider audience. Web services and UDDI are built on a set of standards, so reuse promotes the use of acceptable, tested Web services and application development standards across the enterprise. The Web services and interfaces can be catalogued by type, function, or classification so that they can be discovered and managed more easily.
UDDI is based upon several established industry standards, including HTTP, XML, XML Schema (XSD), SOAP, and WSDL. The latest version of the UDDI specification is available at:
http://www.oasis-open.org/committees/uddi-spec/doc/tcspecs.htm#uddiv3
The UDDI specification describes a registry of Web services and its programmatic interfaces. UDDI itself is a set of Web services. The UDDI specification defines services that support the description and discovery of:
A UDDI registry stores data and metadata about business services. It is a standards-based library of catalogued and managed information about Web services for discovery and reuse by other applications. UDDI offers several benefits to IT managers at both design time and run time, including increasing code reuse. It also provides benefits to developers, including the following:
UDDI uses a specific data model to represent entities that define organizations and services. Figure 8-2 shows the relationship between different UDDI entities.
Figure 8-2 UDDI Entities Representing Organizations and Services
A high-level overview of the UDDI entities is provided.
For more information on the UDDI data model and entities used in UDDI, see Introduction to BEA AquaLogic Service Registry in BEA AquaLogic Service Registry 2.0 User's Guide.
Before using AquaLogic Service Bus with a UDDI registry you must perform the following tasks:
AquaLogic Service Bus works with any UDDI registry that is fully compliant with the version 3 implementation of UDDI (Universal Description, Discovery and Integration).
AquaLogic Service Registry 2.0 is a version 3 UDDI-compliant registry and is certified to work with AquaLogic Service Bus.
The AquaLogic Service Bus Console provides you with access to any version 3 compliant UDDI registry once it has been set up to work with AquaLogic Service Bus. The following features are available:
For more information on how to configure and search the registry, import business services to AquaLogic Service Bus, and how to publish proxy services to a UDDI registry, see the following topics in System Administration in Using the AquaLogic Service Bus Console:
BEA AquaLogic Service Registry is a fully version 3 compliant implementation of UDDI and is a key component of a Service Oriented Architecture (SOA).
Note: AquaLogic Service Registry is not provided with AquaLogic Service Bus.It is licensed independently from Systinet and BEA.
A UDDI registry provides a standards-based foundation infrastructure for locating services, invoking services, and managing metadata about services (security, transport or quality of service). Using the Registry Console you can browse and publish registry content. The Registry Console is the primary console for administrators to perform registry management. You can launch the ALSR console in a Web browser by opening the following URL: http://hostname:port/uddi/web
, where Host name and port are defined when AquaLogic Service Registry is installed. The default port is 8080. For more information on the management of AquaLogic Service Registry, particularly configuring the registry and managing permissions, approval, and replication, see the BEA AquaLogic Service Registry Administrator's Guide.
The following are two sample business scenario that highlight the benefit of using UDDI.
Basic Proxy Service Communication with a UDDI Registry
This scenario describes how you can use AquaLogic Service Bus to import services form a registry and then publish the services back to a registry as part of an AquaLogic Service Bus proxy service.
AquaLogic Service Bus imports business services from a UDDI registry. Proxy services are configured to communicate with the business services in the Message Flow. The proxy services themselves can be published back to the registry and made available for use by others.
Figure 8-3 Proxy Service Communication with a UDDI Registry
This scenario describes cross-domain deployment using AquaLogic Service Bus. An AquaLogic Service Bus application in one domain wants to invoke another AquaLogic Service Bus service in another domain at run time.
An instance of AquaLogic Service Bus is deployed in each of two domains. The AquaLogic Service Bus Proxy service (P1) is configured in domain (D1). The AquaLogic Service Bus Proxy service (P2) in domain (D2) wants to access proxy service (P1). As the domains can not communicate directly with each other, P2 in D2 can not discover P1 in D1. The AquaLogic Service Bus import/export feature does not support run-time discovery of services in different domains, but publishing the service to a publicly available UDDI registry allows for the discovery of the service in any domain. Once P1 is made available in the UDDI registry it can be invoked at run time (for example, get a stock quote) and imported as a business services in another AquaLogic Service Bus proxy service.
When importing and exporting from different domains you must have network connectivity. A proxy service might reference schemas located in the repository of a different domain, in which case it needs HTTP access to the domain to import using the URL. In the absence of connectivity an error message will be returned.
Figure 8-4 Sample Business Case of Cross Domain Deployment
You can use the AquaLogic Service Bus Console to
Figure 8-5 shows the typical workflow for using UDDI with AquaLogic Service Bus.
You can configure a UDDI registry, make it available in AquaLogic Service Bus, and then publish AquaLogic Service Bus proxy services to it or import business services from the registry to be used in a proxy service. You must be in an active AquaLogic Service Bus session in the AquaLogic Service Bus Console to configure the registry.
The following table describes the configuration properties for a UDDI registry. Every registry has a set of properties that must be configured. When configuring a UDDI registry, the Inquiry URL is required. The Service account is also required to permit access to the registry when publishing a service.When specifying the configuration settings, the following cases are worth noting:
When publishing services to AquaLogic Service Registry, to gain access to the registry, you must be authenticated and have a valid username and password. The username and password is implemented in AquaLogic Service Bus as a service account resource (using credentials). Service accounts must be defined before configuring proxy services so that the authentication criteria is set up to work with a service during the configuration of the proxy service. To create a service account in AquaLogic Service Bus, see "Adding a Service Account" in Service Accounts in Using the AquaLogic Service Bus Console.
You can set up registries with multiple username and passwords allowing different users to have different permissions based on the service account. Permissions in AquaLogic Service Registry were developed so that administrators can manage users' rights in BEA AquaLogic Service Registry and create views into the registry, specific to the needs of the different user types. User permissions set in AquaLogic Service Bus govern access to the registries, their content, and the functionality available to you.
You can use the AquaLogic Service Bus Console to publish proxy services to AquaLogic Service Registry You must have an account set up in AquaLogic Service Registry to do this. You can publish any proxy service to a UDDI registry. The service types and transports are listed in Table 8-3.
You can select the Business Entity under which a service is to be published. Business Entity Administration (including creation, removal, update and deletion of entities) is done using the management console provided by the registry vendor (the Business Service Console in the case of AquaLogic Service Registry). The first time you publish to a registry you must load the tModels to that registry. This is done at the same time you configure the publishing details in the AquaLogic Service Bus Console. For more information on how to publish to a UDDI registry, see "Publishing a Proxy Service to a UDDI Registry" in System Administration in Using the AquaLogic Service Bus Console.
AquaLogic Service Bus works with any UDDI version 3 registry. Generally in a large organization the systems administrator is responsible for creating and setting up the registries. The service account must be set up before a service (proxy service in AquaLogic Service Bus) can be published as a business entity to the registry.
You can import services from a registry as AquaLogic Service Bus business services. When importing a WSDL-based service, if multiple UDDI binding templates are encountered, AquaLogic Service Bus creates a different business service for each binding template.
Access to registries in AquaLogic Service Bus is established by someone who has AquaLogic Service Bus system administration privileges for the UDDI registries. The registry entries automatically appear in the Import page of the AquaLogic Service Bus Console. When importing, you make a selection from the list of available registries. To discover a service in a registry you must query a specific registry. Entries in registries are unique. This query is performed when you specify what registry you want to use for importing a service.
You can import the following business services types from a UDDI registry into AquaLogic Service Bus:
For information on how to use the AquaLogic Service Bus Console to import services from a UDDI registry, see "Importing a Business Service from a UDDI Registry" in System Administration in Using the AquaLogic Service Bus Console.
When a service is updated, you must re-import the service from the registry to get the most up to date version.
Services have documents associated with them and these documents can include a number of other documents (schemas, policies, and so on.). On import, the UDDI registry points to the document location based on the inquiry URL of the service. When a document that includes or references other resources is located, all of the referenced information and each included item is added as a separate resource in AquaLogic Service Bus.
Business Entity and pattern are the criteria used to search for a service in a registry. For example, you can enter foo%
, when searching for a service. Services published by AquaLogic Service Bus have specific tmodel keys identifying the service that are used when searching for the service in the registry.
Import automatically tries to connect to a registry as you are attempting to get the list of business entities from the registry. The Business Entity is the highest level of organization in the registry, though you can use other search criteria, such as business, application type, and so on. If you require authentication, then you need a username and password which you must get from your systems Administrator.
http://www.oasis-open.org/committees/uddi-spec/doc/tns.htm
. One of the most important Technical Notes is Using WSDL in a UDDI Registry.http://uddi.org/solutions.html
.http://www.oasis-open.org/committees/uddi-spec/doc/tcspecs.htm
.
AquaLogic Service Bus proxy service attributes must be mapped to the data model supported by the UDDI registry to allow a proxy service to be published as a UDDI business entity. The following table shows the service types, message types, and transports relevant to the UDDI registry mapping for an AquaLogic Service Bus proxy service.
Proxy services have attributes in common and also attributes that are specifically defined by the transport protocols used by the service and the type of service. Each proxy service can deliver messages of a certain type.
The primary relevant entities in UDDI are:
Figure 8-6 shows how WSDL-based services are mapped to UDDI business entities.
Figure 8-6 WSDL Service to UDDI Mapping
The technical note Using WSDL in a UDDI registry, version 2.0.2, at http://www.oasis-open.org/committees/uddi-spec/doc/tns.htm
, is used as the basis for publishing WSDL-based proxy services to the UDDI registry. This document is also used as a reference point for publishing non WSDL-based services. The document and the base UDDI specification describe the canonical technical models (tModels) used to describe UDDI entities. To publish AquaLogic Service Bus proxy services as entities in the UDDI registry, you must add additional canonical tModels to support some of the AquaLogic Service Bus specific constructs. Not all attributes of an AquaLogic Service Bus proxy service are useful when searching for a service, such as service type and transport details. These attributes do not categorize the service, they are useful things to know about a service and are configuration details of the service once it has been discovered. These configuration details are mapped to the business service binding template tmodelinstanceDetails
section.Other attributes specifically identify a service and can be used as the search criteria for the service. These attributes are mapped using keyed references to tModels with values in the category bag of the binding template.
An example of how AquaLogic Service Bus maps to UDDI is shown in Figure 8-7.
Figure 8-7 AquaLogic Service Bus to UDDI Mapping
AquaLogic Service Bus high-level proxy service information maps into the Business Service as follows:
businessService elements
.uddi:bea.com:attributes:aqualogicservicebus
.uddi:bea.com:servicetype
.keyedReference
in the AquaLogic Service Bus keyedReferenceGroup
(Name = "AquaLogicServiceBus
", Values = URL of the AquaLogic Service Bus instance). This instance serves two purposes:Listing 8-1 shows a mapping of high-level proxy service information to a business service.
Listing 8-1 Sample Proxy Service to Business Service Mapping
<keyedReferenceGroup tModelKey="uddi:bea.com:servicebus:properties">
<keyedReference tModelKey="uddi:bea.com:servicebus:servicetype"
keyName="Service Type"
keyValue="SOAP"/>
<keyedReference tModelKey="uddi:bea.com:servicebus:instance"
keyName="Service Bus Instance"
keyValue="http://FOO02.amer.bea.com:7001"/>
</keyedReferenceGroup
Note: The key for the businessService created when a proxy service is published is a publisher assigned key name. It is derived from the AquaLogic Service Bus domain name, the path of the proxy service, and the proxy service name. It takes the following form: uddi:bea.com:servicebus:<domainname>:<path>:<servicename>
.
For example, an AquaLogic Service Bus domain, AnonESB, contains a project Proxies, which contains a folder named Accounting, which in turn contains a proxy service called PayoutProxy. When PayoutProxy is published to UDDI, its businessService is created with the following key: uddi:bea.com:servicebus:AnonESB:Proxies:Accounting:PayoutProxy.
AquaLogic Service Bus detailed proxy service information maps into the binding template as follows:
Listing 8-2 shows a detailed information mapping to the binding template.
Listing 8-2 Sample Detailed Mapping to the Binding Template
<bindingTemplate bindingKey="uddi:" serviceKey="uddi:">
<accessPointuseType="endPoint">file:///c:/temp/in3</accessPoint>
<tModleInstanceDetails>
<tModleInstanceInfo tModelKey= "uddi:uddi.org:transport:file">
<InstanceDetails>
<InstanceParms><ALSBInstanceParms xmlns="http://www.bea.com/wli/sb/uddi">
<property name="fileMask" value="*.*"/>
<property name="sortByArrival" value="false"/> </ALSBInstanceParms>
</InstanceParms>
</InstanceDetails>
</tModelInstanceInfo>
<tModleInstanceInfo tModelKey="uddi:bea.com:servicebus:protocol:
messagingservice">
<InstanceDetails>
<InstanceParms><ALSBInstanceParms xmlns="http://www.bea.com/wli/sb/uddi">
<property name="requestType" value="XML"/>
<property name="RequestSchema" value="http://domain.com:7001
/sbresource?SCHEMA%2FDJS%2FOAGProcessPO"/>
<property name="RequestSchemaElement"
value="PROCESS_PO"/>
<property name="responseType" value="None"/></ALSBInstanceParms>
</InstanceParms>
</InstanceDetails>
</tModelInstanceInfo>
</tModelInstanceDetails>
Each of the transport types in the uddi:uddi.org:transport:*
group has a different set of detailed metadata. (See Table 8-4.) This metadata provides configuration details of the transport for the proxy service. It is not useful for characterizing the service nor useful in querying the service. However, after the service has been discovered, this data is needed to access the service. The metadata is represented by an XML string and is located in the instanceParms
field in tModelInstanceInfo
.
For example, if you are mapping a proxy service that uses the HTTP transport, and as part of the HTTP configuration you need to describe some detailed configuration details, including the required client authorization and the request and response character encoding, the following listing provides an example of what must appear in the bindingTemplate tModelInstanceDetails
.
Listing 8-3 Example of tModelInstanceDetails
<tModelInstanceDetails>
<tModelInstanceInfo tModelKey="uddi:uddi.org:transport:http">
<instanceDetails>
<instanceParms>
<ALSBInstanceParms xmlns="http://www.bea.com/wli/sb/uddi">
<property name="basic-auth-required" value="true"/>
<property name="request-encoding" value="iso-8859-1"/>
<property name="response-encoding" value="utf-8"/>
<property name="Scheme" value="http"/>
</ALSBInstanceParms>
</instanceParms>
</instanceDetails>
</tModelInstanceInfo>
</tModelInstanceDetails>
Note: For each transport, the service endpoint is always stored in the bindingTemplate's accessPoint
field.
Table 8-5 is organized by transport type and lists the tModelKey and InstanceParms used by each of the transports.
Email1 |
accessPoint
in the Binding Template for an Email Transport uses the standard mailto
URL format: mailto:name@some_server.com This is different than the one configured for the proxy service in AquaLogic Service Bus, which is a URL oriented toward reading email.It is not be possible to derive this mailto
URL from the proxy service definition as the server name is not known. For example, if the proxy service is defined to read from a POP3 server, it might be defined with a URL such as mailfrom:pop3.bea.com
. When publishing such a proxy service, a dummy server is added. In the above example, the published URL will take the form mailto:some_name@some_server
.com.Table 8-6 provides a high-level description of each of the service types.
WSDL based proxies map to UDDI based on the Using WSDL in a UDDI Registry, version 2.0.2 technical note, which is available at the following URL:
|
|
A simple marker protocol in the tModel in the bindingTemplate's |
|
A simple marker protocol tModel in the bindingTemplate's |
|
A simple marker protocol tModel in the bindingTemplate's |
The AquaLogic Service Bus-UDDI mapping introduces a number of new canonical tModels that are used to represent AquaLogic Service Bus metadata and relationships. These tModels must be registered in the UDDI registry to support this mapping. You can create these tModels in AquaLogic Service Registry under the administrator ID.
The following table provides a summary of the new tModels.
The following is an example of the mapping for a Messaging Service, running over JMS with the request being XML with a Schema and the response being a text message.
Listing 8-4 Sample Messaging Service Mapping
<businessService
serviceKey="uddi:bea.com:servicebus:Domain:Project:JMSMessaging"
businessKey="uddi:9cb77770-57fe-11da-9fac-6cc880409fac"
xmlns="urn:uddi-org:api_v3">
<name>JMSMessagingProxy</name>
<bindingTemplates>
<bindingTemplate
bindingKey="uddi:4c401620-5ac0-11da-9faf-6cc880409fac"
serviceKey="uddi:bea.com:servicebus:
Domain:Project:JMSMessaging">
<accessPoint useType="endPoint">
jms://server.com:7001/weblogic.jms.XAConnectionFactory/
ReqQueue
</accessPoint>
<tModelInstanceDetails>
<tModelInstanceInfo tModelKey="uddi:uddi.org:transport:jms">
<instanceDetails>
<instanceParms>
<ALSBInstanceParms
xmlns="http://www.bea.com/wli/sb/uddi"><property name="is-queue" value="true"/>
<property name="request-encoding"
value="iso-8859-1"/>
<property name="response-encoding"
value="utf-8"/>
<property name="response-required"
value="true"/>
<property name="response-URI"
="jms://server.com:7001/
.jms.XAConnectionFactory/
RespQueue"/>
<property name="response-message-type"
value="Text"/>
<property name="Scheme" value="jms"/>
</ALSBInstanceParms>
</instanceParms>
</instanceDetails>
</tModelInstanceInfo>
<tModelInstanceInfo
tModelKey="uddi:bea.com:servicebus:
protocol:messagingservice">
<instanceDetails>
<instanceParms>
<ALSBInstanceParms xmlns=
"http://www.bea.com/wli/sb/uddi">
<property name="requestType" value="XML"/>
<property name="RequestSchema"
value="http://server.com:7001/
sbresource?SCHEMA%2FDJS%2FOAGProcessPO"/>
<property name="RequestSchemaElement"
value="PROCESS_PO_007"/>
<property name="responseType" value="Text"/>
</ALSBInstanceParms>
</instanceParms>
</instanceDetails>
</tModelInstanceInfo>
</tModelInstanceDetails>
</bindingTemplate>
</bindingTemplates>
<categoryBag>
<keyedReferenceGroup tModelKey="uddi:bea.com:servicebus:properties">
<keyedReference tModelKey="uddi:bea.com:servicebus:servicetype"
keyName="Service Type"
keyValue="Mixed" />
<keyedReference tModelKey="uddi:bea.com:servicebus:instance"
keyName="Service Bus Instance"
keyValue="http://cyberfish.bea.com:7001" />
</keyedReferenceGroup>
</categoryBag>
</businessService>