Skip navigation.
Downloads | Product Documentation | Support

Programming WebLogic Web Services

# Publishing and Finding Web Services Using UDDI

The following sections provide information about publishing and finding Web Services using UDDI:

- Overview of UDDI
- WebLogic Server UDDI Features
- UDDI 2.0 Server
- UDDI Directory Explorer
- UDDI Client API
- Pluggable tModel

# Overview of UDDI

UDDI stands for Universal Description, Discovery and Integration. The UDDI Project is an industry initiative that is working to enable businesses to quickly, easily, and dynamically find and carry out transactions with one another.

A populated UDDI registry contains cataloged information about businesses, the services that they offer and communication standards and interfaces they use to conduct transactions.

Built on the Simple Object Access Protocol (SOAP) data communication standard, UDDI creates a global, platform-independent, open architecture space that will benefit businesses.

The UDDI registry can be broadly divided into two categories:

- UDDI and Web Services
- UDDI and Business Registry

For details about the UDDI data structure, see UDDI Data Structure.

## UDDI and Web Services

The owners of Web Services publish them to the UDDI registry. Once published, the UDDI registry maintains pointers to the Web Service description and to the service.

The UDDI allows clients to search this registry, find the intended service and retrieve its details. These details include the service invocation point as well as other information to help identify the service and its functionality.

Web Service capabilities are exposed through a programming interface, and usually explained through Web Services Description Language (WSDL). In a typical publish-and-inquire scenario, the provider publishes its business, registers a service under it and defines a binding template with technical information on its Web Service. The binding template also holds reference to one or several tModels, which represent abstract interfaces implemented by this Web Service. The tModels might have been uniquely published by the provider, with information on the interfaces and URL references to the WSDL document.

A typical client inquiry may have one of two objectives:

1. To seek an implementation of a known interface.

In other words, the client has a tModel ID and seeks binding templates referencing that tModel.

2. To seek the updated value of the invocation point (i.e., access point) of a known binding template ID.

## UDDI and Business Registry

As a Business Registry solution, UDDI enables companies to advertise the business products and services they provide, as well as how they conduct business transactions on the Web. This use of UDDI has the potential of fueling growth of business-to-business (B2B) electronic commerce.

The minimum required information to publish a business is a single business name. Once completed, a full description of a business entity may contain a wealth of information, all of which helps to advertise the business entity and its products and services in a precise and accessible manner.

A Business Registry may contain the following:

- Business Identification—Multiple names and descriptions of the business, comprehensive contact information and standard business identifiers such as a tax identifier.
- Categories—Standard categorization information (for example a D-U-N-S business category number).
- Service Description—Multiple names and descriptions of a service. As a container for service information, companies can advertise numerous services, while clearly displaying the ownership of services. The `bindingTemplate` information describes how to access the service.
- Standards Compliance—In some cases it is important to specify compliance with standards. These standards might display detailed technical requirements on how to use the service.
- Custom Categories—It is possible to publish proprietary specifications (tModels) that identify or categorize businesses or services.

## UDDI Data Structure

The data structure within UDDI is comprised of four constructions: a `businessEntity` structure, a `businessService` structure, a `bindingTemplate` structure and a `tModel` structure.

The following table outlines the difference between these constructions when used for Web Service or Business Registry applications.

Table 18-1 UDDI Data Structure

Data Structure | Web Service | Business Registry
--- | --- | ---
businessEntity | Represents a Web Service provider: Company name Contact detail Other business information | Represents a company, a division or a department within a company: Company name(s) Contact details Identifiers and Categories
businessService | A logical group of one or several Web Services. API(s) with a single name stored as a child element, contained by the business entity named above. | A group of services may reside in a single `businessEntity`. Multiple names and descriptions Categories Indicators of compliancy with standards
bindingTemplate | A single Web Service. Information provided here gives client applications the technical information needed to bind and interact with the target Web Service. Contains access point (i.e., URI to invoke a Web Service). | Further instances of standards conformity. Access points for the service in form of URLs, phone numbers, email addresses, fax numbers or other similar address types.
tModel | Represents a technical specification; typically a specifications pointer, or metadata about a specification document, including a name and a URL pointing to the actual specifications. In the context of Web Services, the actual specifications document is presented in the form of a WSDL file. | Represents a standard or technical specification, either well established or registered by a user for specific use.

# WebLogic Server UDDI Features

Weblogic Server provides the following UDDI features:

- UDDI 2.0 Server
- UDDI Directory Explorer
- UDDI Client API.
- Pluggable tModel

# UDDI 2.0 Server

The UDDI 2.0 Server is part of WebLogic Server and is started automatically when WebLogic Server is started. The UDDI Server implements the UDDI 2.0 server specification.

## Configuring the UDDI 2.0 Server

To configure the UDDI 2.0 Server:

1. Stop WebLogic Server.
2. Update the `uddi.properties` file, located in the `WL_HOME``/server/lib` directory, where `WL_HOME` refers to the main WebLogic Platform installation directory.

Warning: If your WebLogic Server domain was created by a user different from the user that installed WebLogic Server, the WebLogic Server administrator must change the permissions on the `uddi.properties` file to give access to all users.

3. Restart WebLogic Server.

Never edit the `uddi.properties` file while WebLogic Server is running. Should you modify this file in a way that prevents the successful startup of UDDI Server, refer to the `WL_HOME``/server/lib/uddi.properties.booted` file for the last known good configuration.

To restore your configuration to its default, remove the `uddi.properties` file from the `WL_HOME``/server/lib` directory. BEA strongly recommends that you move this file to a backup location, because a new `uddi.properties` file will be created and with its successful startup the `uddi.properties.booted` file will also be overwritten. After removing the properties file, start the server. Minimal default properties will be loaded and written to a newly created `uddi.properties` file.

The following section describes the UDDI Server properties that you can include in the `uddi.properites` file. The list of properties has been divided according to component, usage and functionality. At any given time, you do not need all these properties to be present.

## Configuring an External LDAP Server

The UDDI 2.0 Server is automatically configured with an embedded LDAP server. You can, however, also configure an external LDAP Server by following the procedure in this section.

Note: Currently, WebLogic Server supports only the SunOne Directory Server for use with the UDDI 2.0 Server.

To configure the SunOne Directory Server to be used with UDDI, follow these steps:

1. Create a file called `51acumen.ldif` in the `LDAP_DIR``/Sun/MPS/slapd-``LDAP_INSTANCE_NAME``/config/schema` directory, where `LDAP_DIR` refers to the root installation directory of your SunOne Directory Server and `LDAP_INSTANCE_NAME` refers to the instance name.
2. Update the `51acumen.ldif` file with the content described in 51acumen.ldif File Contents.
3. Restart the SunOne Directory Server.
4. Update the `uddi.properties` file of the WebLogic UDDI 2.0 Server, adding the following properties:

>     datasource.ldap.manager.password
>     datasource.ldap.manager.uid
>     datasource.ldap.server.root
>     datasource.ldap.server.url

The value of the properties depends on the configuration of your SunOne Directory Server. The following example shows a possible configuration that uses default values:

>     datasource.ldap.manager.password=password
>     datasource.ldap.manager.uid=cn=Directory Manager
>     datasource.ldap.server.root=dc=beasys,dc=com
>     datasource.ldap.server.url=ldap://host:port

See Table 18-11 for information about these properties.

5. Restart WebLogic Server.

### 51acumen.ldif File Contents

Use the following content to create the `51acumen.ldif` file:

>     dn: cn=schema
>     #
>     # attribute types:
>     #
>     attributeTypes: ( 11827.0001.1.0 NAME 'uddi-Business-Key'                DESC 'Business Key' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{41} SINGLE-VALUE X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.1 NAME 'uddi-Authorized-Name'             DESC 'Authorized Name for publisher of data' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{255} X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.2 NAME 'uddi-Operator'                    DESC 'Name of UDDI Registry Operator' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{255} X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.3 NAME 'uddi-Name'                        DESC 'Business Entity Name' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{258} X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.4 NAME 'uddi-Description'                 DESC 'Description of Business Entity' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{255} X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.7 NAME 'uddi-Use-Type'                    DESC 'Name of convention that the referenced document follows' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{255} X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.8 NAME 'uddi-URL'                         DESC 'URL' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{255} X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.9 NAME 'uddi-Person-Name'                 DESC 'Name of Contact Person' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{255} X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.10 NAME 'uddi-Phone'                      DESC 'Telephone Number' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{50} X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.11 NAME 'uddi-Email'                      DESC 'Email address' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{255} X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.12 NAME 'uddi-Sort-Code'                  DESC 'Code to sort addresses' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{10} X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.13 NAME 'uddi-tModel-Key'                 DESC 'Key to reference a tModel entry' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{255} SINGLE-VALUE X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.14 NAME 'uddi-Address-Line'               DESC 'Actual address lines in free form text' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{80} X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.15 NAME 'uddi-Service-Key'                DESC 'Service Key' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{41} SINGLE-VALUE X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.16 NAME 'uddi-Service-Name'               DESC 'Service Name' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{255} X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.17 NAME 'uddi-Binding-Key'                DESC 'Binding Key' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{41} SINGLE-VALUE X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.18 NAME 'uddi-Access-Point'               DESC 'A text field to convey the entry point address for calling a web service' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{255} X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.19 NAME 'uddi-Hosting-Redirector'         DESC 'Provides a Binding Key attribute to redirect reference to a different binding template' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{41} SINGLE-VALUE X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.20 NAME 'uddi-Instance-Parms'             DESC 'Parameters to use a specific facet of a bindingTemplate description' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{255} X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.21 NAME 'uddi-Overview-URL'               DESC 'URL reference to a long form of an overview document' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{255} X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.22 NAME 'uddi-From-Key'                   DESC 'Unique key reference to first businessEntity assertion is made for' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{41} SINGLE-VALUE X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.23 NAME 'uddi-To-Key'                     DESC 'Unique key reference to second businessEntity assertion is made for' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{41} SINGLE-VALUE X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.24 NAME 'uddi-Key-Name'                   DESC 'An attribute of the KeyedReference structure' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{255} X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.25 NAME 'uddi-Key-Value'                  DESC 'An attribute of the KeyedReference structure' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{255} X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.26 NAME 'uddi-Auth-Info'                  DESC 'Authorization information' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{4096} X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.27 NAME 'uddi-Key-Type'                   DESC 'The key for all UDDI entries' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{16} X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.28 NAME 'uddi-Upload-Register'            DESC 'The upload register' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{255} X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.29 NAME 'uddi-URL-Type'                   DESC 'The type for the URL' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{16} X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.30 NAME 'uddi-Ref-Keyed-Reference'        DESC 'reference to a keyedReference entry' SYNTAX 1.3.6.1.4.1.1466.115.121.1.12{255}  X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.31 NAME 'uddi-Ref-Category-Bag'           DESC 'reference to a categoryBag entry' SYNTAX 1.3.6.1.4.1.1466.115.121.1.12{255}  X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.32 NAME 'uddi-Ref-Identifier-Bag'         DESC 'reference to a identifierBag entry' SYNTAX 1.3.6.1.4.1.1466.115.121.1.12{255}  X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.33 NAME 'uddi-Ref-TModel'                 DESC 'reference to a TModel entry' SYNTAX 1.3.6.1.4.1.1466.115.121.1.12{255} SINGLE-VALUE X-ORIGIN 'acumen defined' )
>     # id names for each entry
>     attributeTypes: ( 11827.0001.1.34 NAME 'uddi-Contact-ID'                 DESC 'Unique ID which will serve as the Distinguished Name of each entry' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{16} SINGLE-VALUE X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.35 NAME 'uddi-Discovery-URL-ID'           DESC 'Unique ID which will serve as the Distinguished Name of each entry' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{16} SINGLE-VALUE X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.36 NAME 'uddi-Address-ID'                 DESC 'Unique ID which will serve as the Distinguished Name of each entry' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{16} SINGLE-VALUE X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.37 NAME 'uddi-Overview-Doc-ID'            DESC 'Unique ID which will serve as the Distinguished Name of each entry' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{16} SINGLE-VALUE X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.38 NAME 'uddi-Instance-Details-ID'        DESC 'Unique ID which will serve as the Distinguished Name of each entry' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{16} SINGLE-VALUE X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.39 NAME 'uddi-tModel-Instance-Info-ID'    DESC 'Unique ID which will serve as the Distinguished Name of each entry' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{16} SINGLE-VALUE X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.40 NAME 'uddi-Publisher-Assertions-ID'    DESC 'Unique ID which will serve as the Distinguished Name of each entry' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{16} SINGLE-VALUE X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.41 NAME 'uddi-Keyed-Reference-ID'         DESC 'Unique ID which will serve as the Distinguished Name of each entry' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{16} SINGLE-VALUE X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.42 NAME 'uddi-Ref-Attribute'              DESC 'a reference to another entry' SYNTAX 1.3.6.1.4.1.1466.115.121.1.12{255} X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.43 NAME 'uddi-Entity-Name'                DESC 'Business entity Name' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{258} X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.44 NAME 'uddi-tModel-Name'                DESC 'tModel Name' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{255} X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.45 NAME 'uddi-tMII-TModel-Key'            DESC 'tModel key referneced in tModelInstanceInfo' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{255} SINGLE-VALUE X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.46 NAME 'uddi-Keyed-Reference-TModel-Key' DESC 'tModel key referneced in KeyedReference' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{255} SINGLE-VALUE X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.47 NAME 'uddi-Address-tModel-Key'         DESC 'tModel key referneced in Address' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{255} SINGLE-VALUE X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.48 NAME 'uddi-isHidden'                   DESC 'a flag to indicate whether an entry is hidden' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{255} SINGLE-VALUE X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.49 NAME 'uddi-Time-Stamp'                 DESC 'modification time satmp' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{255} SINGLE-VALUE X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.50 NAME 'uddi-next-id'                    DESC 'generic counter' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.51 NAME 'uddi-tModel-origin'              DESC 'tModel origin' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.52 NAME 'uddi-tModel-type'                DESC 'tModel type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.53 NAME 'uddi-tModel-checked'             DESC 'tModel field to check or not' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.54 NAME 'uddi-user-quota-entity'          DESC 'quota for business entity' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.55 NAME 'uddi-user-quota-service'         DESC 'quota for business services per entity' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.56 NAME 'uddi-user-quota-binding'         DESC 'quota for binding templates per service' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.57 NAME 'uddi-user-quota-tmodel'          DESC 'quota for tmodels' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.58 NAME 'uddi-user-quota-assertion'       DESC 'quota for publisher assertions' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.59 NAME 'uddi-user-quota-messagesize'     DESC 'quota for maximum message size' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.60 NAME 'uddi-user-language'              DESC 'user language' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.61 NAME 'uddi-Name-Soundex'               DESC 'name in soundex format' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{258} X-ORIGIN 'acumen defined' )
>     attributeTypes: ( 11827.0001.1.62 NAME 'uddi-var'                        DESC 'generic variable' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'acumen defined' )
>     #
>     # objectclasses:
>     #
>     objectClasses: ( 11827.0001.2.0 NAME 'uddi-Business-Entity'              DESC 'Business Entity object' SUP top STRUCTURAL MUST (uddi-Business-Key $ uddi-Entity-Name $ uddi-isHidden $ uddi-Authorized-Name ) MAY ( uddi-Name-Soundex $ uddi-Operator $ uddi-Description $ uddi-Ref-Identifier-Bag $ uddi-Ref-Category-Bag ) X-ORIGIN 'acumen defined' )
>     objectClasses: ( 11827.0001.2.1 NAME 'uddi-Business-Service'             DESC 'Business Service object' SUP top STRUCTURAL MUST ( uddi-Service-Key $ uddi-Service-Name $ uddi-isHidden ) MAY ( uddi-Name-Soundex $ uddi-Description $ uddi-Ref-Category-Bag ) X-ORIGIN 'acumen defined' )
>     objectClasses: ( 11827.0001.2.2 NAME 'uddi-Binding-Template'             DESC 'Binding Template object' SUP TOP STRUCTURAL   MUST ( uddi-Binding-Key $ uddi-isHidden ) MAY ( uddi-Description $ uddi-Access-Point $ uddi-Hosting-Redirector ) X-ORIGIN 'acumen defined' )
>     objectClasses: ( 11827.0001.2.3 NAME 'uddi-tModel'                       DESC 'tModel object' SUP top STRUCTURAL   MUST (uddi-tModel-Key $ uddi-tModel-Name $ uddi-isHidden $ uddi-Authorized-Name ) MAY ( uddi-Name-Soundex $ uddi-Operator $ uddi-Description $ uddi-Ref-Identifier-Bag $ uddi-Ref-Category-Bag $ uddi-tModel-origin $ uddi-tModel-checked $ uddi-tModel-type ) X-ORIGIN 'acumen defined' )
>     objectClasses: ( 11827.0001.2.4 NAME 'uddi-Publisher-Assertion'          DESC 'Publisher Assertion object' SUP TOP STRUCTURAL   MUST ( uddi-Publisher-Assertions-ID $ uddi-From-Key $ uddi-To-Key $ uddi-Ref-Keyed-Reference ) X-ORIGIN 'acumen defined' )
>     objectClasses: ( 11827.0001.2.5 NAME 'uddi-Discovery-URL'                DESC 'Discovery URL' SUP TOP STRUCTURAL   MUST ( uddi-Discovery-URL-ID $ uddi-Use-Type $ uddi-URL ) X-ORIGIN 'acumen defined' )
>     objectClasses: ( 11827.0001.2.6 NAME 'uddi-Contact'                      DESC 'Contact Information' SUP TOP STRUCTURAL   MUST ( uddi-Contact-ID $ uddi-Person-Name ) MAY ( uddi-Use-Type $ uddi-Description $ uddi-Phone $ uddi-Email $ uddi-tModel-Key ) X-ORIGIN 'acumen defined' )
>     objectClasses: ( 11827.0001.2.7 NAME 'uddi-Address'                      DESC 'Address information for a contact entry' SUP TOP STRUCTURAL   MUST ( uddi-Address-ID ) MAY ( uddi-Use-Type $ uddi-Sort-Code $ uddi-Address-tModel-Key $ uddi-Address-Line ) X-ORIGIN 'acumen defined' )
>     objectClasses: ( 11827.0001.2.8 NAME 'uddi-Keyed-Reference'              DESC 'KeyedReference' SUP TOP STRUCTURAL   MUST ( uddi-Keyed-Reference-ID $ uddi-Key-Value ) MAY ( uddi-Key-Name $ uddi-Keyed-Reference-TModel-Key ) X-ORIGIN 'acumen defined' )
>     objectClasses: ( 11827.0001.2.9 NAME 'uddi-tModel-Instance-Info'         DESC 'tModelInstanceInfo' SUP TOP STRUCTURAL   MUST ( uddi-tModel-Instance-Info-ID $ uddi-tMII-TModel-Key ) MAY ( uddi-Description ) X-ORIGIN 'acumen defined' )
>     objectClasses: ( 11827.0001.2.10 NAME 'uddi-Instance-Details'            DESC 'instanceDetails' SUP TOP STRUCTURAL   MUST ( uddi-Instance-Details-ID ) MAY ( uddi-Description $ uddi-Instance-Parms ) X-ORIGIN 'acumen defined' )
>     objectClasses: ( 11827.0001.2.11 NAME 'uddi-Overview-Doc'                DESC 'overviewDoc' SUP TOP STRUCTURAL   MUST ( uddi-Overview-Doc-ID ) MAY ( uddi-Description $ uddi-Overview-URL ) X-ORIGIN 'acumen defined' )
>     objectClasses: ( 11827.0001.2.12 NAME 'uddi-Ref-Object'                  DESC 'an object class conatins a reference to another entry' SUP TOP STRUCTURAL MUST ( uddi-Ref-Attribute ) X-ORIGIN 'acumen defined' )
>     objectClasses: ( 11827.0001.2.13 NAME 'uddi-Ref-Auxiliary-Object'        DESC 'an auxiliary type object used in another structural class to hold a reference to a third entry' SUP TOP AUXILIARY MUST ( uddi-Ref-Attribute ) X-ORIGIN 'acumen defined' )
>     objectClasses: ( 11827.0001.2.14 NAME 'uddi-ou-container'                DESC 'an organizational unit with uddi attributes' SUP organizationalunit STRUCTURAL MAY ( uddi-next-id $ uddi-var ) X-ORIGIN 'acumen defined' )
>     objectClasses: ( 11827.0001.2.15 NAME 'uddi-User'                        DESC 'a User with uddi attributes' SUP inetOrgPerson STRUCTURAL MUST ( uid $ uddi-user-language $ uddi-user-quota-entity $ uddi-user-quota-service $ uddi-user-quota-tmodel $ uddi-user-quota-binding $ uddi-user-quota-assertion $ uddi-user-quota-messagesize ) X-ORIGIN 'acumen defined' )

## Description of Properties in the uddi.properties File

The following tables describe all the properties of the `uddi.properties` file, categorized by the type of UDDI feature they configure:

- Basic UDDI Configuration
- UDDI User Defaults
- General Server Configuration
- Logger Configuration
- Connection Pools
- LDAP Datastore Configuration
- Replicated LDAP Datastore Configuration
- File Datastore Configuration
- General Security Configuration
- LDAP Security Configuration
- File Security Configuration

Table 18-2 Basic UDDI Configuration

UDDI Property Key | Description
--- | ---
auddi.discoveryurl | Specifies the DiscoveryURL prefix that is set for each saved business entity. This will typically be the full URL to the uddilistener servlet, so that the full DiscoveryURL results in the display of the stored BusinessEntity data.
auddi.inquiry.secure | Permissible values are `true` and `false`. When set to `true`, inquiry calls to UDDI Server will be limited to secure https connections only. Any UDDI inquiry calls through a regular http URL will be rejected.
auddi.publish.secure | Permissible values are `true` and `false`. When set to `true`, publish calls to UDDI Server will be limited to secure https connections only. Any UDDI publish calls through a regular http URL will be rejected.
auddi.search.maxrows | The value of this property specifies the maximum number of returned rows for search operations. When the search results in a higher number of rows then the limit set by this property, the result will be truncated.
auddi.search.timeout | The value of this property specifies a timeout value for search operations. The value is indicated in milliseconds.
auddi.siteoperator | This property determines the name of the UDDI registry site operator. The specified value will be used as the operator attribute, saved in all future BusinessEntity registrations. This attribute will later be returned in responses, and indicates which UDDI registry has generated the response.
security.cred.life | The value of this property, in seconds, specifies the credential life for authentication. Upon authentication of a user, an AuthToken is assigned which will be valid for the duration specified by this property.
pluggableTModel.file.list | UDDI Server is pre-populated with a set of Standard TModels. You can further customize the UDDI server by providing your own taxonomies, in the form of TModels. Taxonomies must be defined in XML files, following the provided XML schema. The value of this property a comma-separated list of URIs to such XML files. Values that refer to these TModels will be checked and validated against the specified taxonomy.

Table 18-3 UDDI User Defaults

UDDI Property Key | Description
--- | ---
auddi.default.lang | The value of this property determines a user's initial language, assigned to his user profile by default at the time of creation. A user's profile settings may be changed either at sign-up or later.
auddi.default.quota.assertion | The value of this property determines a user's initial assertion quota, assigned to his user profile by default at the time of creation. The assertion quota is the maximum number of publisher assertions that the user is allowed to publish. To not impose any limits, set a value of -1 for this property. A user's profile settings may be changed either at sign-up or later.
auddi.default.quota.binding | The value of this property determines a user's initial binding quota, assigned to his user profile by default at the time of creation. The binding quota is the maximum number of binding templates that the user is allowed to publish, per each business service. To not impose any limits, set a value of -1 for this property. A user's profile settings may be changed either at sign-up or later.
auddi.default.quota.entity | The value of this property determines a user's initial business entity quota, assigned to his user profile by default at the time of creation. The entity quota is the maximum number of business entities that the user is allowed to publish. To not impose any limits, set a value of -1 for this property. A user's profile settings may be changed either at sign-up or later.
auddi.default.quota.messageSize | The value of this property determines a user's initial message size limit, assigned to his user profile by default at the time of creation. The message size limit is the maximum size of a SOAP call that the user may send to UDDI Server. To not impose any limits, set a value of -1 for this property. A user's profile settings may be changed either at sign-up or later.
auddi.default.quota.service | The value of this property determines a user's initial service quota, assigned to his user profile by default at the time of creation. The service quota is the maximum number of business services that the user is allowed to publish, per each business entity. To not impose any limits, set a value of -1 for this property. A user's profile settings may be changed either at sign-up or later.
auddi.default.quota.tmodel | The value of this property determines a user's initial TModel quota, assigned to his user profile by default at the time of creation. The TModel quota is the maximum number of TModels that the user is allowed to publish. To not impose any limits, set a value of -1 for this property. A user's profile settings may be changed either at sign-up or later.

Table 18-4 General Server Configuration

UDDI Property Keys | Description
--- | ---
auddi.datasource.type | This property allows you to configure the physical storage of UDDI data. This value defaults to `WLS`. The value of `WLS` for this property indicates that the internal LDAP directory of WebLogic Server is to be used for data storage. Other permissible values include `LDAP`, `ReplicaLDAP`, and `File`.
auddi.security.type | This property allows you to configure UDDI Server's security module (authentication). This value defaults to `WLS`. The value of `WLS` for this property indicates that the default security realm of WebLogic Server is to be used for UDDI authentication. As such, a WebLogic Server user would be an UDDI Server user and any WebLogic Server administrator would also be an UDDI Server administrator, in addition to members of the UDDI Server administrator group, as defined in UDDI Server settings. Other permissible values include `LDAP` and `File`.
auddi.license.dir | The value of this property specifies the location of the UDDI Server license file. In the absence of this property, the `WL_HOME``/server/lib` directory is assumed to be the default license directory, where `WL_HOME` is the main WebLogic Platform installation directory. Some WebLogic users are exempt from requiring an UDDI Server license for the basic UDDI Server components, while they may need a license for additional components (e.g., UDDI Server Browser).
auddi.license.file | The value of this property specifies the name of the license file. In the absence of this property, `uddilicense.xml` is presumed to be the default license filename. Some WebLogic users are exempt from requiring an UDDI Server license for the basic UDDI Server components, while they may need a license for additional components (e.g., UDDI Server Browser).

Table 18-5 Logger Configuration

UDDI Property Key | Description
--- | ---
logger.file.maxsize | The value of this property specifies the maximum size of logger output files (if output is sent to file), in Kilobytes. Once an output file reaches maximum size, it is closed and a new log file is created.
logger.indent.enabled | Permissible values are `true` and `false`. When set to `true`, log messages beginning with "+" and "-", typically TRACE level logs, cause an increase or decrease of indentation in the output.
logger.indent.size | The value of this property, an integer, specifies the size of each indentation (how many spaces for each indent).
logger.log.dir | The value of this property specifies an absolute or relative path to a directory where log files are stored.
logger.log.file.stem | The value of this property specifies a string that is prefixed to all log file names.
logger.log.type | The value of this property determines whether log messages are sent to the screen, to a file or to both destinations. Permissible values for this property, respectively are: `LOG_TYPE_SCREEN`, `LOG_TYPE_FILE`, and `LOG_TYPE_SCREEN_FILE`.
logger.output.style | The value of this property determines whether logged output will simply contain the message, or if thread and timestamp information will be included. The two permissible values are `OUTPUT_LONG` and `OUTPUT_SHORT`.
logger.quiet | The value of this property determines whether the logger itself displays information messages or not. Permissible values are `true` and `false`.
logger.verbosity | The value of this property determines the logger's verbosity level. Permissible values (case sensitive) are `TRACE`, `DEBUG`, `INFO`, `WARNING` and `ERROR`, where each severity level includes the following ones accumulatively.

Table 18-6 Connection Pools

UDDI Property Key | Description
--- | ---
datasource.ldap.pool.increment | When all connections in the pool are busy, the value of this property specifies the number of new connections to create and add to the pool.
datasource.ldap.pool.initialsize | The value of this property specifies the number of connections to be stored, at the time of creation and initialization of the pool.
datasource.ldap.pool.maxsize | The value of this property specifies the maximum number of connections that the pool may hold.
datasource.ldap.pool.systemmaxsize | The value of this property specifies the maximum number of connections created, even after the pool has reached its capacity. Once the pool reaches its maximum size, and all connections are busy, connections are temporarily created and returned to the client, but not stored in the pool. However once the system max size is reached, all requests for new connections are blocked until a previously busy connection becomes available.

Table 18-7 LDAP Datastore Configuration

UDDI Property Key | Description
--- | ---
datasource.ldap.manager.uid | The value of this property specifies back-end LDAP server administrator or privileged user ID, (e.g. cn=Directory Manager) who can save data in LDAP.
datasource.ldap.manager.password | The value of this property is the password for the above user ID, and is used to establish connections with the LDAP directory used for data storage.
datasource.ldap.server.url | The value of this property is an "ldap://" URL to the LDAP directory used for data storage.
datasource.ldap.server.root | The value of this property is the root entry of the LDAP directory used for data storage (e.g., dc=acumenat, dc=com).

Note: In a replicated LDAP environment, there are "m" LDAP masters and "n" LDAP replicas, respectively numbered from 0 to (m-1) and from 0 to (n-1). The fifth part of the property keys below, quoted as "i", refers to this number and differs for each LDAP server instance defined.

Table 18-8 Replicated LDAP Datastore Configuration

UDDI Property Key | Description
--- | ---
datasource.ldap.server.master.i.manager.uid | The value of this property specifies the administrator or privileged user ID for this "master" LDAP server node, (e.g. cn=Directory Manager) who can save data in LDAP.
datasource.ldap.server.master.i.manager.password | The value of this property is the password for the matching above user ID, and is used to establish connections with the relevant "master" LDAP directory to write data.
datasource.ldap.server.master.i.url | The value of this property is an "ldap://" URL to the corresponding LDAP directory node.
datasource.ldap.server.master.i.root | The value of this property is the root entry of the corresponding LDAP directory node (e.g., dc=acumenat, dc=com).
datasource.ldap.server.replica.i.manager.uid | The value of this property specifies the user ID for this "replica" LDAP server node, (e.g. cn=Directory Manager) who can read the UDDI data from LDAP.
datasource.ldap.server.replica.i.manager.password | The value of this property is the password for the matching above user ID, and is used to establish connections with the relevant "replica" LDAP directory to read data.
datasource.ldap.server.replica.i.url | The value of this property is an "ldap://" URL to the corresponding LDAP directory node.
datasource.ldap.server.replica.i.root | The value of this property is the root entry of the corresponding LDAP directory node (e.g., dc=acumenat, dc=com).

Table 18-9 File Datastore Configuration

UDDI Property Key | Description
--- | ---
datasource.file.directory | The value of this property specifies the directory where UDDI data is stored in the file system.

Table 18-10 General Security Configuration

UDDI Property Key | Description
--- | ---
security.custom.group.operators | The value of this property specifies a security group name, where the members of this group will be treated as UDDI administrators.

Table 18-11 LDAP Security Configuration

UDDI Property Key | Description
--- | ---
security.custom.ldap.manager.uid | The value of this property specifies security LDAP server administrator or privileged user ID, i.e. cn=Directory Manager who can save data in LDAP.
security.custom.ldap.manager.password | The value of this property is the password for the above user ID, and is used to establish connections with the LDAP directory used for security.
security.custom.ldap.url | The value of this property is an "ldap://" URL to the LDAP directory used for security.
security.custom.ldap.root | The value of this property is the root entry of the LDAP directory used for security (e.g., dc=acumenat, dc=com).
security.custom.ldap.userroot | The value of this property specifies the users root entry on the security LDAP server. For example, ou=People.
security.custom.ldap.group.root | The value of this property specifies the operator entry on the security LDAP server. For example, "cn=UDDI Administrators, ou=Groups". This entry contains IDs of all UDDI administrators.

Table 18-12 File Security Configuration

UDDI Property Key | Description
--- | ---
security.custom.file.userdir | The value of this property specifies the directory where UDDI security information (users and groups) is stored in the file system.

# UDDI Directory Explorer

The UDDI Directory Explorer allows authorized users to publish Web Services in private WebLogic Server UDDI registries and to modify information for previously published Web Services.

The UDDI Directory Explorer also enables you to search both public and private UDDI registries for Web Services and information about the companies and departments that provide these Web Services. The Directory Explorer also provides access to details about the Web Services and associated WSDL files (if available.)

To invoke the UDDI Directory Explorer in your browser, enter the following URL:

>     http://host:port/uddiexplorer

where

- `host` refers to the computer on which WebLogic Server is running.
- `port` refers to the port number where WebLogic Server is listening for connection requests. The default port number is 7001.

You can perform the following tasks with the UDDI Directory Explorer:

- Search public registries
- Search private registries
- Publish to a private registry
- Modify private registry details
- Setup UDDI directory explorer

For more information about using the UDDI Directory Explorer, click the Explorer Help link on the main page.

# UDDI Client API

WebLogic Server includes an implementation of the client-side UDDI API that you can use in your Java client applications to programmatically search for and publish Web Services.

The two main classes of the UDDI client API are `Inquiry` and `Publish`. Use the `Inquiry` class to search for Web Services in a known UDDI registry and the `Publish` class to add your Web Service to a known registry.

WebLogic Server provides an implementation of the following client UDDI API packages:

- weblogic.uddi.client.service
- weblogic.uddi.client.structures.datatypes
- weblogic.uddi.client.structures.exception
- weblogic.uddi.client.structures.request
- weblogic.uddi.client.structures.response

For detailed information on using these packages, see the UDDI API Javadocs.

# Pluggable tModel

A taxonomy is basically a tModel used as reference by a categoryBag or identifierBag. A major distinction is that in contrast to a simple tModel, references to a taxonomy are typically checked and validated. WebLogic Server's UDDI Server takes advantage of this concept and extends this capability by introducing custom taxonomies, called "pluggable tModels". Pluggable tModels allow users (UDDI administrators) to add their own checked taxonomies to the UDDI registry, or overwrite standard taxonomies.

To add a pluggable tModel:

1. Create an XML file conforming to the specified format described in XML Schema for Pluggable tModels, for each tModelKey/categorization.
2. Add the comma-delimited, fully qualified file names to the `pluggableTModel.file.list` property in the `uddi.properties` file used to configure UDDI Server. For example:

`pluggableTModel.file.list=c:/temp/cat1.xml,c:/temp/cat2.xml`

See Configuring the UDDI 2.0 Server for details about the uddi.properties file.

3. Restart WebLogic Server.

The following sections include a table detailing the XML elements and their permissible values, the XML schema against which pluggable tModels are validated, and a sample XML.

## XML Elements and Permissible Values

The following table describes the elements of the XML file that describes your pluggable tModels.

Table 18-13 Description of the XML Elements to Configure Pluggable tModels

Element/Attribute | Required | Role | Values | Comments
--- | --- | --- | --- | ---
Taxonomy | Required | Root Element |  |
checked | Required | Whether this categorization is checked or not. | true / false | If false, keyValue will not be validated.
type | Required | The type of the tModel. | categorization / identifier / valid values as defined in uddi-org-types | See uddi-org-types tModel for valid values.
applicability | Optional | Constraints on where the tModel may be used. |  | No constraint is assumed if this element is not provided
scope | Required if the applicability element is included. | businessEntity / businessService / bindingTemplate / tModel | tModel may be used in tModelInstanceInfo if scope "bindingTemplate" is specified.
tModel | Required | The actual tModel, according to the UDDI data structure. | Valid tModelKey must be provided. |
categories | Required if checked is set to true. |  |  |
category | Required if element categories is included | Holds actual keyName and keyValue pairs. | keyName / keyValue pairs | category may be nested for grouping or tree structure.
keyName | Required |  |  |
keyValue | Required |  |  |

## XML Schema for Pluggable tModels

The XML Schema against which pluggable tModels are validated is as follows:

>     <simpleType name="type">
>       <restriction base="string"/>
>     </simpleType>

>     <simpleType name="checked">
>       <restriction base="NMTOKEN">
>         <enumeration value="true"/>
>         <enumeration value="false"/>
>       </restriction>
>     </simpleType>

>     <element name="scope" type="string"/>

>     <element name = "applicability" type = "uddi:applicability"/>

>     <complexType name = "applicability">
>       <sequence>
>         <element ref = "uddi:scope" minOccurs = "1" maxOccurs = "4"/>
>       </sequence>
>     </complexType>

>     <element name="category" type="uddi:category"/>

>     <complexType name = "category">
>       <sequence>
>         <element ref = "uddi:category" minOccurs = "0" maxOccurs = "unbounded"/>

>       </sequence>
>       <attribute name = "keyName" use = "required" type="string"/>
>       <attribute name = "keyValue" use = "required" type="string"/>
>     </complexType>

>     <element name="categories" type="uddi:categories"/>

>     <complexType name = "categories">
>       <sequence>
>         <element ref = "uddi:category" minOccurs = "1" maxOccurs = "unbounded"/>
>       </sequence>
>     </complexType>

>     <element name="Taxonomy" type="uddi:Taxonomy"/>

>     <complexType name="Taxonomy">
>       <sequence>
>         <element ref = "uddi:applicability" minOccurs = "0" maxOccurs = "1"/>
>         <element ref = "uddi:tModel" minOccurs = "1" maxOccurs = "1"/>
>         <element ref = "uddi:categories" minOccurs = "0" maxOccurs = "1"/>
>       </sequence>
>       <attribute name = "type" use = "required" type="uddi:type"/>
>       <attribute name = "checked" use = "required" type="uddi:checked"/>
>     </complexType>

## Sample XML for a Pluggable tModel

The following shows a sample XML for a pluggable tModel:

>     <?xml version="1.0" encoding="UTF-8" ?>

>       <SOAP-ENV:Envelope
>           xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">

>       <SOAP-ENV:Body>

>        <Taxonomy checked="true" type="categorization" xmlns="urn:uddi-org:api_v2" >
>         <applicability>
>             <scope>businessEntity</scope>
>             <scope>businessService</scope>
>             <scope>bindingTemplate</scope>
>         </applicability>
>         <tModel  tModelKey="uuid:C0B9FE13-179F-41DF-8A5B-5004DB444tt2" >
>             <name> sample pluggable tModel </name>
>             <description>used for test purpose only </description>
>                 <overviewDoc>
>                     <overviewURL>http://www.abc.com </overviewURL>
>                 </overviewDoc>
>         </tModel>
>         <categories>
>             <category keyName="name1 " keyValue="1">
>                 <category keyName="name11" keyValue="12">
>                     <category keyName="name111" keyValue="111">
>                         <category keyName="name1111" keyValue="1111"/>
>                         <category keyName="name1112" keyValue="1112"/>
>                     </category>
>                     <category keyName="name112" keyValue="112">
>                         <category keyName="name1121" keyValue="1121"/>
>                         <category keyName="name1122" keyValue="1122"/>
>                     </category>
>                 </category>
>             </category>
>             <category keyName="name2 " keyValue="2">
>                 <category keyName="name21" keyValue="22">
>                     <category keyName="name211" keyValue="211">
>                         <category keyName="name2111" keyValue="2111"/>
>                         <category keyName="name2112" keyValue="2112"/>
>                     </category>
>                     <category keyName="name212" keyValue="212">
>                         <category keyName="name2121" keyValue="2121"/>
>                         <category keyName="name2122" keyValue="2122"/>
>                     </category>
>                 </category>
>             </category>
>         </categories>
>        </Taxonomy>
>       </SOAP-ENV:Body>
>     </SOAP-ENV:Envelope>