Skip Headers
Oracle® Application Server Web Services Developer's Guide
10g Release 2 (10.1.2)
Part No. B14027-01
  Go To Documentation Library
Home
Go To Product List
Solution Area
Go To Table Of Contents
Contents
Go To Index
Index

Previous
Previous
Next
Next
 

10 Discovering and Publishing Web Services

Oracle Application Server Containers for J2EE (OC4J) provides a Universal Discovery Description and Integration (UDDI) Web Services registry known as Oracle Application Server UDDI Registry (OracleAS UDDI Registry).

With OracleAS UDDI Registry, Web Services provider administrators in an enterprise environment can publish their Web Services for use by Web Services consumers (application programmers). Web Services consumers can use the UDDI inquiry interface to discover published Web Services and can use those services in their applications for a particular enterprise process.

This chapter is organized into the following main sections:

10.1 Understanding a UDDI Registry

The information provided in a UDDI registry can be used to perform three types of searches:

A UDDI registry uses standards-based technologies, such as common Internet protocols (TCP/IP and HTTP), XML, and SOAP, which is a specification for using XML in simple message-based exchanges. UDDI is a standard Web Services description format and Web Services discovery protocol; a UDDI registry can contain metadata for any type of service, with best practices already defined for those described by Web Services Description Language (WSDL).

10.1.1 UDDI Registry Data Structure

The UDDI registry consists of the following five data structure types, which group information to facilitate rapid location and comprehension of registry information:

  • businessEntity—the top-level, logical parent data structure. It contains descriptive information about the business that publishes information about Web Services, such as company name, contacts, business services, categories, contacts, discovery URLs, and identifier and category information that is useful for performing searches.

  • businessService—the logical child of a single businessEntity data structure as well as the logical parent of a bindingTemplate structure. It contains descriptive business service information about a particular family of technical services including its name, brief description, technical service description, and category information that is useful for performing searches.

  • bindingTemplate—the logical child of a single businessService data structure. It contains technical information about a Web Services entry point, and references to interface specifications.

  • tModel—a description of specifications for Web Services, or a classification that forms the basis for technical identification. It represents the technical specification of Web Services. It facilitates the Web Services consumers (programmers) searching for registered Web Services that are compatible with a particular technical specification. That is, based on the descriptions of the specifications for Web Services in the tModel data structure, Web Services consumers can easily identify other compatible Web Services.

  • publisherAssertion—information about a relationship between two parties, asserted by one or both.

Figure 10-1 shows the UDDI information model and the relationships among its five data structure types.

Figure 10-1 UDDI Registry Information Model

Description of uddidstp.gif follows
Description of the illustration uddidstp.gif

Because the UDDI registry makes use of XML and SOAP, each of these data structures contains a number of elements and attributes that further serve to describe a business or have a technical purpose.

For a complete description of the UDDI service description framework, see UDDI Version 2.03, Data Structure Reference Published Specification, Dated 19 July 2002 and UDDI Version 2.04 API, Published Specification Dated 19 July 2002, available at:

http://www.uddi.org/specification.html

10.2 Introducing OracleAS UDDI Registry

Using OracleAS UDDI Registry in an enterprise environment, Web Services provider administrators can publish their Web Services for use by Web Services consumers (programmers). Web Services consumers can use the UDDI inquiry interface to discover published Web Services by browsing, searching, and drilling down in OracleAS UDDI Registry. Consumers can select one or more Web Services from among those registered, and use those services in their applications for a particular enterprise process.

For example, an administrator can publish the Web Services by providing all the metadata and pointers to the interface specification in OracleAS UDDI Registry. The administrator can work with consumers who have completed a Web Services implementation using the J2EE stack (Enterprise JavaBeans (EJB), JavaBeans, JavaServer Pages (JSP), or servlets) and expose the implementation as Web Services based on Simple Object Access Protocol (SOAP). In this way, the administrator publishes the availability of these Web Services for the Web Services consumers to discover and select for use in their own applications.

OracleAS UDDI Registry is compliant with the UDDI Version 2 specifications, including the following specifications:

OracleAS UDDI Registry support for Web Services deployed in OC4J is composed of the following parts:

10.2.1 Support for Standard Classification and Identifier Systems

OracleAS UDDI Registry supports standard taxonomies for classifying (categorizing) tModels, businessEntities, and businessServices and for identifying tModels and BusinessEntities.

OracleAS UDDI Registry provides the following built-in and checked standard taxonomies for categorizing tModels, businessEntities, and businessServices:

  • North American Industry Classification System (NAICS) 1997 Release

    This is a classification system for each industry and corresponding code. For more information about NAICS, see the following Web site:

    http://www.census.gov/epcd/www/naics.html
    
    
  • United Nations Standard Products and Services Codes (UNSPSC) Version 7.3

    This is the first coding system to classify both products and services for use throughout the global marketplace. For more information about UNSPSC, following Web site:

    http://www.unspsc.org/
    
    
  • ISO-3166 Geographic Code System (ISO-3166)

    This a list of all countries and their subdivisions. For more information about ISO-3166, see the following Web site:

    http://www.iso.org/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/index.html
    
    

When administrators publish Web Services, they can select the taxonomy and the category to which they want to register the Web Services. They have the option of publishing their Web Services to any or all three of these taxonomies, and to as many categories and subcategories as they wish within each.

OracleAS UDDI Registry also provides the following built-in identifier systems for identifying tModels and businessEntities:

  • Dun & Bradstreet D-U-N-S Number Identifier System (D-U-N-S)

    This system uses unique nine-digit sequences for identifying businesses worldwide. For more information, see the following Web site:

    http://www.dnb.com
    
    
  • Thomas Register Supplier Identifier Code System

    This system provides identification codes for manufacturers and suppliers. For more information see the following Web site:

    http://www.thomasregister.com/
    
    

Table 10-1 lists the taxonomy, its name, and its tModel key, a unique universal identifier (UUID).

Table 10-1 Classifications and Identifier Taxonomies

Taxonomy Name tModel key
NAICS ntis-gov:naics:1997 uuid:C0B9FE13-179F-413D-8A5B-5004DB8E5BB2
UNSPSC unspsc-org:unspsc uuid:CD153257-086A-4237-B336-6BDCBDCC6634
ISO-3166 uddi-org:iso-ch:3166-1999 uuid:4E49A8D6-D5A2-4FC2-93A0-0411D8D19E88
D-U-N-S dnb-com:D-U-N-S uuid:8609C81E-EE1F-4D5A-B202-3EB13AD01823
Thomas Register thomasregister-com:supplierID uuid:B1B1BAF5-2329-43E6-AE13-BA8E97195039

For more information about the taxonomies, see the following Web site:

http://www.uddi.org/taxonomies/UDDI_Taxonomy_tModels.htm

10.2.2 UUID Generation

OracleAS UDDI Registry uses an algorithm to generate a version 4 Unique Universal Identifier (UUID) from random numbers.

All built-in tModel data structures as specified in the UDDI v2 specification are included. An additional tModel data structure uddi-org:operators, defined in the UDDI v2 specification, is also included to classify the bootstrap node businessEntity that represents OracleAS UDDI Registry itself.

10.3 Getting Started with OracleAS UDDI Registry

This section describes how to get started using OracleAS UDDI Registry. It includes the following topics:

10.3.1 Configuring OracleAS UDDI Registry

If you install the OracleAS Infrastructure 10g and the OracleAS Portal and Wireless middle tier, OracleAS UDDI Registry is installed. OracleAS UDDI Registry is automatically deployed into an OC4J_Portal instance and the UDDI database schema is embedded in the OracleAS Infrastructure database.

If you want to install OracleAS UDDI Registry with OC4J standalone or with Oracle Application Server Core install, please refer to the standalone OracleAS UDDI Registry kit on OTN:

http://www.oracle.com/technology/tech/webservices/htdocs/uddi

To initialize and configure OracleAS UDDI Registry, you must access (either through the browser or programmatically through a SOAP invocation) the UDDI servlet inquiry end point or publishing SOAP end points. Otherwise, you will not be able to use OracleAS UDDI Registry from Oracle Enterprise Manager 10g, including the integrated Web Services publishing.

To initialize and configure OracleAS UDDI Registry by pinging the UDDI inquiry servlet end point from a browser, enter the following URL:

http://OracleAS-host:OracleAS-port/uddi/inquiry

The OracleAS UDDI Registry page is displayed. You should see the message: "Welcome! Your registry is now up and running."

This initialization and configuration step sets up the following:

  • UDDI core tModel data structures

  • A businessEntity node representing the registry node

  • The businessEntity discoveryURL prefix and the operatorName property

By default, the installation creates UDDI users and user groups. Table 10-2 lists the type of user, the user names, and passwords.

Table 10-2 Default UDDI Users and Passwords

Type User Name Default Password
Administration ias_admin ias_admin123
Publisher uddi_publisher uddi_publisher123
Publisher uddi_publisher1 uddi_publisher1
Replicator uddi_replicator no password, not used explicitly

You can connect to the UDDI end points using these user names and passwords. "Managing Users" provides more information about the UDDI users and groups that are set up during installation.

The OracleAS UDDI Registry is available through the following URLs:

  • Getting started information

    http://OracleAS-host:OracleAS-port/uddi/
    
    
  • UDDI inquiry SOAP end point

    http://OracleAS-host:OracleAS-port/uddi/inquiry
    
    
  • UDDI publishing SOAP end point

    http://OracleAS-host:OracleAS-port/uddi/publishing
    
    
  • UDDI administration end point

    http://OracleAS-host:OracleAS-port/uddi/admin
    
    
  • UDDI replication SOAP end point

    http://OracleAS-host:OracleAS-port/uddirepl/replication
    
    
  • UDDI replication HTTPS Wallet Password Administration end point

    http://OracleAS-host:OracleAS-port/uddirepl/admin/wallet
    

10.3.2 Modifying Properties at Installation or First-Use

You perform many administrative operations using the command-line tool uddiadmin.jar. The tool is located in the uddi/lib/uddiadmin.jar file for UNIX and in the uddi\lib\uddiadmin.jar file for Windows. In general, the command-line tool uses the following format:

java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
[-verbose] options_and_their_parameters

With the setProperty option of the command-line tool uddiadmin.jar, you can set the value of configuration properties, such as maximum database connections and default language.

You should change the following two properties immediately after installation. However, once you change them, you should not change them again unless there are changes to the host setup or you move the system from a staging environment to a production environment.

  • operatorName: Provides the name of the operator of OracleAS UDDI Registry. This name appears in the operator attribute of responses. Setting this property applies in a retroactive fashion to existing entities in the database. For example, changing the operator name results in the new operator name replacing the old operator name in all business and tModel data structures.

    The following example sets the operatorName property to OracleUddiServerIT_Dept:

    java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
     -setProperty oracle.uddi.server.operatorName=OracleUddiServerIT_Dept
    
    
  • businessEntityURLPrefix: Provides the prefix of the generated discoveryURL, which is automatically generated for each businessEntity data structure saved in the registry. The prefix should be customized for your deployment environment. Setting this parameter applies in a retroactive fashion to existing entities in the database. For example, changing the discoveryURL prefix results in the new discoveryURL replacing the old discoveryURLs in all businessEntity usetypes.

    The host name and port should be the host name and port of the Web server (which may or may not be the same as the servlet container).

    The following example sets the prefix of the discoveryURL to http://uddihost:port/uddi/inquiryget:

    java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
    -setProperty oracle.uddi.server.businessEntityURLPrefix=http://uddihost:port/uddi/inquiryget
    

Note:

Be sure to set these properties before enabling UDDI replication.

In addition, you can set the default language of the registry by using the defaultLang property. See "defaultLang" for more information.

See "Using the Command-Line Tool uddiadmin.jar" for information about the command-line tool. See "setProperty" for more information about the setProperty option.

10.3.3 Considerations in a Production Environment

The following information describes some postinstallation configuration steps that you should do immediately after the installation. These steps are not mandatory, but are highly recommended in a production environment:

  • Security for publishing the end point: By default, HTTP access is enabled. However, HTTPS access is recommended for security concerns. See "Transport Security" for more information about disabling HTTP access.

  • Database connection pool sizing and statement caching: Database connection pool parameters, such as maximum number of database connections and usage of statement caching, should be configured to accommodate the actual database server load.

    If you are using an Oracle database other than the OracleAS Infrastructure database as the back-end storage, you can configure the parameters by editing the data source jdbc/OracleUddi. Refer to the chapter on data sources in the Oracle Application Server Containers for J2EE Services Guide for more information.

    If you are using the OracleAS Infrastructure database as the back-end storage, you can configure the parameters by modifying the following UDDI server configuration properties:

  • Change of the operatorName and businessEntity discoveryURL prefix: In some cases, you may want to change either the businessEntity discoveryURL prefix or the operatorName, or both parameter values, when moving a system from a staging environment to a production environment. See "businessEntityURLPrefix" and "operatorName" for more information.

10.4 Web Services Discovery

To discover Web Services in OracleAS UDDI Registry, you browse the registry using tools or using the Inquiry API. These methods are described in the following sections:

10.4.1 Using the OracleAS UDDI Registry Searching and Browsing Tool

OracleAS UDDI Registry provides a Searching and Browsing Tool that lets you search a registry by businessEntity, businessService, tModel, or bindingTemplate. To access the Searching and Browsing tool, enter the following URL:

http://OracleAS-host:OracleAS-port/uddi

Then, click the UDDI Inquiry/Publishing tool link. The Searching and Browsing Tool page is displayed, as shown in the following illustration:

Description of uddi_search.gif follows
Description of the illustration uddi_search.gif

10.4.2 Using Other Tools to Discover Web Services

As a consumer, you can use Oracle JDeveloper to browse OracleAS UDDI Registry, or you can use third-party tools to browse and drill down for information about Web Services from OracleAS UDDI Registry, as well as from any other accessible UDDI v1.0 Web Services registry.

10.4.3 Using the OracleAS UDDI Registry Inquiry API

As a consumer, you can use the Inquiry API available for Java programmers to implement your own Web Services discovery interface. The Inquiry API, part of the UDDI Client API, provides find (browse and drill-down) calls and get calls for locating and getting information in each of the five data structures shown in Figure 10-1.

The Inquiry API is a Java-based API and is provided as a convenience for Java programmers. However, programs can be written in any language and can use SOAP to discover Web Services.

The URL for the OracleAS UDDI Registry inquiry API is:

http://OracleAS-http-server-hostname:OracleAS-port/uddi/inquiry

In the URL, OracleAS-http-server-hostname is the host where Oracle HTTP Server is installed, and OracleAS-port is the port number for Oracle HTTP Server.

The Inquiry API is located in the Oracle Application Server installation directory, ${ORACLE_Home}/uddi/ for UNIX and %ORACLE_Home_ORACLE%\uddi\ for Windows. For reference documentation for the Inquiry API, see the Oracle Application Server Web Services UDDI Client API Reference.

A set of sample demonstration files (uddidemo.zip) are located on the Oracle Technology Network (OTN) Web site at:

http://www.oracle.com/technology/tech/webservices/htdocs/uddi

The uddidemo.zip file contains a Java program file, UddiInquiryExample.java, which provides Java programmers with a starting point that demonstrates the key constructs and the sequence in using the OracleAS UDDI Registry client library.

The program example does the following:

  • Gets an implementation of the SoapTransportLiaison interface. This is an implementation that handles the details of communication between the UDDI client and server, using SOAP and some underlying transport protocol (in this case HTTP).

    SoapTransportLiaison transport = new OracleSoapHttpTransportLiaison();
    
    
  • Calls a helper method to set up proxy information, if necessary. You can specify HTTP proxy information for accessing OracleAS UDDI Registry on the command line, using parameters, such as -Dhttp.proxyHost=hostname -Dhttp.proxyPort=portnum.

    setHttpProxy((SoapHttpTransportLiaison)transport);
    
    
  • Uses the SoapTransportLiaison instance and the URL of a UDDI inquiry registry to initialize an instance of UddiClient, which connects to the specified OracleAS UDDI Registry. The UddiClient instance is the primary interface by which clients send requests to OracleAS UDDI Registry.

    UddiClient uddiClient = new UddiClient(szInquiryUrl, null, transport);
    
    

    Note:

    The UddiClient instance, by default, operates as a UDDI v2 client (the latest version supported). If a specific version is needed, the version can be specified either through another constructor, or the JVM property oracle.uddi.client.defaultVersion.

    For example:

    -Doracle.uddi.client.defaultVersion=1


  • Uses the UddiClient instance to perform a find business request. Specifically, it finds all businessEntities that start with the letter T and prints out the response. Note that input parameters and return values are objects that precisely mimic the XML elements defined in the UDDI specification.

    // Find a business with a name that starts with "T"
    String szBizToFind = "T";
    System.out.println("\nListing businesses starting with " + szBizToFind);
    // Actual find business operation: 
    // First null means no specialized FindQualifier.
    // Second null means no max number of entries in response. 
    // (For example, maxRows attribute is absent.)
    BusinessList bl = uddiClient.findBusiness(szBizToFind, null, null);
    // Print the response.
    System.out.println("The response is: ");
     List listBusinessInfo = bl.getBusinessInfos().getUddiElementList();
          for (int i = 0; i < listBusinessInfo.size(); i++) {
            BusinessInfo businessInfo = (BusinessInfo)listBusinessInfo.get(i);
            System.out.println(businessInfo.getBusinessKey());
            Name name = businessInfo.getFirstNameAsName();
            if (name != null) {
              System.out.println("name=" + name.getContent() + 
                                 " ; xml:lang=" + name.getLang());
            }
    
     Description description = 
        businessInfo.getFirstDescriptionAsDescription();
     if (description != null) {
        System.out.println("description=" + description.getContent()
                       +  " ; xml:lang=" + description.getLang());
     }
    
    
  • Uses the UddiClient instance to get a UddiElementFactory instance. This factory should always be used to create any UDDI objects needed for inquiries.

    UddiElementFactory uddiEltFactory = uddiClient.getUddiElementFactory();
    
    
  • Uses the UddiElementFactory instance to create a CategoryBag instance and its KeyedReference, which will be used for searching.

    CategoryBag cb = (CategoryBag)uddiEltFactory.createCategoryBag();
    KeyedReference kr =
    (KeyedReference)uddiEltFactory.createKeyedReference();
    kr.setTModelKey(szCategoryTModelKey);
    kr.setKeyValue(szCategoryKeyValue);
    kr.setKeyName("");
    cb.addUddiElement(kr);
    
    
  • Uses the UddiClient instance to perform a find service request. Specifically, it finds a maximum of 30 services, which are classified as application service providers (code 81.11.21.06.00) under the UNSPSC classification in any businessEntity (no businessKey is specified).

    ServiceList serviceList =
          uddiClient.findService("", cb, null, new Integer(30));
    
    
  • Uses the UddiElementFactory instance to retrieve an XmlWriter object. To view the raw XML data represented by an object, which extends UddiElement, marshall the element content to the writer, and then flush and close the writer.

    XmlWriter writerXmlWriter = 
             uddiEltFactory.createWriterXmlWriter(new PrintWriter(System.out));
    serviceList.marshall(writerXmlWriter);
    writerXmlWriter.flush();
    
    
  • Finds tModel operations with multiple arguments. This is a UDDI v2 feature. A find_xx request now allows multiple arguments. For example, find tModel operations that have a name pattern, such as "uddi%inquiry%" and are classified as wsdlSpec or xmlSpec in uddi-org:types taxonomy:

    System.out.println("\nListing tModels with the name pattern \"uddi%inquiry%\" ");
    System.out.println("and classified as \"wsdlSpec\" or \"xmlSpec\" ");
    System.out.println("under uddi-org:types taxonomy.");
    // Use UddiElement factory to create UDDI-specific objects 
    // that are needed in inquiries.
    CategoryBag cbTM = (CategoryBag)uddiEltFactory.createCategoryBag();
    KeyedReference krTM1 =
     (KeyedReference)uddiEltFactory.createKeyedReference();
    krTM1.setTModelKey(CoreTModelConstants.TAXONOMY_KEY_UDDI_TYPE);
    krTM1.setKeyValue(CoreTModelConstants.UDDI_TYPE_VALUE_WSDL_SPEC);
    cbTM.addUddiElement(krTM1);
    
    KeyedReference krTM2 =
     (KeyedReference)uddiEltFactory.createKeyedReference();
    krTM2.setTModelKey(CoreTModelConstants.TAXONOMY_KEY_UDDI_TYPE);
    krTM2.setKeyValue(CoreTModelConstants.UDDI_TYPE_VALUE_XML_SPEC);
    cbTM.addUddiElement(krTM2);
    
    FindQualifiers fqTM = (FindQualifiers)uddiEltFactory.createFindQualifiers(); 
    List listFQTM = uddiEltFactory.createList();
    listFQTM.add(FindQualifiers.OR_ALL_KEYS);
    fqTM.setFindQualifierStringList(listFQTM);
    
    // Actual find tModel operation:
    // Integer(10) means a maximum of 10 tModel operations are to be returned.
    TModelList tModelList =  uddiClient.findTModel("uddi%inquiry%", 
                                                    null, 
                                                    cbTM, 
                                                    fqTM, 
                                                    new Integer(10));
    
    // Print some response information.
    System.out.println("The response is: ");
    List listTModelInfo = tModelList.getTModelInfos().getUddiElementList();
    for (int i = 0; i < listTModelInfo.size(); i++) {
      TModelInfo tModelInfo = (TModelInfo)listTModelInfo.get(i);
      System.out.println(tModelInfo.getTModelKey());
      System.out.println("name=" + tModelInfo.getName());
     }
    
    
  • Closes the UddiClient instance when finished, to release resources.

    uddiClient.close();
    
    
  • Provides URLs (in comments) to OracleAS UDDI Registry and four public UDDI registries.

10.5 Web Services Publishing

Web Services are published in OracleAS UDDI Registry by using one of the following interfaces:

10.5.1 Using Oracle Enterprise Manager for Web Services Publishing

Using Oracle Enterprise Manager 10g, administrators can publish Web Services in OracleAS UDDI Registry and can update discovered Web Services:


Note:

To use any of the UDDI functions in Oracle Enterprise Manager, you must have initialized the UDDI registry by pinging the UDDI inquiry servlet end point. See "Configuring OracleAS UDDI Registry" for more information.

If you have accessed any of the UDDI-related pages before you initialize the UDDI registry, you must restart Oracle Enterprise Manager.


10.5.1.1 Publishing Web Services Using the Deploy Application Wizard

As an administrator, you can publish J2EE Web Services, which are produced by the OracleAS Web Services assembly tool, using the Oracle Enterprise Manager Deploy Application wizard.

To publish J2EE Web Services, you must first assemble them as J2EE Enterprise Archive (EAR) files. See Chapter 9 for more information. See the Oracle Application Server Containers for J2EE User's Guide for information about EAR file-based deployment of J2EE Web applications.

You can use the wizard to publish Web Services servlets that are found in an EAR file. Any Web Services servlet in an application that you want to access must be published to OracleAS UDDI Registry to one or more desired categories within one or more of the classifications provided. Any unpublished Web Services servlet in an application appears with the status of Not Published. When the Web Services servlet is published, the status changes to Published.

After you have initialized the OracleAS UDDI Registry, take the following steps:

  1. Invoke Oracle Enterprise Manager and navigate to the Application Server Instance-name page. From the System Components table, select an OC4J instance. By default, the UDDI registry is deployed in the OC4J_PORTAL instance.

  2. In the OC4J:oc4j-name page, click Applications.

  3. In the Deployed Applications section, click Deploy Ear File to invoke the Deploy Application wizard.

  4. In the Deploy Application wizard, in the Deploy Application page, specify the ear file location in the J2EE Application field and the application name in the Application Name field, as shown in the following illustration:

    Description of uddi_deploy.gif follows
    Description of the illustration uddi_deploy.gif

    Click Continue.

  5. For the next pages, take the defaults until you reach the Publish Web Services page, shown in the following illustration:

    Description of uddi_publish.gif follows
    Description of the illustration uddi_publish.gif

    If the wizard does not display the Publish Web Services page, either the UDDI registry has not been initialized or the OracleAS Infrastructure is not running. See See "Configuring OracleAS UDDI Registry" for information about initializing the UDDI registry. Then, you may need to restart Oracle Enterprise Manager.

  6. At the Publish Web Services page, select the desired Web Services to register from the list of Web Services known to the application whose Status is Not Published.

    Then, click Publish to continue to the Web Service Details page.

  7. At the Web Service Detail page, review, edit, or enter the information as needed in each of the fields in the Service Details and tModel Details sections. OracleAS UDDI Registry automatically adds the Name and URL to Service.

    • To specify a category, select a Classification and Code in the Category Section.

    • To specify categories to which the Service or tModel are to be registered, in the Service Details or the tModel Details sections, click Browse UDDI Registry. Then, browse to the desired classification, and drill down as needed through each desired category, noting all desired category names and values.

    • To add an empty row of category information, click Add Another Row. Select the desired classification, then enter the value code and its corresponding category name for the desired category.

    The following illustration shows the top part of the Web Service Details page:

    Description of uddi_details.gif follows
    Description of the illustration uddi_details.gif

  8. After entering all the required information on the Web Service Details page, publish the Web Services to OracleAS UDDI Registry by clicking OK. You return to the Publish Web Services page.

  9. In the Publish Web Services page, select another Web Service to publish and repeat this entire process again as described in Step 6 and Step 7.

  10. After publishing all Web Services for this application, click Next to continue to the Review page where you can review the application deployment information.

  11. If there are no further changes, click Deploy to deploy the J2EE application on the OC4J container. Doing this returns you to the Oracle Enterprise Manager OC4J Home page.

After deployment, metadata describing the Web Services that you chose to publish has been added to OracleAS UDDI Registry.

10.5.1.2 Updating Published Web Services in OracleAS UDDI Registry

You can use Oracle Enterprise Manager to browse, drill down, and get information about Web Services published for categories in OracleAS UDDI Registry. You can update the discovered published Web Services.

To update published Web Services using Oracle Enterprise Manager 10g, do the following:

  1. Invoke Oracle Enterprise Manager and navigate to the Application Server Instance-name page. From the System Components table, select an OC4J instance.

  2. In the OC4J:oc4j-name page, click the Administration link. On the Administration page, click the UDDI Registry link in the Related Links section.

    If UDDI Registry is not listed in the Related Links column, initialize the OracleAS UDDI Registry by pinging the UDDI inquiry servlet end point (see "Configuring OracleAS UDDI Registry".) Then, restart Oracle Enterprise Manager.

  3. In the UDDI Registry page, select one of the three standard classifications, NAICS, UNSPSC, or ISO-3166, by clicking its link. The following illustration shows the UDDI Registry page:

    Description of uddi_reg.gif follows
    Description of the illustration uddi_reg.gif

  4. In the UDDI Registry: Classification_Name page, you can drill down from category to subcategory to discover published Web Services associated with any category or subcategory. Each classification is organized in a hierarchical tree. Navigate down a particular branch by clicking the category name to determine all its subcategory names, and so forth. As you navigate down a branch, also note the change in the category code value.

    The following illustration shows the page:

    Description of uddi_class.gif follows
    Description of the illustration uddi_class.gif

    Navigate to the desired category or subcategory by successively clicking the desired categories.

  5. To view all Web Services published in a particular category, select the corresponding radio button in the Select column for that category, and click View Details.

    The Web Services page lists all Web Services published for that category name. For Web Services listed for the selected category, the corresponding service name, service key, and business key are also listed. If the selected category or subcategory has no published Web services, none is listed.

    The following illustration shows the Web Services page:

    Description of uddi_serv.gif follows
    Description of the illustration uddi_serv.gif

  6. To view the complete details of a particular published Web Services listed for a category, either click its service name or select its corresponding radio button in the Select column and click View Details.

    Click the desired service name.

  7. The Web Service Details page displays detailed information for the selected Web Service published in OracleAS UDDI Registry. This information includes:

    • Service Details: Information such as the Web Services name, Web Services description, and the URL of the Web Services access point.

      Service Category: The classification and the corresponding code value and its category name.

    • tModel Details: Information that describes the interface that the Web Services implements, such as the tModel name, tModel description, and URL to the interface specification, typically a WSDL document.

      tModel Category: The classification and the corresponding code value and its category name.

    On this page, you can:

    • Browse OracleAS UDDI Registry to look for categories in which to register Web Services: Click Browse UDDI Registry.

    • Add categories to which either the Web Services or tModel are to be registered: Click Add Another Row.

    • Remove categories to which the Web Services and tModel are registered: Click Delete.

  8. After making all selections or completing all changes for this Web Services, click Apply to save your changes.

If you have made changes to any field and you decide you want to return to the original set of values for all selections, click Revert. The page refreshes with the original set of values for all selections as if you had just begun your current session.

To update other published Web Services for the same category, at the top of the Web Service Details page, select the Web Services: Classification_Name link to return to the desired Web Services:Classification_Name page. The following illustration shows the Web Service Details page:

Description of uddi_ws_class.gif follows
Description of the illustration uddi_ws_class.gif

When you return to the desired Web Services:Classification_Name page, select another Web Service to view in more detail, make any necessary changes, and finally click Apply to save your changes.

Alternatively, you can click Browse UDDI Registry to return to the UDDI Registry page, where you can navigate to another classification to discover Web Services for other categories. At each desired category, select the desired Web Services to view the details, make any necessary changes, and finally click Apply to save your changes.

10.5.2 Using the OracleAS UDDI Registry Publishing Tool

OracleAS UDDI Registry provides a Publishing tool that enables you to create a new businessEntity, containing new businessServices and bindingTemplates, or tModel. To access the Publishing tool, enter the following URL in a browser:

http://OracleAS-host:OracleAS-port/uddi

The OracleAS UDDI Registry page is displayed.

This section uses an example that publishes a service for a Google-based search. It shows how to publish to the UDDI registry including how to create a tModel that is mapped to a WSDL interface specification and how to create a businessEntity and a businessService.

Take the following steps:

  1. Click the UDDI Inquiry/Publishing tool link. Then, on the OracleAS UDDI Registry: Searching and Browsing Tool page, click Publishing Tool.

  2. On the Log Into Publishing Service page, enter the user name and password for the uddi_publisher user and click Login. (See Table 10-2 for default passwords.)

    The Publishing Tool page is displayed, as shown in the following figure:

    Description of uddi_pub.gif follows
    Description of the illustration uddi_pub.gif

  3. In the Publishing Tool page, you can create:

    • A new businessEntity

    • A new tModel

    The first step in registering a Web service in OracleAS UDDI Registry is to create a tModel. This example creates a tModel that represents a Google-compatible service.

    To create a new tModel, click tModel. The Publish tModel page is displayed.

  4. In the Basic information section, specify the following information:

    1. For Name, specify a name so that this tModel can be located. For example, enter urn:google.com:search-interface.

    2. For Description, specify a description of the tModel, such as Google search interface.

    3. For Overview Document URL, specify the URL to the interface specification, typically a WSDL document. In this case, Google provides a WSDL document, http://api.google.com/GoogleSearch.wsdl.

    4. For Overview Document Description, enter a description of the overview document.

  5. In the Category section, you categorize the tModel, in this case as a WSDL-based interface. To find information about the tModel key and key name and value, click the browse category icon at the end of the first row. The Category Browsing page is displayed.

    Take the following steps:

    1. Select uddi-org:types and click Browse.

      The Classification Tree for this selection is displayed.

    2. Click Specification for a Web Service. The Classification Tree for this selection is displayed, as shown in the following figure:

      Description of uddi_cat.gif follows
      Description of the illustration uddi_cat.gif

    3. In the row Specification for a Web Service described in WSDL, click the Select icon.

    In the Publish tModel page, the information you selected is automatically entered into the Category section. Now, it contains the following information:

    • For tModel Key: uuid:C1ACF26D-9672-4404-9D70-39B756E62AB4

    • For Key Name: Specification for a Web Service described in WSDL

    • For Key Value: wsdlSpec

  6. The Identifier section specifies identifying information, such as from the D-U-N-S or Thomas Register systems (see "Support for Standard Classification and Identifier Systems" for more information). For this example, leave this section blank.

    The following figure shows the Publish tModel page:

    Description of uddi_pub_tmodel.gif follows
    Description of the illustration uddi_pub_tmodel.gif

  7. Click the Publish button to publish the tModel. The TModel Details page is displayed, as shown in the following figure:

    Description of uddi_tm_detail.gif follows
    Description of the illustration uddi_tm_detail.gif

    Note that the key (UUID:B960F57E-54BF-4DB8-BC36-F2802FE6BEF0) for this tModel is randomly assigned by the registry.

  8. Click the Publish link at the bottom of the page to return to the Publishing Tool page.

  9. Create a businessEntity, which contains details about the business, such as the name, contacts, and categories with which the businessEntity is associated. Click business entity (or service provider). The Publish Business Entity (Service Provider) page is displayed.

    If a businessEntity already exists, you do not need to create a new entity. In the Publishing Tool page, click the link to the existing businessEntity. Then, proceed to Step 15.

  10. In the Business Details section of the Publish Business Entity (Service Provider) page, specify the following information:

    1. For Name, specify a name so that this business can be located. For example, enter Google Service Provider.

    2. For Description, specify a description of the business.

  11. In the Contacts section, enter information that you want to appear in the UDDI registry. Specify information for the following fields:

    1. For name, specify the name of a contact.

    2. For voice, specify a voice mail number.

    3. For email, specify an email address.

    4. For address, specify a mailing address.

  12. In the Category section, add any categories with which the business should be associated. For this example, use the ISO-3166 geographic taxonomy to provide geographic categorization of the business.

    To find information about the tModel key and key name and value of the category, click the browse category icon at the end of the first row. The Category Browsing page is displayed. Then, take the following steps:

    1. Select iso3166 and click Browse. The Classification Tree for this selection is displayed.

    2. Drill down to select the geographic category. For this example, click World, click United States, and then click the select icon for New Hampshire.

    In the Publish Business Entity page, the information you selected is automatically entered into the Category section. Now, it contains the following information:

    • For tModel Key: uuid:4E49A8D6-D5A2-4FC2-93A0-0411D8D19E88

    • For Key Name: New Hampshire.

    • For Key Value: US-NH.

  13. The information for the Identifier section is optional. For this example, leave it blank.

    The following figure shows the Publish Business Entity (Service Provider) page:

    Description of uddi_pub_biz.gif follows
    Description of the illustration uddi_pub_biz.gif

  14. Click Publish to publish the business. The Business Details page is displayed:

    Description of uddi_biz_detail.gif follows
    Description of the illustration uddi_biz_detail.gif

    Note that the Business Key and the Discovery URL are generated by OracleAS UDDI Registry. With the Discovery URL, you can retrieve the businessEntity using the HTTP Get method.

  15. In the Services section of the Business Details page, click the icon to the right of Services to enter information about the businessServices offered by the businessEntity and the categorization of the service. The Publish Business Service page is displayed.

  16. In the Basic information section, specify the following information:

    1. The key for the business is automatically entered in Owning business.

    2. For Name, enter a name for the businessService.

    3. For Description, specify a description of the businessService.

  17. In the Category section, add any categories to detail the intended use of this service. For this example, add a category from the NAICS taxonomy to specify that that category is an online search tool.

    To find information about the tModel key and key name and value of the category, click the browse category icon at the end of the first row. The Category Browsing page is displayed. Then, take the following steps:

    1. Select naics and click Browse. The Classification Tree for this selection is displayed.

    2. Drill down to select the category. Click Information, then Information Services and Data Processing Services, then Information Services, and Other Information Services. Then, click the Select icon for On-Line Information Services.

    In the Publish Business Service page, the information you selected is automatically entered into the Category section. Now, it contains the following information:

    • For tModel Key: uuid:C0B9FE13-179F-413D-8A5B-5004DB8E5BB2

    • For Key Name: On-Line Information Services

    • For Key Value: 514191

    The following figure shows the Publish Business Service page:

    Description of uddi_pub_serv.gif follows
    Description of the illustration uddi_pub_serv.gif

  18. Click the Publish button to publish the service. The Service Details page is displayed, as shown in the following figure:

    Description of uddi_serv_detail.gif follows
    Description of the illustration uddi_serv_detail.gif

  19. Create a bindingTemplate, which contains details of how and where the service provided by this businessService is accessed. On the Service Details page, click the icon to the right of Binding Details.

  20. In the Publish Binding Template page, OracleAS UDDI Registry automatically fills in the field Owning Service Key with the key for the service you just created. In the Basic information section, enter the following information:

    • For Description, specify a description for the bindingTemplate.

    • For Access Point, specify the access point for accessing the service. In this case, review the source code for http://api.google.com/GoogleSearch.wsdl to find the access point. The WSDL file contains the following:

      <soap:address location="http://api.google.com/search/beta2"/>
      
      

      Enter http://api.google.com/search/beta2 as the Access Point.

    • For Access Point URL Type, select HTTP.

    The following figure shows the Publish Binding Template page:

    Description of uddi_pub_bind.gif follows
    Description of the illustration uddi_pub_bind.gif

  21. Click Publish to publish the bindingTemplate. The Binding Details page is displayed, as shown in the following figure:

    Description of uddi_bind_detail1.gif follows
    Description of the illustration uddi_bind_detail1.gif

  22. Click the icon to the right of Interfaces implemented to add a new interface reference.

    The Publish Interface Reference page is displayed.

  23. On this page, OracleAS UDDI Registry automatically fills in the Binding Key field. Click the Search a suitable tModel icon, which is at the end of the Interface (tModel) Key line.

    The Find tModel page is displayed.

  24. For tModel Name, enter the beginning of the name of the tModel you created, for example, %urn%google%. The following figure shows the Find tModel page:

    Description of uddi_step1.gif follows
    Description of the illustration uddi_step1.gif

  25. Click Search.

  26. The tModel you created earlier is returned. Click Select.

    The Publisher Interface Reference page is displayed. The tModel Key is automatically entered in the Interface (tModel) key field of the page.

  27. For Overview Document URL, enter the URL for the interface specification. In this case, enter http://api.google.com/GoogleSearch.wsdl, as shown in the following figure:

    Description of uddi_step2.gif follows
    Description of the illustration uddi_step2.gif

  28. Click the Publish button. The Binding Details page is displayed. As the following figure shows, it now contains information about the implemented interfaces:

    Description of uddi_bind_detail.gif follows
    Description of the illustration uddi_bind_detail.gif

10.5.3 Using the OracleAS UDDI Registry Publishing API

The OracleAS UDDI Registry Publishing API lets consumers (programmers), following authentication, publish Web Services by providing save and delete calls for each of the five key UDDI data structures (businessEntity, businessService, bindingTemplate, tModel, and publisherAssertion).

The Publishing API, part of the UDDI Client API, allows programmers to publish Web Services using the Java language. Programs can be written in any language, using SOAP to publish Web Services. The Java API is provided as a convenience for Java programmers.

The Publishing API is located in the Oracle Application Server installation directory, ${ORACLE_Home}/uddi/ for UNIX and %ORACLE_Home_ORACLE%\uddi\ for Windows. The API documentation can be found in the Oracle Application Server Web Services UDDI Client API Reference Javadoc.

A set of sample demonstration files (uddidemo.zip) are located on the Oracle Technology Network (OTN) Web site at:

http://www.oracle.com/technology/tech/webservices/htdocs/uddi

UddiPublishingExample.java Example

The uddidemo.zip file contains a Java program file, UddiPublishingExample.java, that provides Java programmers with a starting point that demonstrates the key constructs and the sequence in using the OracleAS UDDI Registry client library.

The program example does the following:

  • Gets an instance of SoapHTTPTransportLiaison. This is an implementation that handles the details of communication between the UDDI client and server using SOAP and some underlying transport protocol (in this case HTTP).

    SoapHttpTransportLiaison transport = new OracleSoapHttpTransportLiaison();
    
    
  • Sets the proxy information for the transport if the system properties http.proxyHost and http.proxyPort are set. These properties can be set on the command line. If these properties are not set, this command has no effect.

    setHttpProxy((SoapHttpTransportLiaison)transport);
    
    
  • Uses a SoapTransportLiaison instance and the URL of a UDDI publishing registry to initialize an instance of UddiClient, which connects to the specified OracleAS UDDI Registry. The UddiClient instance is the primary interface by which clients send requests to OracleAS UDDI Registry. Authentication is done using the UDDI get_authToken message in this example.

    SimpleAuthenticationLiaison auth = 
                new SimpleAuthenticationLiaison(szUserName, szPassword);
    UddiClient uddiClient = new UddiClient(null, szPublishingUrl, 
                                           transport, auth);
    

    Note:

    The UddiClient instance, by default, operates as a UDDI v2 client (the latest release supported). If a specific release is needed, the release can be specified, either through another constructor, or by the JVM property oracle.uddi.client.defaultVersion.

  • Performs authentication. You should make this call before doing any publishing.

    UddiClient.authenticate();
    
    
  • Uses UddiClient to get a UddiElementFactory instance. This factory should always be used to create any UDDI objects needed.

    UddiElementFactory uddiEltFactory = uddiClient.getUddiElementFactory();
    
    
  • Creates and includes the OverviewDoc data structure in the tModel data structure by using the UddiElementFactory instance.

    OverviewDoc overviewDocTm =   
          (OverviewDoc)uddiEltFactory.createOverviewDoc();
    tModel.setOverviewDoc(overviewDocTm);
    overviewDocTm.setOverviewURL("http://api.google.com/GoogleSearch.wsdl");
    
    
  • Creates a tModel data structure that represents a Google-compatible service by using the UddiElementFactory instance.

    TModel tModel = (TModel)uddiEltFactory.createTModel(); 
    tModel.setName("urn:google.com:search-interface");
    
    
  • In the tModel data structure, uses the UddiElementFactory instance to create a CategoryBag data structure and its keyedReference data structure, which will be used for searching. Classify the tModel data structure as a SOAP/WSDL-based interface and put it under the "applicable service providers" category.

    CategoryBag catBagTm =
     (CategoryBag)uddiEltFactory.createCategoryBag(); 
    tModel.setCategoryBag(catBagTm);
    
    KeyedReference krTm1 =
     (KeyedReference)uddiEltFactory.createKeyedReference();
    
    catBagTm.addUddiElement(krTm1);
    krTm1.setTModelKey(CoreTModelConstants.TAXONOMY_KEY_UDDI_TYPE);
    krTm1.setKeyName("soapSpec");
    krTm1.setKeyValue("soapSpec");
    
    KeyedReference krTm2 =
     (KeyedReference)uddiEltFactory.createKeyedReference();
    catBagTm.addUddiElement(krTm2);
    krTm2.setTModelKey(CoreTModelConstants.TAXONOMY_KEY_UDDI_TYPE);
    krTm2.setKeyName("wsdlSpec");
    krTm2.setKeyValue("wsdlSpec");
    
    KeyedReference krTm3 =
     (KeyedReference)uddiEltFactory.createKeyedReference();
    catBagTm.addUddiElement(krTm3);
    krTm3.setTModelKey(CoreTModelConstants.TAXONOMY_KEY_UNSPSC_7_3);
    krTm3.setKeyName("application service providers");
    krTm3.setKeyValue("81.11.21.06.00");
    
    
  • Publishes the Google search interface tModel business operation.

    System.out.println("\nPublish the google search interface tModel.");
    TModel tMSaved = uddiClient.saveTModel(tModel);
    String szGoogleTModelKey = tMSaved.getTModelKey();
    System.out.println("The tModel is saved with tModelKey assigned to be " + 
                          szGoogleTModelKey);
    
    
  • Creates a businessEntity data structure that represents a Google-compatible service by using the UddiElementFactory instance.

    BusinessEntity businessEntity = 
      (BusinessEntity)uddiEltFactory.createBusinessEntity();
    businessEntity.setName("ACME search Inc.", "en");
    
    

    In the businessEntity data structure, uses the UddiElementFactory instance to create a CategoryBag data structure and its keyedReference data structure, which will be used for searching. Classify the businessEntity data structure under the "information services and data processing services" category.

    KeyedReference krBe1 = 
     (KeyedReference)uddiEltFactory.createKeyedReference();
    catBagBe.addUddiElement(krBe1);
    krBe1.setTModelKey(CoreTModelConstants.TAXONOMY_KEY_NAICS_1997);
    krBe1.setKeyName("Information Services and Data Processing Services");
    krBe1.setKeyValue("514");
    
    
  • Creates a businessService data structure that represents a Google-compatible service by using the UddiElementFactory instance.

    BusinessServices businessServices =
    (BusinessServices)uddiEltFactory.createBusinessServices();
    businessEntity.setBusinessServices(businessServices);
    BusinessService businessService = 
    (BusinessService)uddiEltFactory.createBusinessService();
    businessServices.addUddiElement(businessService);
    businessService.setName("ACME Web Search service", "en");
    
    

    In the businessService data structure, uses the UddiElementFactory instance to create a CategoryBag data structure and its keyedReference data structure, which will be used for searching. Classify the businessService data structure under the "application service providers" category.

    CategoryBag catBagBs = 
     (CategoryBag)uddiEltFactory.createCategoryBag();
    businessService.setCategoryBag(catBagBs);
    KeyedReference krBs1 = 
     (KeyedReference)uddiEltFactory.createKeyedReference();
    catBagBs.addUddiElement(krBs1);
    krBs1.setTModelKey(CoreTModelConstants.TAXONOMY_KEY_UNSPSC_7_3);
    krBs1.setKeyName("application service providers");krBs1.setKeyValue("81.11.21.06.00");
    
    
  • Creates the bindingTemplate data structure that represents a Google-compatible service by using the UddiElementFactory instance.

    BindingTemplates bindingTemplates = 
     (BindingTemplates)uddiEltFactory.createBindingTemplates();
    businessService.setBindingTemplates(bindingTemplates);
    BindingTemplate bindingTemplate = 
     (BindingTemplate)uddiEltFactory.createBindingTemplate();
    bindingTemplates.addUddiElement(bindingTemplate);
    
    
    • Creates and includes the access point in the bindingTemplate data structure by using the UddiElementFactory instance.

      AccessPoint accessPoint =
      (AccessPoint)uddiEltFactory.createAccessPoint();
      bindingTemplate.setAccessPoint(accessPoint);
      accessPoint.setUrlType("http");
      accessPoint.setContent("http://foobar.net/search-g");
      
      
    • Creates and includes the tModel instance details in the bindingTemplate data structure by using the UddiElementFactory instance.

      TModelInstanceDetails tModelInstanceDetails =
      (TModelInstanceDetails)uddiEltFactory.createTModelInstanceDetails();
      bindingTemplate.setTModelInstanceDetails(tModelInstanceDetails);
      
      
    • Declares that the bindingTemplate data structure implements the Google search interface.

      TModelInstanceInfo tModelInstanceInfo =
       (TModelInstanceInfo)uddiEltFactory.createTModelInstanceInfo();
      tModelInstanceDetails.addUddiElement(tModelInstanceInfo);
      tModelInstanceInfo.setTModelKey(szGoogleTModelKey);
      
      
  • Publishes the businessEntity data structure and its contained businessService and bindingTemplate data structures.

    System.out.println("Publish the ACME Search Inc. businessEntity...");
    BusinessEntity bESaved = uddiClient.saveBusiness(businessEntity);
    System.out.println("The saved businessEntity (in XML) is:");
    
    bESaved.setName("The ACME search Inc.", "en");
    BusinessEntity bEUpdated = uddiClient.saveBusiness(bESaved);
    
    
  • Uses the UddiElementFactory instance to retrieve an XmlWriter object. To view the raw XML data represented by an object, which extends UddiElement, marshall the element content to the writer, and then flush and close the writer.

    XmlWriter writerXmlWriter = 
     uddiEltFactory.createWriterXmlWriter(new PrintWriter(System.out));
    bESaved.marshall(writerXmlWriter);
    writerXmlWriter.flush();
    writerXmlWriter.close();
    
    
  • Closes the UddiClient instance when finished to release resources and to log out from the registry.

    uddiClient.close();
    

UddiPublisherAssertionExample.java Example

The uddidemo.zip file contains a Java program file, UddiPublisherAssertionExample.java, which provides Java programmers with a starting point that demonstrates the key constructs and the sequence in using the OracleAS UDDI Registry client library for publisher assertion-related operations. A publisherAssertion, which is a UDDI v2 feature, is an assertion made by a publisher who is expressing a particular fact about a business registration and its relationships to other business data within OracleAS UDDI Registry. A publisherAssertion is used to establish visible relationships between registered data. Once completed, a set of assertions can be seen by the general inquiry message named findRelatedBusinesses. The program example does the following:

  • Initializes instances of two UddiClients.

    UddiClient uddiClient1 = createUddiClient(szInquiryUrl, 
                                   szPublishingUrl, szUserName1, szPassword1);
    UddiClient uddiClient2 = createUddiClient(szInquiryUrl, szPublishingUrl,
                                   szUserName2, szPassword2);
    DispositionReport dispositionReport = null;
    
    
  • Creates the businessEntity data structures to be used.

    String bEKey1 = createBusinessEntity(uddiClient1, 
                           "bE1 - UddiPublisherAssertionExample");
    String bEKey2 =  createBusinessEntity(uddiClient2, 
                           "bE2 - UddiPublisherAssertionExample");
    
    
  • Creates, for uddiClient1, a publisherAssertion that represents a peer-to-peer relationship from bE1 to bE2.

    System.out.println("");
    System.out.println("uddiClient1 attempts to create a peer-to-peer relationship ");
    System.out.println("from bE1 to bE2...");
    dispositionReport = uddiClient1.addPublisherAssertion
               (createPeerToPeerPublisherAssertion(uddiClient1, bEKey1, bEKey2));
    System.out.println("Done.");
    
    
  • Makes a query for uddiClient1 for relationships yet to be established; that is, looking for those relationships that the toKey side has not yet acknowledged.

    AssertionStatusReport assertionStatusReport1 = 
            uddiClient1.getAssertionStatusReport
                      (AssertionStatusItem.COMPLETION_STATUS_TOKEY_INCOMPLETE);
    printOutXml("pending relationships for uddiClient1: case toKey incomplete", 
                  assertionStatusReport1);
    
    
  • Makes a query for uddiClient2 for relationships yet to be established; that is, looking for those relationships that the toKey side has not yet acknowledged.

    AssertionStatusReport assertionStatusReport2 =
      uddiClient2.getAssertionStatusReport(AssertionStatusItem.COMPLETION_STATUS_TOKEY_INCOMPLETE);
    printOutXml("pending relationships for uddiClient2: case toKey incomplete", 
                 assertionStatusReport2);
    
    
  • Shows uddiClient2 agreeing to the peer-to-peer relationship requested by creating a publisherAssertion.

    System.out.println("");
    System.out.println("uddiClient2 agrees to the peer-to-peer relationship ");
    System.out.println("from bE1 to bE2");
    dispositionReport = uddiClient2.addPublisherAssertion
            (createPeerToPeerPublisherAssertion(uddiClient2, bEKey1, bEKey2));
    System.out.println("Done.");
    
    
  • Makes another query for uddiClient2 for relationships yet to be established to see if there are other peer-to-peer relationships to be established. There are no more pending relationships to be established.

    AssertionStatusReport assertionStatusReport2After = 
              uddiClient2.getAssertionStatusReport
              (AssertionStatusItem.COMPLETION_STATUS_TOKEY_INCOMPLETE);
    printOutXml("pending relationships for client2: toKey incomplete (should be
      none)", assertionStatusReport2After);
    
    
  • Finds related businesses that have established peer-to-peer relationships (that have published assertions) by calling the general inquiry message findRelatedBusinesses.

    RelatedBusinessesList rbList = uddiClient1.findRelatedBusinesses(bEKey1,
                                     createPeerToPeerKeyedReference(uddiClient1),
                                     null);
    printOutXml("find all businesses that are peers to " + bEKey1, rbList);
    
    
  • Deletes a publisher assertion relationship between bE1 and bE2, owned by uddiClient1.

    System.out.println("");
    System.out.println("Delete a publisherAssertion...");
    dispositionReport = uddiClient1.deletePublisherAssertion
                  (createIdentityPublisherAssertion(uddiClient1,bEKey1, bEKey2));
    System.out.println("Done");
    
    
  • Shows another way of deleting all publisher assertion relationships owned by uddiClient1 by using the setPublisherAssertions call.

    System.out.println("");
    System.out.println("Delete all publisherAssertions of uddiClient1 ");
    System.out.println("by using setPublisherAssertions...");
    publisherAssertions = uddiClient1.setPublisherAssertions(null);
    printOutXml("Done. The current list:", publisherAssertions);
    

10.6 OracleAS UDDI Registry Administration

The following sections describe OracleAS UDDI Registry administration features:

10.6.1 Using the Command-Line Tool uddiadmin.jar

As administrator, you perform many administrative operations using the command-line tool uddiadmin.jar.

The command-line tool uddiadmin.jar is located in the ${ORACLE_Home}/uddi/lib/uddiadmin.jar file for UNIX and in the %ORACLE_Home_ORACLE%\uddi\lib\uddiadmin.jar file for Windows. In general, the command-line tool uses the following command format:

java -jar uddiadmin.jar  registry_admin_URL username password
 [-verbose] options_and_their_parameters

In the format, the parameters have the following meanings:

  • registry_admin_URL: A URL pointing to the administration end point:

    http://OracleAS-host:OracleAS-port/uddi/admin
    
    
  • username: The default user name is ias_admin. The username must belong to the uddiadmin group.

  • password: The default password is ias_admin123.

  • -verbose: This causes stack trace information to be printed out when an exception is encountered.

  • options_and_their_parameters: Any of the options listed in Table 10-3 and their parameters.

Table 10-3 shows the command-line options for the command-line tool uddiadmin.jar.

Table 10-3 Command-Line Options for uddiadmin.jar

Option Description
changeOwner
Changes the ownership of the named entity to the specified user.
correctChangeRecord
Applies the changeRecordCorrectionfile file contents and changeRecordNewDatafile file contents to the UDDI node.
deleteEntity
Deletes the named entity irrespective of the owner of the entity.
deleteRoleQuotaLimits
Deletes the group-to-quota-limits mappings for the specified quota groups.
destroyTModel
Permanently deletes the named tModel from the registry.
doPing
Sends a UDDI replication do_ping message to the replication end-point URL specified.
downloadReplicationConfiguration
Downloads the currently used replication configuration from a specified UDDI node.
getChangeRecord
Gets the detail of a change record specified by local_usn.
getHighWaterMarks
Gets the high-water marks vector from the specified UDDI node.
getProperties
Lists the current registry configuration parameters.
getRoleQuotaLimits
Displays the current J2EE role-to-quota limit mappings.
getUserDetail
Retrieves the details of the named user.
getUsers
Lists all existing users who have entities in the registry.
import
Imports all businessEntity and tModel data structures and a publisherAssertion in the named file.
setOperationalInfo
Sets some operational information for entities.
setProperty
Changes the value of the named configuration parameter.
setRoleQuotaLimits
Sets the quota limit for the specified quota group.
setWalletPassword
Sets the wallet password to be used for HTTPS communication among UDDI nodes for UDDI replication.
transferCustody
Transfers the custody of a tModel or businessEntity data structure to a new operator and a new authorized name.
uploadReplicationConfiguration
Uploads the specified replication configuration to a particular UDDI node.

For reference information about these options, see "Command-Line Options for the uddiadmin.jar Tool".

10.6.2 Configuring the Server

You use the following options of the command-line tool uddiadmin.jar to configure the server:

  • getProperties: Lists the current registry configuration parameters. The following shows an example:

    java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password  [-verbose] -getProperties
    
    

    See "getProperties" for more information on this option.

  • setProperty: Changes the value of the named configuration parameter. The OracleAS UDDI Registry J2EE application needs to be restarted for the parameters to take effect.


    Caution:

    Be very careful when using the setProperty option to change server configuration property values. Making an incorrect property setting could cause severe damage to the integrity of the registry.

    With the setProperty option, you can specify server configuration as described in "Modifying Properties at Installation or First-Use".

10.6.3 Managing Users

OracleAS UDDI Registry uses Oracle Internet Directory (OID) of the OracleAS Infrastructure as the default user repository. This is achieved through the use of LDAP-based provider of OC4J Java Authentication and Authorization Service (JAAS).

UDDI-specific OID groups are located under the cn=uddi_groups subtree of the group subtree of the OID default subscriber, and users are located under the user subtree of the OID default subscriber.

Table 10-4 summarizes the groups of UDDI users.

Table 10-4 Default UDDI User Groups

Group Description
uddiadmin Can access the administration end points and perform administrative activities.

Can perform all activities specified in the uddipublisher group.

uddipublisher Can access the publishing end point and save, update, or delete UDDI entities in the registry.
uddireplicator Can perform replication activities based on the replication schedule: send replication requests such as getChangeRecord to other UDDI nodes and apply the changeRecords received.


Note:

Do not remove any of these default UDDI groups.

In addition to the default UDDI groups, there are also a set of default groups for user quota purposes. As administrator, you can add, update, or remove the groups, based on the specific user quota policy that you may need to enforce.

By default, the users listed in Table 10-5 are created during installation. You can add users to, or remove users from, these groups.

Table 10-5 Default UDDI Users

Group User Names Comments
uddiadmin ias_admin Administration user. Typically, Oracle Enterprise Manager administrators also log in as ias_admin to publish to the UDDI registry through the Oracle Enterprise Manager integrated J2EE Web Services deployment and publishing wizard.
uddipublisher uddi_publisher

uddi_publisher1

Sample users for demonstrating publishing and different default quota groups.
uddireplicator uddi_replicator The default user that OracleAS UDDI Registry uses to perform UDDI replication activities in the background. This user should not be removed. If you do need to remove this user, make sure you add another user to the uddireplicator group. The user to start the Replication Client module must be updated as well, by modifying the orion-application.xml file in the oraudrepl.ear application.

Generic user management, such as creation, deletion, suspension, is handled by OID and its Oracle Delegated Administration Services. Refer to Oracle Identity Management Guide to Delegated Administration for more information.

User management, including operations such as creation, deletion, suspension, role management, is handled by the JAAS service of OC4J. Refer to Oracle Application Server Containers for J2EE Services Guide for more information.

However, to find out the authorized name of a user, use the getUsers or getUserDetail option of the uddiadmin.jar command-line tool:

  • getUsers: Lists all existing users who have entities in the registry. For example:

    java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password  
    [-verbose] -getUsers
    
    

    See "getUsers" for more information on this option.

  • getUserDetail: Retrieves the details of the named user, currently the authorized name of each user. For example:

    java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password  
    [-verbose] -getUserDetail username
    
    

    See "getUserDetail" for more information on this option.

10.6.4 Enforcing Quotas

OracleAS UDDI Registry provides a mechanism to enforce the number of entities a publisher can own. A publisher can own at most a specific number of tModel, publisherAssertion, businessEntity, and businessService data structures for each businessEnitity, and bindingTemplate data structures for each businessService, depending upon the quota group associated with the publisher. The quota group is guided by the user group to which the publisher is assigned.

OracleAS UDDI Registry uses a group-based mechanism for assigning quota limits to a publisher. When a new publisher is added, the OracleAS UDDI Registry administrator must associate the publisher with a quota group. Table 10-6 shows the predefined quota groups and quota limits for each entity that a publisher can own.

Table 10-6 Predefined Quota Groups and Their Limits

Quota Group Quota Limits per Entity

businessEntity businessService per businessEntity bindingTemplates per businessService tModel publisherAssertion
Default 1 4 2 100 10
uddi_unlimited_quota_group
Unlimited Unlimited Unlimited Unlimited Unlimited
uddi_lowlimits_quota_group
2 2 1 3 3
<Implicit>
UDDI_Administrators
Unlimited Unlimited Unlimited Unlimited Unlimited

The explicit Default quota group cannot be deleted. Users who are OracleAS UDDI Registry administrators are always assigned unlimited quota.

As OracleAS UDDI Registry administrator, you can also update a quota group, add a new quota group, delete a quota group, view the lists of quota groups and their quota limits, and associate a publisher with a quota group. The following sections describe each of these administrator tasks.

10.6.4.1 Updating the Limits of a Quota Group

To update the limits of a quota group, use the setRoleQuotaLimits option of the command-line tool uddiadmin.jar.

Set the quota limit value for the specified quota group. This option can be used to create a new group-to-quota-limit mapping or to update an existing mapping. The parameters are defined as follows:

  • roleName—name of the quota group to map to the specified limits

  • maxBE—maximum number of businessEntity data structures allowed

  • maxBSperBE—maximum number of businessService data structures per businessEntity allowed

  • maxBTperBS—maximum number of bindingTemplate data structures per businessEntity allowed

  • maxTM—maximum number of tModel data structures allowed

  • maxPA—maximum number of publisherAssertion data structures allowed

The value -1 means unlimited.

The following shows the format of the command:

java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
 -setRoleQuotaLimits roleName maxBE maxBSperBE maxBTperBS maxTM maxPA

See "setRoleQuotaLimits" for more information on this option.

10.6.4.2 Adding a New Quota Group (Advanced Operation)

To add a new quota group, perform the following steps:

  1. Oracle recommends that you back up the configuration files, application.xml, web.xml, and orion-application.xml, before you begin this process.

  2. Add the group to the user store, typically OID.

  3. Define the corresponding J2EE security role, partnerGroup, for the new group name you want to create in the orauddi.ear application. The settings must be added in both the application.xml and web.xml files of the orauddi.ear application.

  4. Define the J2EE security role to the user store mapping in the orion-application.xml file of the orauddi.ear application.

  5. Define the actual limits of the quota group using the setRoleQuotaLimits option of the command-line tool uddiaddmin.jar. See "Updating the Limits of a Quota Group" for more information.

10.6.4.3 Deleting a Quota Group (Advanced Operation)

To remove a quota group, perform the following steps:

  1. Remove the J2EE security role for the partnerGroup you want to remove from the orauddi.ear application. The settings must be removed from both the application.xml and web.xml files of the orauddi.ear application.

  2. Remove the J2EE security role to the user store mapping in the orion-application.xml file of the orauddi.ear application.

  3. Remove the actual limits of the quota group using the deleteRoleQuotaLimits option of the command-line tool uddiadmin.jar, as shown in the following example:

    java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
      -deleteRoleQuotaLimits roleName [roleName...]
    
    

    See "deleteRoleQuotaLimits" for more information on this option.

  4. Remove the group from the user store, typically OID.

10.6.4.4 Viewing the Lists of Quota Groups and Their Limits

To view the list of quota groups and their limits, use the getRoleQuotaLimits option of the command-line tool uddiadmin.jar. This option displays all the J2EE-role-to-quota-limit mapping currently set in the registry, as shown in the following example:

java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
 -getRoleQuotaLimits

See "getRoleQuotaLimits" for more information on this option.

10.6.4.5 Associating a Publisher with a Quota Group

When you add a user to the user store (OID or jazn-data.xml), you must place the user in a group so that it is assigned to the appropriate quota group. For example, with the pre-defined settings, administrators can assign a user to have the low quota limits by assigning the user to the uddi_lowlimits_quota_group group.

If a user does not belong to a particular group, the user is assigned the quota limits from the Default group. An OracleAS UDDI Registry administrator is always assigned unlimited quota.

10.6.5 Managing Administrative Entities

Use the following options of the command-line tool uddiaddmin.jar for administrative entity management:

  • deleteEntity: Deletes the named entity irrespective of the owner of the entity. Note that this operation performs a nonpermanent delete (hide) operation in the case of a tModel entity.

    See "deleteEntity" for reference information about this option.

  • destroyTModel: Permanently deletes the named tModel from the registry (as opposed to the UDDI-defined delete_tModel call, which is just hiding the tModel entity).

    See "destroyTModel" for reference information about this option.

  • changeOwner: Changes the ownership of the named entity to the new specified user.

    See "changeOwner" for reference information about this option.

10.6.6 Importing Entities

To import entities from a file, you use the import option of the command-line tool uddiaddmin.jar. You can import all businessEntity, tModel, and publisherAssertion data structures in the named file.

To import the businessEntity data structure, the named file for importing should contain a UDDI businessDetail XML document.

To import tModel data structures, the named file should contain a UDDI tModelDetail XML document. By importing them, entity keys (such as businessKey, serviceKey, bindingKey, tModelKey) are preserved. The operatorName and authorizedName fields, however, are not preserved. The operatorName field will be replaced by the operatorName configuration parameter of the registry. The owner of the imported entities is the administrator; hence, the authorizedName field will be the authorizedName of the administrator.

The import option is particularly useful in importing the well-known service interface specification tModel and classification tModel data structures from some authoritative sources.

Because the entity keys are preserved, you should be careful in evaluating the source of the entities to ensure there will not be a collision in entity keys.

For importing a publisherAssertion, two Boolean values are required. These Boolean values are used to indicate from which side (or both sides, when two Boolean values are true) the publisherAssertion is going to be inserted.

You can import in single mode, using the option -s, which does not allow partial success (some entities are imported and some are not, due to some error condition), or in multiple mode (-m), which does allow partial success.

The following shows the format of the import option:

-import [-s|-m] {-businesses filename | -tmodels filename |
 -assertions filename  -fromBusinessCheck {true|false}
 -toBusinessCheck {true|false} }

For example, the contents of the publisherAssertion file, assert.xml, could contain the following:

 <publisherAssertion generic="2.0" xmlns="urn:uddi-org:api_v2">
   <fromKey>22A5A0304C64-11D8-AB19-B8A03C50A862</fromKey>
   <toKey>27CC6702-7F6E-4395-A0B8-97D2FFB5F7634  </toKey>
   <keyedReference tModelKey="UUID:807A2C6A-EE22-470D-ADC7-E0424A337C03"
                   keyName="subsidiary"
                   keyValue="parent-child" />
 </publisherAssertion>

Then, to import the publisherAssertion data structure, use the following command:

java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
 -import -s -assertions assert.xml -fromBusinessCheck true
 -toBusinessCheck true

10.6.7 Setting Operational Information

You can use the setOperationalInfo option to set some operational information of entities, such as the operator name, authorized name, or timestamp of a businessEntity or tModel specified by a key, for example, following an import operation.

The setOperationalInfo option uses two syntax formats:

  • To change the operator name, the authorized name, or the timestamp, or all three, of a businessEntity or tModel specified by a key, use the following format:

    -setOperationalInfo {-businessKey key | -tModelKey key}
    [-newOperator OperatorName] [-newAuthorizedname authName] [-newTime timestamp]] 
    
    

    Any combination of operator name, authorized name, or timestamp of a businessEntity or tModel data structure is allowed.

  • To change only the timestamp of a businessService or bindingTemplate data structure, use the following format:

    -setOperationalInfo {-serviceKey key | -bindingKey key} [-newTime timestamp] 
    
    

See "setOperationalInfo" for more information on this option.

10.6.8 UDDI Replication

OracleAS UDDI Registry allows administrators to create a logical registry that comprises one or more OracleAS UDDI Registry implementations, as well as UDDI implementations from other vendors that also implement the UDDI v2 Replication Specification.

This section briefly describes the data replication process and the program interface required to achieve complete data replication among UDDI operator nodes that form a UDDI service. UDDI replication ensures that all operator nodes see all the changes that have originated at individual operator nodes. In addition, any inquiries made at any operator node within the UDDI service yield results consistent to those made at any other operator node within the UDDI service, hence the logical OracleAS UDDI Registry.

For detailed technical descriptions of concepts and definitions involved with UDDI replication, including replication processing, how to bring new UDDI operators online, checking and validation of replicated data, see the UDDI v2.0.3 Replication Specification. The sections that follow describe the Oracle implementation of UDDI replication.

10.6.8.1 Enabling UDDI Replication

To enable UDDI replication, as administrator, you must perform the following steps:

  1. Participate with and agree to the replication topology with UDDI administrators of other operator nodes. This involves editing the replication configuration (in the format specified in the UDDI v2 Replication Specification), and using the uploadReplicationConfiguration and downloadReplicationConfiguration options of the command-line tool uddiadmin.jar.

    java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
    -uploadReplicationConfiguration xml_file_containing_replication_configuration
    
    

    See "uploadReplicationConfiguration" for reference information on this option.

    Before you can download successfully, you must upload the replication configuration.

    java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
    -downloadReplicationConfiguration
    
    

    See "downloadReplicationConfiguration" for reference information on this option.

  2. Enable replication scheduling by setting the property status to the value 1:

    java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password 
     -setProperty oracle.uddi.server.scheduler.status=1
    
    

    See "setProperty" for reference information on this option. See "status" for reference information on this property.

  3. Enable update journal storage by setting the property startMaintainingUpdateJournal, to true:

    java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password 
    -setProperty oracle.uddi.server.replication.startMaintainingUpdateJournal=true
    
    

    See "setProperty" for reference information on this option. See "startMaintainingUpdateJournal" for reference information on this property.

After UDDI replication is started, as administrator, you can suspend or resume replication operations by stopping or starting the oraudrepl.ear application.

If HTTPS client certification is used, you must do the following:

  1. Obtain an exported Oracle wallet file using Oracle Wallet Manager and specify the exported wallet location by setting the property walletLocation. In the following example, the location of ewallet.p12 is relative to ${ORACLE_Home}/uddi/config on UNIX or %ORACLE_Home_ORACLE%\uddi\config on Windows:

    java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password 
     -setProperty oracle.uddi.server.replication.walletLocation=ewallet.p12
    
    

    This option needs to be set only once.

    See "setProperty" for reference information on this option. See "walletLocation" for reference information on this property.

  2. Use the setWalletPassword option to supply the wallet password, whenever the oraudrepl.ear application is started or restarted. Specify the uddirepl/admin/wallet path, as shown in the following example:

    java -jar uddiadmin.jar http://OracleAS-host:port/uddirepl/admin/wallet username password 
     -setWalletPassword=walletpassword
    
    

    Because the password is not persistent for security reasons, each time the application is restarted, this option must be invoked.

    See "setWalletPassword" for reference information on this option.

In some cases, the administrator of the source of the error must correct an invalid changeRecord operation that caused the error. The administrator can use the correctChangeRecord option of the command-line tool uddiadmin.jar to supply the correct changeRecord data. See "Handling Replication Exceptions" for more information.

10.6.8.2 Transferring Custody

To transfer the custody of a tModel or a businessEntity to a new operator and a new authorized name use the transferCustody option of the command-line tool uddiadmin.jar. This option is part of custody transfer as defined by the UDDI specification. See "transferCustody" for reference information on this option.

10.6.8.3 Setting Properties for the UDDI Replication Scheduler

You can use the following UDDI server properties to set UDDI replication scheduler properties:

  • timer_pool_size: Specifies the number of concurrently active threads used by the scheduler. The following example sets the number of threads to 1:

    java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
      -setProperty oracle.uddi.server.scheduler.timer_pool_size=1
    
    

    See "timer_pool_size" for reference information on this property.

  • status: Indicates whether or not the scheduler is enabled to send out replication requests. The value 0 sets the scheduler off; the value 1 sets it to on. The following example sets it to on:

    java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
      -setProperty oracle.uddi.server.scheduler.status=1
    
    

    See "status" for reference information on this property.

10.6.8.4 Handling Replication Exceptions

If any errors occur during replication operations, OracleAS UDDI Registry logs the error in the application.log file of the oraudrepl.ear application. You should investigate the cause of the error and correct each problem.

To correct the change records, use the correctChangeRecord option. This option applies the changeRecordCorrectionfile file contents and changeRecordNewDatafile file contents to the UDDI node. The content of these files must conform to the UDDI replication XML schema. This option is part of UDDI replication error recovery.

10.6.8.5 Advanced Configuration and Tuning for UDDI Replication

In the addition to the UDDI server properties described in previous sections, you can use the following server properties with replication:

You can use the following options of the command-line tool uddiadmin.jar to perform advanced configuration:

  • doPing: Sends a UDDI replication do_ping message to the replication end-point URL specified. This is similar to the ping command in TCP/IP that is used to check if the other end point is active. The optional walletPassword parameter is useful when the JVM, which receives the do_ping message, does not have a valid wallet password set.

    See "doPing" for reference information on this option.

  • getChangeRecord: Gets the detail of a change record specified by local_usn (an integer). This API is used in conjunction with the correctChangeRecord option to correct wrong or inconsistent data across different UDDI nodes with OracleAS UDDI Registry.

    See "getChangeRecord" for reference information on this option.

  • getHighWaterMarks: Gets the high-water marks vector from the specified UDDI node. The optional walletPassword parameter is useful when the JVM, which receives the do_ping message, does not have a valid wallet password set.

    See "getHighWaterMarks" for reference information on this option.

10.6.9 Registry-Based Category Validation

OracleAS UDDI Registry can perform a spell-check form of category value validation. As administrator, you can add or remove the set of categories that will be validated by the registry. Refer to the UDDI v2 specification for more information.

10.6.9.1 Adding a New Category for Registry-Based Validation

To add a new category, you must load the category values into the database and register the category with the registry. Perform the following steps:

  1. Publish the category to the registry by saving a new tModel data structure. For example, look at the tModel data structure named ntis-gov:naics:1997. You can use a third-party tool or the included sample Web applications link:

    http://OracleAS-host:OracleAS-port/uddi/

    If the tModel data structure has been defined in some other registry, you can also import it (instead of creating a new one, which results in different tModelKey entities) using the uddiadmin.jar command-line tool. See "Importing Entities" for more information on the import operation. The tModel data structure published should be classified as "unvalidatable" in the uddi-org:types taxonomy. Specifically, the following keyedReference should appear in the CategoryBag element of the tModel data structure:

    <keyedReference tModelKey="uuid:C1ACF26D-9672-4404-9D70-39B756E62AB4" keyName="" keyValue="unvalidatable" /> 
    
    
  2. Load the category values into the database. To do this, all the category values should be in a file using the following format:

    • Each line of the file describes one category value in the category. It should be in the following format:

      <category value> | <description of category value>
       | <category value of the parent>
      
      
    • If a category value is a root value, for example, it has no parent, the category value of the parent should be set to itself.

    • The line in the file for a category value should occur before the lines for all of its descendants.

      Examples can be found in the uddi/taxonomy directory for UNIX and in the uddi\taxonomy directory for Windows. Excerpts from the NAICS file are as follows:

      22|Utilities|22
      221|Utilities|22
      2211|Electric Power Generation, Transmission|221
      
      

      If your files use different characters from different languages, it is recommended that you save the file with UTF-8 encoding to avoid any problems that may arise, such as character corruption.

  3. Create a SQL*Loader control file to load the category file. An example is ${ORACLE_Home}/uddi/admin/naics-97.ctl for UNIX and %ORACLE_Home_ORACLE%\uddi\admin\naics-97.ctl for Windows. Copy the file and replace the category file name in the control file with the name of the one you create. Refer to the UDDI v2 specification for more information about generating a unique ID for the new category tModel.

  4. Load the category file into the database using SQL*Loader. Refer to Oracle Database Utilities, part of the Oracle Database documentation, for more information about using SQL*Loader.

  5. Configure the registry so that it recognizes the category that must be validated by using the command-line tool, uddiadmin.jar. For example, to add a new tModel entity with key UUID:FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFF0, use the setProperty option to set the property categoryValidationTModelKeys as follows:

    java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password 
    -setProperty "oracle.uddi.server.categoryValidationTModelKeys=
    'UUID:C1ACF26D-9672-4404-9D70-39B756E62AB4',
    'UUID:4E49A8D6-D5A2-4FC2-93A0-0411D8D19E88',
    'UUID:C0B9FE13-179F-413D-8A5B-5004DB8E5BB2',
    'UUID:CD153257-086A-4237-B336-6BDCBDCC6634',
    'UUID:FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFF0' "
    
    

    Make sure that you enter the command on one line, with no returns or extra spaces.

    Because the setProperty option defines all categories that need to be validated, you must specify all the existing tModelKey values plus the new tModelKey value to add a new category.

    You can also use the following server properties:

    • identifierValidation: Controls validation for all IdentifierBag entities.

    • operatorCategory: Determines whether or not additional entities may be categorized as an operator node, if the value of categoryValidation is true.

    • categoryValidation: Controls validation for all CategoryBag entities.

    • assertionKeyedRefValidation: Controls validation for all publisherAssertion keyedReference data structures.

    • tModelInstanceInfoKeyValidation: Determines if tModelKey existence validation occurs within tModelInstanceInfo elements.

    • addressTModelKeyValidation: Determines if tModelKey existence validation occurs within address elements.

    • hostingRedirectorValidation: Determines if hostingRedirector validation occurs within bindingTemplate elements. Validation ensures that the referenced bindingTemplate element exists and does not contain a hostingRedirector element.

    See "Server Configuration Properties" for information on these properties.

  6. Allow the registry users to use the category tModel published by removing the "unvalidatable" categorization done in Step 1. Specifically, the following keyedReference element should be removed from the CategoryBag element of the tModel data structure:

    <keyedReference tModelKey="uuid:C1ACF26D-9672-4404-9D70-39B756E62AB4"
     keyName="" keyValue="unvalidatable" />
    
    

10.6.9.2 Removing a Category from Registry-Based Validation

To remove a category from registry-based validation, you should unregister the category and remove the category values from the database. Perform the following steps:

  1. To unregister the category from the registry, remove it from the list of validated categories using the uddiadmin.jar command with the setProperty option to set the property categoryValidationTModelKeys.

    You do not have to (and in general should not) delete the tModel data structure from the registry.

  2. To remove the category values from the database, use the SQL*Plus script wurvcrm.sql in the uddi/admin directory for UNIX and in the uddi\admin directory for Windows. For example:

    sqlplus sys/sys-password @wurvcrm.sql
    
    

    When running this script, you will be prompted for the tModelKey value of the category to be removed. You should see that a set of rows has been deleted. If the result shows that 0 rows were deleted, you entered an invalid tModelKey value. Run the script again.

10.6.10 External Validation

Third parties can register new category and identifier schemes, and then control the validation process used by OracleAS UDDI Registry to perform external validation or checking. This enables a third-party category provider to validate the UDDI entities to be saved when the entity is categorized, or identified with the category, by providing a validate_values SOAP Web service.

The operator that calls the validate_values service passes a businessEntity, a businessService, or a tModel element as the sole argument to this call. This is the same data that is being passed within a save_business, save_service, or save_tModel API call. External validation is performed for any third-party category provider and identifier scheme that is classified as checked. A tModel element marked as checked asserts that it represents a categorization, identifier, or namespace tModel element that has a properly registered validation service.

If no error is found, the response is a dispositionReport message returning an errorCode value of E_success and an errno value of 0. If any error is found, or the called service needs to signal that the information being saved is not valid based on the validation algorithm chosen by the external service provider, then the service should raise a SOAP Fault and indicate either an errorCode value of E_invalidValue or E_valueNotAllowed. In either case, the error text indicates the keyedReference data that is being rejected, and the reason why.

Use the command-line tool uddiadmin.jar with the setProperty option to:

  • Enable external validation

  • Add an externally validated category to the registry

  • Remove an externally validated category from the registry

10.6.10.1 Enabling External Category Validation

To enable external category validation, issue the setProperty option to set the server property externalValidation as follows:

java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
 -setProperty oracle.uddi.server.externalValidation=true

10.6.10.2 Adding an Externally Validated Category to the Registry

To add an externally validated category to the registry, perform the following steps:

  1. Publish the new category as a tModel data structure to the registry. This data structure must be classified as checked under the uddi-org:types category.

  2. Register the external validation service of the category with the registry by updating the server property externalValidationTModelList using the setProperty option as follows:

    java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
     -setProperty oracle.uddi.server.externalValidationTModelList=key-value,
    URL-validation-service
    
    

    For example, if the category tModel published has the key "uuid:acme-taxonomy-key", and the URL of the validation service is http://acme.com/externalValidation, use the following command:

    java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
    -setProperty oracle.uddi.server.externalValidationTModelList=uuid:acme-taxonomy-key,
    http://acme.com/externalValidation
    
    
  3. Optionally, you can tune the timeout limit (in milliseconds) for calls to the external validation service using the server property externalValidationTimeout as follows:

    java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
    -setProperty oracle.uddi.server.externalValidationTimeout=5000
    

10.6.10.3 Removing an Externally Validated Category from the Registry

To remove an externally validated category from the registry, perform the following steps:

  1. Update the server property externalValidationTModelList using the setProperty option by supplying a null value for the URL-validation-service as follows:

    java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
    -setProperty oracle.uddi.server.externalValidationTModelList=key-value,""
    
    

    For example, if the category tModel published has the key "uuid:acme-taxonomy-key", and the URL of the validation service is http://acme.com/externalValidation, the command with the null entry will be as follows:

    java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
    -setProperty
     oracle.uddi.server.externalValidationTModelList=uuid:acme-taxonomy-key,""
    
    
  2. Deprecate or update the corresponding tModel data structure. If the tModel is not updated, the registry will reject any new UDDI entries that are categorized or identified by the category that was removed in subsequent save calls to the save_business, save_service, or save_tModel API.

10.6.11 Performance Monitoring and Tuning

On the back end of an Oracle database, UDDI servlets and the associated JDBC connection pools can be monitored using Oracle Enterprise Manager 10g and other standard database monitoring and tuning utilities.

In an OC4J standalone environment, performance information is typically available at:

http://oc4j-host-name:port-number/dmsoc4j/Spy

10.6.12 Data Backup and Restore Operations

You can back up and restore UDDI Registry data by using the standard Oracle database back up and restore operations. See the Oracle Backup and Recovery Concepts, part of the Oracle Database documentation set.

10.6.13 Database Configuration

The following sections describe some database-specific configuration information.

10.6.13.1 Database Character Set Should Be UTF-8

The database character set should be UTF-8 to accommodate all possible characters. However, you are absolutely certain that the data to be stored in the registry contains characters of a specific country or region (such as western Europe), you can use the appropriate database character set.

10.6.13.2 Database Character Set and Built-in ISO-3166 Classification

The UDDI specification mandates that the registry support the full UTF-8 character set. Oracle recommends, though does not require, using UTF-8 as the character set for the OracleAS Infrastructure 10g database if OracleAS UDDI Registry is used.

If the database is not configured with the UTF-8 character set or its equivalent or superset, there could be data corruption and error due to loss in character set conversion to or from UTF-8. Refer to the Oracle Globalization Support Guide for details.

In particular, the descriptions in the UDDI built-in ISO-3166 classification contain descriptions with non-ASCII characters, such as some Western European characters and some Eastern European characters for the names of cities or regions. In order to support the non-UTF-8 database, all non-ASCII characters in the descriptions are replaced with ASCII characters as an approximation.

If you do have a UTF-8 database, you can upgrade the built-in ISO-3166 classification to the one with accurate descriptions using the following instructions:

  • Delete the existing ISO-3166 classification by running the SQL script, wurrmiso.sql, for example:

    cd ${ORACLE_Home}/uddi/admin
    sqlplus system/manager @wurrmiso.sql
    
    
  • Load the ISO-3166 classification with accurate descriptions by using SQL* Loader control file iso3166-99.ctl, for example:

    cd ${ORACLE_Home}/uddi/admin
    sqlldr userid=system/manager control=iso3166-99.ctl
    

10.6.13.3 Functional Index Must Be Enabled

The functional index must be enabled to support index-based, case-insensitive search. The following initialization parameter is involved: query_rewrite_enabled=true

In addition, the cost-based optimizer must be turned on for analyzing all tables or indexes in the UDDISYS schema. For example:

execute dbms_stats.gather_schema_stats(ownname=>'UDDISYS',cascade=>true);

10.6.13.4 Accuracy of Modified Timestamps of UDDI Entities

The accuracy of modified timestamps of UDDI entities is dependent on the version and compatibility of the database. If the database compatibility is release 9.0.1 or later, the modified timestamps are of SQL type TIMESTAMP, with accuracy up to microseconds. If the database compatibility is prior to release 9.0.1, the modified timestamps are of SQL type DATE, with accuracy up to seconds.

10.6.14 Transport Security

In general, the Inquiry API does not require authentication. However, if the inquiry end point needs to be protected, transport-level authentication, such as HTTP BASIC authentication and HTTPS Secure Sockets Layer (SSL) client authentication, can be enabled by configuring the web.xml file. A security role, uddiguest, is reserved for accessing the protected inquiry end point. Refer to Oracle Application Server Containers for J2EE Services Guide and Oracle Application Server Containers for J2EE User's Guide for more information about security roles and related security configuration.

For the publishing end-point URL, consider allowing only HTTPS access. To disable HTTP access, edit the web.xml file of the orauddi application to enforce data confidentiality and make adjustments to HTTP servers. For example, to disable HTTP access in the web.xml file, use the following code:

<user-data-constraint>
    <transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>

Refer to the chapter on security in Oracle Application Server Containers for J2EE User's Guide and to Oracle Application Server Containers for J2EE Services Guide for more information.

Similarly, you can set up HTTPS access for the administrative end point and the UDDI Replication end point in the same way.

10.7 UDDI Open Database Support

In addition to the OracleAS Infrastructure 10g database, the following databases are supported by OracleAS UDDI Registry:

For Microsoft SQL Server and IBM DB2, the Oracle Application Server DataDirect Connect JDBC driver is needed.

The steps described in the following sections assume that the relevant database server has been installed. These instructions also assume that Oracle Application Server Portal has been installed, which copies the relevant UDDI files to ${ORACLE_Home}/uddi/admin on UNIX or %ORACLE_Home_ORACLE%\uddi\admin on Windows.


Note:

You can also deploy OracleAS UDDI Registry in a standalone OC4J installation. See the Oracle UDDI Support for Web Services Readme for Standalone Kit on OTN for more information:
http://www.oracle.com/technology/tech/webservices/htdocs/uddi/index.html

As you follow the instructions in that document, you can specify arbitrary values for the db.host, db.port, and db.sid options to the ant command. Then, you will change those values later when you define the data source in the following sections.


10.7.1 Microsoft SQL Server

The following sections describe installation and configuration information with SQL Server.

10.7.1.1 Script Source Directory

Installation must be performed from a Windows machine. If the %ORACLE_Home%\uddi\admin\mssql directory is not accessible from the SQL Server machine, then copy this directory to a location that is accessible. This directory (or the original %ORACLE_Home%\uddi\admin\mssql if no copying is necessary) will be referred to as %MSSQL_HOME_DB%.

10.7.1.2 Create the Database and User

The %MSSQL_HOME_DB%\wurcreatedb_mssql.sql script has been provided to create the uddisys database and uddisys user for a SQL Server instance in mixed-authentication mode. If you are using Windows authentication or wish to alter some of the settings in this script, you may do so as long as all the following requirements are met:

  • The collation for the uddisys database must be case-sensitive.

  • Recursive triggers must be enabled on the uddisys database.

  • The uddisys user must have the uddisys database as its default database.

  • The uddisys user must be a member of the db_owner role for the uddisys database.

To run the script with the Microsoft osql utility, use the administrator login (sa) and the administrator password. The following example assumes that the administrator password is sa, but if it is not, please substitute the appropriate password for your environment:

osql -S server -U sa -P sa  -i wurcreatedb_mssql.sql

In the example, server is the server hosting the SQL Server instance.

If you receive the following error, make sure to change the authentication mode for SQL Server to SQL Server and Windows mode:

"Login failed for user 'sa'. Reason: Not associated with a trusted SQL Server Server Connection."

To change the authentication mode, open the SQL Server enterprise manager, navigate to your server, right-click and choose properties, click the security tab and select SQL Server and Windows. Then, restart SQL Server.

10.7.1.3 Install the Schema

Go to the %MSSQL_HOME_DB% directory. Use the osql utility to execute the SQL script wurinst_mssql.sql using the uddisys/uddisys account created in "Create the Database and User".The syntax is as follows:

osql -S server -U user -P password -d database -i wurinst_mssql.sql

In the example, server is the server hosting the SQL Server instance.For example:

osql -S server-machine -U uddisys -P uddisys -d uddisys -i wurinst_mssql.sql

10.7.1.4 Import BUILTIN_CHECKED_CATEGORY Table Entries

Import the iso3166-99_tModelKey.txt, naics-97_tModelKey.txt, and unspsc-73_tModelKey.txt files from the %MSSQL_HOME_DB% directory into the BUILTIN_CHECKED_CATEGORY table as follows:

  1. Select the Import and Export Data option from the SQL Server Start menu options. Click Next.

  2. For the Data Source, select the last option, Text File. Then, provide the name and location of the appropriate text file, %MSSQL_HOME_DB%\iso3166-99_tModelKey.txt. Click Next.

  3. The default file format should be Delimited. Accept this by clicking Next.

  4. Set the delimiter to the vertical bar character (|). Click Next.

  5. Select the uddisys database for the destination. Provide the appropriate authentication mechanism and credentials, which are SQL Server Authentication with user uddisys and password uddisys, by default. Make sure that the selected database is uddisys. Click Next.

  6. Click the Destination and select the BUILTIN_CHECKED_CATEGORY table.

  7. Click Transform. Map TMODEL_KEY to Col001, KEY_NAME to Col003, KEY_VALUE to Col002, and PARENT_VALUE to Col004. Click OK.

  8. Click Next.

  9. Click Next to run immediately, and click Finish to start.

  10. Repeat this process for the naics-97_tModelKey.txt and unspsc-73_tModelKey.txt files.


    Note:

    If the character set of your database is not UTF-8, do not use the script iso3166-99.txt to load the ISO-3166 taxonomy because the taxonomy contains characters from different languages. Instead, use the script iso3166-99-ascii.txt to load an ASCII-only version of the taxonomy.

10.7.1.5 Configure OC4J to Use SQL Server

Define a data source with the name and location set to jdbc/OracleUddi to reflect that SQL Server is the desired database, similar to the following:

<data-source
    class="com.evermind.sql.DriverManagerDataSource"
    name="jdbc/OracleUddi"
    location="jdbc/OracleUddi"
    connection-driver="com.oracle.ias.jdbc.sqlserver.SQLServerDriver"
    username="uddisys"
    password="uddisys"
url="jdbc:oracle:sqlserver://server:1433;SelectMethod=cursor;User=uddisys;Password=uddisys"
/>

Note that server is the network name or IP address of the server hosting the SQL Server instance used for OracleAS UDDI Registry. Be sure you enter the line that begins url= on one line.

The data source needs to be accessible by the orauddi.ear and oraudrepl.ear applications.

Refer to the Data Sources chapter in the Oracle Application Server Containers for J2EE Services Guide for more information.

Restart the UDDI server for these changes to take effect.

10.7.2 IBM DB2

The following sections describe installation and configuration information for OracleAS UDDI Registry relative to IBM DB2.

10.7.2.1 Script Source Directory

If the ${ORACLE_Home}/uddi/admin/db2 directory is not accessible from the machine with the relevant DB2 tools, then copy this directory to a location that is accessible. This directory will be referred to as ${DB2_HOME_DB} on UNIX or %DB2_HOME_DB% on Windows.

10.7.2.2 Create the Database and User

Go to the ${DB2_HOME_DB} directory on UNIX or the %DB2_HOME_DB% directory on Windows. The wurcreatedb_db2.sql script is provided for creating the uddisys database. The user is responsible for creating a uddisys user with password uddisys based on the authentication scheme that is being used for DB2. By default, this requires creating a uddisys user at the operating system level. On Windows, the uddisys user should belong to the local administrator group.

If you wish to alter some of the settings in this script, you may do so as long as both the following requirements are met:

  • The default tablespace for the uddisys database must be at least 8 KB pages. This also requires providing a buffer pool that will support a page size of at least 8 KB.

  • The value of the applheapsz parameter must be increased to approximately 12800 pages.

To run the script, start the DB2 Command Line Processor by entering db2 in UNIX or db2cmd in Windows. Then, execute the script:

db2 -t +p < wurcreatedb_db2.sql

The option -t allows the use of semicolons to terminate SQL statements and +p suppresses prompting.

10.7.2.3 Install the Schema

Run the wurinst_db2.sql script. This also triggers the wurcreat.sql, wurdbsql.sql, and wurpopul.sql scripts.

To run these scripts, launch the command-line processor as previously described, then enter the following:

db2 -t +p < wurinst_db2.sql

10.7.2.4 Import BUILTIN_CHECKED_CATEGORY Table Entries

Import the iso3166-99_tModelKey.txt, naics-97_tModelKey.txt, and unspsc-73_tModelKey.txt files into the BUILTIN_CHECKED_CATEGORY table as follows:

  1. Right-click the table BUILTIN_CHECKED_CATEGORY from the Control Center and select IMPORT.

  2. Specify the Import file as ${DB2_HOME_DB}/iso3166-99_tModelKey.txt for UNIX or %DB2_HOME_DB%\iso3166-99_tModelKey.txt for Windows.

  3. Select Delimited ASCII format (DEL). Click Options and select the vertical bar character (|) as the delimiter for Column delimiter (COLDEL).

  4. Use the INSERT import mode (the default).

  5. Set the Commit records equal to 500.

  6. For the Message file, enter ${DB2_HOME_DB}/uddi/admin/db2/iso3166-99_tModelKey.log for UNIX or %DB2_HOME_DB%\uddi\admin\db2\iso3166-99_tModelKey.log for Windows.

  7. Go to the Columns tab. Select Include Columns by Position. Map TMODEL_KEY to 1, KEY_NAME to 3, KEY_VALUE to 2, and PARENT_VALUE to 4.

  8. Click OK to run the import process.

  9. Repeat this process for the naics-97_tModelKey.txt and unspsc-73_tModelKey.txt files.


    Note:

    If the character set of your database is not UTF-8, do not use the script iso3166-99.txt to load the ISO-3166 taxonomy because the taxonomy contains characters from different languages. Instead, use the script iso3166-99-ascii.txt to load an ASCII-only version of the taxonomy.

10.7.2.5 Configure OC4J to Use DB2

The following sections describe how to create the DB2 package and modify the URL for regular use.

10.7.2.5.1 Create a DB2 Package

Define a data source with the name and location set to jdbc/OracleUddi to reflect that DB2 is the desired database, similar to the following:

<data-source
    class="com.evermind.sql.DriverManagerDataSource"
    name="jdbc/OracleUddi"
    location="jdbc/OracleUddi"
    connection-driver="com.oracle.ias.jdbc.db2.DB2Driver"
    username="uddisys"
    password="uddisys"
url="jdbc:oracle:db2://servername:50000;databaseName=UDDISYS;
PackageName=JDBCPKG;DynamicSections=512;
CreateDefaultPackage=TRUE;ReplacePackage=true"
/>

Note that servername is the network name or IP address of the server hosting the DB2 instance used for the UDDI registry. Also, the line that begins with url and the two subsequent lines should be on one line, without spaces or returns. They are presented here on three lines for readability.

The data source needs to be made accessible by editing the data-sources.xml files in the corresponding orauddi.ear and oraudrepl.ear applications.

Refer to the Data Sources chapter in the Oracle Application Server Containers for J2EE Services Guide for more information.

Now, connect to the UDDI inquiry servlet end point, as shown in the following example, so that these initial URL connection strings will be used to create the appropriate default package in DB2:

http://OracleAS-host:port/uddi/inquiry

If the request to the inquiry servlet end point hangs or fails, from the DB2 Control Center, check for the JDBCPKGA and JDBCPKGB packages under the application objects of the uddisys database. If the packages have been created, stop the OC4J instance and proceed with modifying the URL, as described in the next section.

10.7.2.5.2 Modify the URL for Regular Use

Now that the DB2 package has been created, update the data source defined in the previous step (see "Create a DB2 Package") and change the URL attribute from:

url="jdbc:oracle:db2://servername:50000;databaseName=uddisys;
PackageName=JDBCPKG;DynamicSections=512;
CreateDefaultPackage=TRUE;ReplacePackage=true"

to:

url="jdbc:oracle:db2://servername:50000;databaseName=uddisys;
PackageName=JDBCPKG;DynamicSections=512"

In the preceding examples, the text should be on one line, without spaces or returns. They are presented here on multiple lines for readability.

Note that the last two parameters, CreateDefaultPackage and ReplacePackage, have been removed from the final URL attribute.

Once these changes have been made to the data-sources.xml files in the orauddi.ear and oraudrepl.ear applications, restart the server for the changes to take effect.

Then, connect to the UDDI inquiry servlet end point again, as shown in the following example:

http://OracleAS-host:port/uddi/inquiry

The OracleAS UDDI Registry page is displayed. You should see the message: "Welcome! Your registry is now up and running."

10.7.3 Other Oracle Database (Non-Infrastructure)

The following sections describe installation and configuration information for an Oracle database that is not an OracleAS Infrastructure database.

10.7.3.1 Script Source Directory

If the /uddi/admin directory, located at ${ORACLE_Home}/uddi/admin on UNIX or %ORACLE_Home_ORACLE%\uddi\admin on Windows, is not accessible from the server with the relevant Oracle tools, then copy this directory to a location that is accessible.

10.7.3.2 Create the Database and User

Create the uddisys database and the uddisys user, by taking the following steps:

  1. Go to the ${ORACLE_Home} directory on UNIX or the %ORACLE_Home_ORACLE% directory on Windows.

  2. Use SQL*Plus to execute the SQL script wurinst.sql using the sys user account. For example:

    sqlplus "sys/change_on_install as sysdba" @wurinst.sql
    
    

The schema uddisys is created with the password uddisys. A log file wurinst.log is produced.

10.7.3.3 Populate the Validated Taxonomy Codes

Populate the validated taxonomy codes using SQL*Loader with the three control scripts: naics-97.ctl, iso3166-99.ctl, and unspsc-73.ctl. For example:

sqlldr userid=uddisys/uddisys control=naics-97.ctl
sqlldr userid=uddisys/uddisys
   control=unspsc-73.ctl
sqlldr userid=uddisys/uddisys  control=iso3166-99.ctl

Note:

If the character set of your database is not UTF-8, do not use the script iso3166-99.ctl to load the ISO-3166 taxonomy because the taxonomy contains characters from different languages. Instead, use the script to load an ASCII-only version of the taxonomy:
sqlldr userid=uddisys/uddisys control=iso3166-99-ascii.ctl

10.7.3.4 Configure OC4J to Use the Non-OracleAS Infrastructure Database

Define a data source with the name and location set to jdbc/OracleUddi to reflect that a non-OracleAS Infrastructure database is the desired database, similar to the following:

<data-source
    class="oracle.jdbc.pool.OracleConnectionCacheImpl"
    name="jdbc/OracleUddi"
    location="jdbc/OracleUddi"
    connection-driver="oracle.jdbc.driver.OracleDriver"
    username="uddisys"
    password="uddisys"
url="jdbc:oracle:thin:@servername:1521:oracle sid"
/>

Note that servername is the network name or IP address of the server hosting the non-OracleAS Infrastructure database instance used for the UDDI registry.

The data source needs to be accessible by the orauddi.ear and oraudrepl.ear applications.

Refer to the Data Sources chapter in the Oracle Application Server Containers for J2EE Services Guide for more information.

Restart the UDDI server for these changes to take effect.

10.8 OracleAS UDDI Registry Server Error Messages

The error codes listed are used by UDDI administrators. In general, UDDI error code E_fatalError can represent various server-side errors that an administrator has to handle. The specific server-side error is captured in the J2EE application log file. The log file, application.log, for the orauddi.ear application is typically located under the J2EE_HOME/application-deployments/orauddi directory.

The log file, application.log, for the oraudrepl.ear application is typically located under the J2EE_HOME/application-deployments/oraudrepl directory. The reference provides additional information for an administrator to diagnose and resolve problems.

WUR-00010: An attempt was made to update a configuration parameter that does not exist ''{0}''.
Cause: The named UDDI server configuration parameter does not exist.
Action: Correct the spelling of the name of the configuration parameter to be updated. Refer to the configuration parameter reference information for details.
WUR-00011: An attempt was made to update a configuration parameter ''{0}'' in uddiserver.config. That file cannot be found.
Cause: The UDDI server configuration file uddiserver.config could not be found.
Action: Make sure that the JVM property oracle.home of the OC4J instance is defined properly.
WUR-00012: The specified user name, ''{0}'', is not a name that is known to the registry.
Cause: The named user does not exist in the registry.
Action: Correct the spelling of the named user.
WUR-00013: The 'Default' role for publishing limits may not be deleted.
Cause: An attempt was made to remove the system-defined user quota role 'Default.'
Action: Do not delete the user quota role 'Default.' If the 'Default' user quota role is not desirable, set the quota limits to zero to disable it.
WUR-00100: An internal error occurred while marshaling the response.
Cause: An unexpected internal error occurred in writing the response to a client.
Action: Identify and correct the internal error. The internal error is embedded in the details of the error.
WUR-00101: An internal error occurred while unmarshaling the request.
Cause: An unexpected internal error occurred in parsing the request sent by a client.
Action: Identify and correct the internal error. The internal error is embedded in the details of the error.
WUR-00104: The value of the configuration parameter named ''{0}'' is invalid.
Cause: The value of the named UDDI server configuration parameter was invalid.
Action: Refer to the configuration parameter reference information for the valid values. Use the UDDI administration tool to update the configuration parameter.
WUR-00105: A database error with SQL code ''{0}'' occurred while trying to ''{1}''.
Cause: An unexpected database error occurred in carrying out the named action.
Action: Identify and correct the database error. The database error is embedded in the details of the error.
WUR-00106: An internal error caused the request to fail to make the specified updates. While rolling back the changes, another error occurred; this leaves data in an unpredictable state.
Cause: An unexpected database error occurred in rollback phases of error processing.
Action: Identify and correct the database error. The database error is embedded in the details of the error.
WUR-00107: An internal error occurred while committing the requested changes to the registry; this leaves data in an unpredictable state.
Cause: An unexpected database error occurred in committing the requested changes.
Action: Identify and correct the database error. The database error is embedded in the details of the error.
WUR-00108: An internal error occurred while trying to get a connection to the underlying database.
Cause: An unexpected database error occurred in obtaining a database connection to serve the request.
Action: Identify and correct the database error. The database error is embedded in the details of the error.
WUR-00109: An internal error occurred while trying to close a connection to the underlying database.
Cause: An unexpected database error occurred during the release of the database connection after the request was served.
Action: Identify and correct the database error. The database error is embedded in the details of the error.
WUR-00110: An internal error occurred while trying to create and set up a data source abstraction for the underlying database.
Cause: An unexpected internal error occurred while creating the database connection pool.
Action: Identify and correct the internal error. The internal error is embedded in the details of the error.
WUR-00111: An internal error occurred while trying to perform a JNDI lookup and locate of the object ''{0}''.
Cause: An internal error occurred in obtaining the named object from the JNDI context. Examples of possible objects include database connection pools, message queues, and so forth.
Action: Identify and correct the internal error. The internal error is embedded in the details of the error.
WUR-00113: An internal error occurred while trying to access the repository API to set up a data source abstraction.
Cause: An unexpected internal error occurred while creating the database connection pool using Oracle Application Server metadata repository access API.
Action: Identify and correct the internal error. The internal error is embedded in the details of the error.
WUR-00114: An internal error occurred while trying to generate a Universal Unique Identifier (UUID).
Cause: An unexpected internal error occurred while generating a UUID.
Action: Identify and correct the internal error. The internal error is embedded in the details of the error.
WUR-00115: The registry was unable to retrieve OC4J-specific environment settings from the J2EE container; the user ''{0}'' cannot be authenticated.
Cause: An unexpected internal error occurred while authenticating the user. The error is usually due to incorrect settings in web.xml or using an unsupported version of the OC4J container.
Action: Identify and correct the internal error. The internal error is embedded in the details of the error.
WUR-00116: An internal error occurred while performing the automatic postinstallation configuration for the UDDI registry. Regular registry operations cannot proceed if the registry is not properly configured.
Cause: An unexpected internal error occurred in performing the automatic postinstallation configuration for the UDDI registry.
Action: Identify and correct the internal error. The internal error is embedded in the details of the error.
WUR-00117: Cannot close data source properly.
Cause: An unexpected internal error occurred while closing the database connection pool during shutdown of the UDDI registry.
Action: Identify and correct the internal error. The internal error is embedded in the details of the error.
WUR-00200: An internal error occurred during external validation.
Cause: An unexpected internal error occurred while making a validation call to an external validation service.
Action: Identify and correct the internal error. The internal error is embedded in the details of the error.
WUR-00201: An internal error occurred during external validation while processing the in-memory request.
Cause: An unexpected internal error occurred while processing the UDDI entities in the request before they were sent for external validation.
Action: Identify and correct the internal error. The internal error is embedded in the details of the error.
WUR-00202: An internal error occurred during external validation because the tModel list property, ''{0}'', has the wrong format.
Cause: The value of the UDDI server configuration property, oracle.uddi.server.externalValidationTModelList, was invalid.
Action: Correct the value. Refer to the configuration parameter reference information for details.
WUR-00203: An internal error occurred during external validation because the timeout property, ''{0}'', is not the right integer format.
Cause: The value of the UDDI server configuration property, oracle.uddi.server.externalValidationTimeout, was invalid.
Action: Correct the value. Refer to the configuration parameter reference information for details.
WUR-00204: An internal error occurred during external validation because the response is not a correct DispositionReport.
Cause: DispositionReport returned by the external validation service was invalid. For example, DispositionReport was empty.
Action: Contact the external validation service provider.
WUR-00205: An internal error occurred during external validation because the response is not expected. The response is of code ''{0}'' with message ''{1}''.
Cause: DispositionReport returned by the external validation service contained an unexpected DispositionReport error number.
Action: Contact the external validation service provider.
WUR-00300: DB schema version is missing. Please check DB for VERSION table.
Cause: The version of the database schema for persistent storage was missing.
Action: Contact Oracle Support Services.
WUR-00301: DB schema version ''{0}'' is incompatible with mid-tier version. DB schema must be updated to make the UDDI registry function.
Cause: The version of the database schema for persistent storage was not supported by the version of the registry being used.
Action: Upgrade the database schema to the latest version. Refer to the UDDI database schema upgrade documentation for details.
WUR-00302: An internal error occurred while trying to retrieve and load the UDDI DELTA server property file.
Cause: An internal error occurred while initializing the UDDI registry in the backward compatibility mode with an older version of the database schema.
Action: Contact Oracle Support Services.
WUR-00303: This operation is not allowed by DB schema version ''{0}''. You must upgrade DB schema to the latest version to carry out this operation.
Cause: The requested operation was not supported because the UDDI registry was running in the backward compatibility mode with an older version of the database schema.
Action: Upgrade the database schema to the latest version. Refer to the UDDI database schema upgrade documentation for details.
WUR-05001: Cannot find the UDDI entity just saved.
Cause: An unexpected internal error occurred in updating the update journal.
Action: Contact Oracle Support Services.
WUR-05002: Cannot perform custody transfer for an entity that is not businessEntity or tModel. The key of the offending entity is ''{0}''.
Cause: In the custody transfer change record, the specified UDDI entity is not businessEntity or tModel.
Action: Contact the administrator of the UDDI node where the change record originated.
WUR-05003: Warning: Received a duplicate change record originating from node ''{0}'' with usn ''{1}''.
Cause: A duplicate change record sent from the named UDDI node was detected.
Action: No action is needed. This is merely an informational message.
WUR-05004: Received an out-of-order change record originating from node ''{0}'' with usn ''{1}''. The change record with usn ''{2}'' has been processed.
Cause: The named change record was received after a change record with a larger update sequence number (USN) had been processed.
Action: Contact the administrator of the UDDI node where the change record originated.
WUR-05005: The change record originating from node ''{0}'' with usn ''{1}'' is invalid because the named node is not recognized.
Cause: The originating node of the named change record was not recognized. In other words, the node was not recorded in the replication communication graph.
Action: Contact the administrator of the UDDI node that provided the change record.

Command-Line Options for the uddiadmin.jar Tool

The following sections describe the options for the uddiadmin.jar command-line tool. In most cases, the command line uses the following format (setWalletPassword uses a different URL):

java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
[-verbose] options_and_their_parameters

Make sure that you enter the command on one line. For more information about the uddiadmin.jar command-line tool, see "Using the Command-Line Tool uddiadmin.jar".


changeOwner

Format

-changeOwner new_username {-businessKey business_Key | -tModelKey tModel_Key}

Description

Changes the ownership of the named entity to the new specified user.


correctChangeRecord

Format

-correctChangeRecord changeRecordCorrectionfile changeRecord_NewDatafile

Description

Applies the changeRecordCorrectionfile file contents and changeRecordNewDatafile file contents to the UDDI node. The content of these files must conform to the UDDI replication XML schema. This option is part of UDDI replication error recovery.


deleteEntity

Format

-deleteEntity {-businessKey business_Key | -serviceKey serviceKey | -bindingKey binding_Key | -tModelKey tModel_Key}

Description

Deletes the named entity irrespective of the owner of the entity. Note that this operation performs a nonpermanent delete (hide) operation in the case of a tModel entity.


deleteRoleQuotaLimits

Format

-deleteRoleQuotaLimits role_Name [role_Name ...]

Description

Deletes the group-to-quota-limit mappings for the specified quota groups. See "Deleting a Quota Group (Advanced Operation)" for information on using this option.

Example
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
 -deleteRoleQuotaLimits role_Name 

destroyTModel

Format

-destroyTModel tModel_Key

Description

Permanently deletes the named tModel from the registry (as opposed to the UDDI-defined delete_tModel call, which is just hiding the tModel entity).


doPing

Format

-doPing replicationEndPointUrl [-timeout timeInMilliseconds ][ -walletPassword wallet_password]

Description

Sends a UDDI replication do_ping message to the replication end-point URL specified. This is similar to the ping command in TCP/IP that is used to check if the other end point is active. The optional walletPassword parameter is useful when the JVM, which receives the do_ping message, does not have a valid wallet password set.

Example
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
-doPing http://OracleAS-host:port/uddirepl/replication

downloadReplicationConfiguration

Format

-downloadReplicationConfiguration

Description

Downloads the currently used replication configuration from a specified UDDI node within OracleAS UDDI Registry. You must upload a replication configuration before you can successfully download one. See "Enabling UDDI Replication" for information about using this option.

Example
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
-downloadReplicationConfiguration

getChangeRecord

Format

-getChangeRecord local_usn

Description

Gets the detail of a change record specified by local_usn (an integer). This API is used in conjunction with the CorrectChangeRecord option to correct wrong or inconsistent data across different UDDI nodes with OracleAS UDDI Registry.


getHighWaterMarks

Format

-getHighWaterMarks replicationEndPointUrl [ -walletPassword wallet_password]

Description

Gets the high-water marks vector from the UDDI node specified by the replicationEndPointUrl parameter. The optional walletPassword parameter is useful when the JVM, which receives the do_ping message, does not have a valid wallet password set.

Example
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
-getHighWaterMarks http://OracleAS-host:port/uddirepl/replication

getProperties

Format

-getProperties

Description

Lists the current registry configuration parameters. See "Configuring the Server" for information about using this option.

Example
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password 
 -getProperties

getRoleQuotaLimits

Format

-getRoleQuotaLimits

Description

Displays all the J2EE-role-to-quota-limits mappings that are currently set in the registry. See "Viewing the Lists of Quota Groups and Their Limits" for information about using this option.

Example
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
 -getRoleQuotaLimits

getUserDetail

Format

-getUserDetail username_to_retrieve

Description

Retrieves the details of the named user, currently the authorizedName of each user. See "Managing Users" for information about using this option.

Example
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password  
 -getUserDetail username

getUsers

Format

-getUsers

Description

Lists all existing users who have entities in the registry. See "Managing Users" for information about using this option.

Example
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
[-verbose] -getUsers

import

Format

-import [-s|-m]

-businesses filename |

-tmodels filename |

-assertions filename -fromBusinessCheck {true|false}

-toBusinessCheck {true|false} ]

Description

Imports all businessEntity and tModel data structures, and a publisherAssertion data structure in the named file. For importing the businessEntity data structure, the named file (filename) for importing should contain a UDDI businessDetail XML document. For importing tModel data structures, the named file should contain a UDDI tModelDetail XML document. By importing them, entity keys (such as businessKey, serviceKey, bindingKey, tModelKey) are preserved. The operatorName and authorizedName fields, however, are not preserved. The operatorName field will be replaced by the operatorName configuration parameter of the registry. The owner of the imported entities is the administrator; hence, the authorizedName field will be the authorized name of the administrator.

Importing can be done in single mode (-s), which does not allow partial success (some entities are imported and some are not due to some error condition), or in multiple mode (-m), which does allow partial success.

The import parameter is particularly useful in importing the well-known service interface specification tModel and classification tModel data structures from some authoritative sources.

Because the entity keys are preserved, administrators should be careful in evaluating the source of the entities to ensure there will not be a collision in entity keys.

For importing a publisherAssertion, two Boolean values are required. These Boolean values are used to indicate from which side (or both sides when two Boolean values are true) the publisherAssertion is going to be inserted.

See "Importing Entities" for information about using this option.

Example

The following example imports the publisherAssertion contained in the file assert.xml:

java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
 -import -s -assertions assert.xml -fromBusinessCheck true
 -toBusinessCheck true

setOperationalInfo

Format 1

-setOperationalInfo {-businessKey key | -tModelKey key } [-newOperator OperatorName] [-newAuthorizedname authName] [-newTime timestamp]

Format 2

-setOperationalInfo {-serviceKey key | -bindingKey key } [-newTime timestamp]

Description

Sets some operational information, such as the operator name, authorized name, or timestamp of a businessEntity or tModel data structure specified by a key, for example, following an import operation. You can set any combination of operator name, authorized name, or timestamp using the setOperationalInfo option.

Format 1 lets you change either the operator name, the authorized name, or the timestamp, or all three, of the businessEntity or tModel specified by a key.

Format 2 lets you change only the timestamp of a businessService or bindingTemplate.


Note:

The format of a timestamp is defined as 'yyyy-mm-dd hh.mm:ss.fffffffff' by java.sql.Timestamp. For example:
'2002-12-01 00:00:00'

Because there is a blank space in the timestamp value between 'yyyy-mm-dd' and 'hh.mm:ss.fffffffff'', the entire value must be placed inside a pair of single quotation marks on the command line.



Caution:

In general, the setOperationalInfo option should not be used when replication is enabled.

See "Setting Operational Information" for information about using this option.


setProperty

Format

-setProperty property_name=value

Description

Changes the value of the named server configuration property. The OracleAS UDDI Registry J2EE application needs to be restarted for the changes to take effect.

Example

The following example sets the operatorName property to OracleUddiServerIT_Dept:

java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
  -setProperty oracle.uddi.server.operatorName=OracleUddiServerIT_Dept

Caution:

Be very careful when using the setProperty option to change the value of server configuration properties. Setting an incorrect value for a property could cause severe damage to the integrity of the registry.

See "Modifying Properties at Installation or First-Use" for more information on this option.


setRoleQuotaLimits

Format

-setRoleQuotaLimits roleName [maxBE] [maxBSperBE] [ maxBTperBS] [maxTM] [maxPA]

Description

Sets the quota limit value for the specified quota group. This option can be used to create a new group-to-quota-limit mapping or to update an existing mapping. The parameters are defined as follows:

  • roleName—name of the quota group to map to the specified limits

  • maxBE—maximum number of businessEntity data structures allowed

  • maxBSperBE—maximum number of businessService data structures per businessEntity allowed

  • maxBTperBS—maximum number of bindingTemplate data structures per businessEntity allowed

  • maxTM—maximum number of tModel data structures allowed

  • maxPA—maximum number of publisherAssertion data structures allowed

The value -1 means unlimited.

See "Updating the Limits of a Quota Group" for more information about this option.

Example
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
 -setRoleQuotaLimits roleName maxBE maxBSperBE maxBTperBS maxTM maxPA

setWalletPassword

Format

-setWalletPassword wallet_password

Description

Sets the wallet password to be used for HTTPS communication among UDDI nodes for UDDI replication. Each time the application is restarted, this option must be invoked because the wallet password is not stored persistently, for security reasons. The registry replication wallet admin URL is:

http://OracleAS-host:port/uddirepl/admin/wallet

See "Enabling UDDI Replication" for more information about using this option with UDDI replication.

Example
java -jar uddiadmin.jar http://OracleAS-host:port/uddirepl/admin/wallet username password
 -setWalletPassword=walletpassword

transferCustody

Format

-transferCustody oldOperatorName newOperatorName newAuthorizedName {-tModelKey tModel_Key | -businessKey businessKey}

Description

Transfers the custody of a tModel or a businessEntity to a new operator and a new authorized name. This option is part of custody transfer as defined by the UDDI specification.


uploadReplicationConfiguration

Format

-uploadReplicationConfiguration xml_file_containing_replication_configuration

Description

Uploads the specified replication configuration to a particular UDDI node within OracleAS UDDI Registry. The application must be restarted for the new replication configuration to be used. See "Enabling UDDI Replication" for information about using this option.

Example
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
-uploadReplicationConfiguration xml_file_containing_replication_configuration

Server Configuration Properties

This section provides reference information for UDDI server configuration properties. The properties are of the class oracle.uddi.server and its subclasses. You set them by using the options of the command-line tool uddiadmin.jar. See "Using the Command-Line Tool uddiadmin.jar" for more information about the uddiadmin.jar command-line tool.


addressTModelKeyValidation

Description

Determines if tModelKey existence validation occurs within address elements.

Property Type/Allowable Values

Boolean (true, false)

Initial Value

true

Typical Value

true

Example
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
 -setProperty oracle.uddi.server.addressTModelKeyValidation=true

assertionKeyedRefValidation

Description

Controls validation for all publisherAssertion keyedReference entities.

Property Type/Allowable Values
  • full: All validation conditions will be checked.

  • tmodel_existence: Only tModelKey existence will be checked.

  • none: No condition will be checked.

Initial Value

full

Typical Value

full

Example
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
 -setProperty oracle.uddi.server.assertionKeyedRefValidation=full

businessEntityURLPrefix

Description

Provides the prefix of the generated discovery URL, which is automatically generated for each businessEntity data structure saved in the registry. The prefix should be customized for your deployment environment. Setting this parameter applies in a retroactive fashion to existing entities in the database. For example, changing the discoveryURL prefix results in all discovery URLs of usetype businessEntity that begin with the old URL prefix to be changed to the new URL prefix.

Property Type/Allowable Values

A valid URL.

Initial Value

OracleAS UDDI Registry generates an initial value upon server initialization.

Typical Value

The host name and port should be the host name and port of the Web server (which may or may not be the same as the servlet container).

Notes

See "Modifying Properties at Installation or First-Use" for information about using this property.

Example
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
 -setProperty oracle.uddi.server.businessEntityURLPrefix="http://uddihost:port/uddi/inquiryget"

categoryValidation

Description

Controls validation for all CategoryBag entities.

Property Type/Allowable Values
  • full: All validation conditions will be checked.

  • tmodel_existence: Only tModelKey existence will be checked.

  • none: No condition will be checked.

Initial Value

full

Typical Value

full

Example
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
 -setProperty oracle.uddi.server.categoryValidation=full

categoryValidationTModelKeys

Description

Represents the categorization and identifier tModel keys, which will be validated by the registry during an attempted save operation.

Property Type/Allowable Values

A list in the form of '<tModelKey1>', '<tModelKey2>', '<tModelKey3>'.

Initial Value

'UUID:C1ACF26D-9672-4404-9D70-39B756E62AB4', which represents the uddi-org:types classification. The preinstalled value, however, is the UDDI types classification plus the three classifications defined in the UDDI v1.0 specification: (uddi-org:types, uddi-org:iso-ch:3166-1999, ntis-gov:naics:1997, unspsc-org:unspsc).

Typical Value

The preinstalled value.

Notes

The uddi-org:types classification should not be removed from the list. In addition, you must enter the command on one line, with no returns or no extra spaces.

Example
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
 -setProperty 
"oracle.uddi.server.categoryValidationTModelKeys=
'UUID:C1ACF26D-9672-4404-9D70-39B756E62AB4',
'UUID:4E49A8D6-D5A2-4FC2-93A0-0411D8D19E88',
'UUID:C0B9FE13-179F-413D-8A5B-5004DB8E5BB2',
'UUID:CD153257-086A-4237-B336-6BDCBDCC6634' "

changeRecordWantsAck

Description

Controls whether or not ACK is required for the change records sent out from the local node.

Property Type/Allowable Values

Boolean (true, false)

Initial Value

false

Typical Value

false

Example
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password 
 -setProperty oracle.uddi.server.replication.changeRecordWantsAck=false

defaultLang

Description

Provides the default language of the registry for the purpose of filling in UDDI v1.0 description elements, which lack a language qualification. Language defaults are not done for UDDI v2 requests. Valid values are the values of the xml:lang attribute.

Property Type/Allowable Values

Values of xml:lang.

Initial Value

en

Typical Value

The location of the primary region the registry serves.

Example
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
 -setProperty oracle.uddi.server.defaultLang=en

externalValidation

Description

Determines if external validation occurs.

Property Type/Allowable Values

Boolean (true, false)

Initial Value

false

Typical Value

false

Notes

See "Enabling External Category Validation" for information on using this property.

Example
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
 -setProperty oracle.uddi.server.externalValidation=true

externalValidationTimeout

Description

Defines the amount of time, in milliseconds, before a timeout occurs for external validation.

Property Type/Allowable Values

long

Initial Value

5000

Typical Value

NA

Notes

See "Adding an Externally Validated Category to the Registry" for information on using this property.

Example
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
 -setProperty oracle.uddi.server.externalValidationTimeout=5000

externalValidationTModelList

Description

Provides the list of tModel key-URL pairs that represents the category and identifier tModel data structures that will be validated by an external SOAP service. The tModelKey and URL values within a pair are separated by a comma (,), and pairs of values are separated by a semicolon (;).

Property Type/Allowable Values

NA

Initial Value

null value ""

Typical Value

null value ""

Notes

See "Adding an Externally Validated Category to the Registry" for information on using this property.

Example
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
 -setProperty oracle.uddi.server.externalValidationTModelList=uuid:acme-taxonomy-key,
 http://acme.com/externalValidation

hostingRedirectorValidation

Description

Determines if hostingRedirector validation occurs within bindingTemplate elements. Validation ensures that the referenced bindingTemplate element exists and does not contain a hostingRedirector element.

Property Type/Allowable Values

Boolean (true, false)

Initial Value

true

Typical Value

true

Example
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
 -setProperty oracle.uddi.server.hostingRedirectorValidation=true

identifierValidation

Description

Controls validation for all IdentifierBag entities.

Property Type/Allowable Values
  • full: All validation conditions will be checked.

  • tmodel_existence: Only tModelKey existence will be validated.

  • none: No condition will be checked.

Initial Value

full

Typical Value

full

Example
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
  -setProperty oracle.uddi.server.identifierValidation=full

jdbcDriverType

Description

Defines the type of JDBC driver to be used to access the OracleAS Infrastructure database. This property is applicable only if the OracleAS Infrastructure database is used as the back-end storage.

Property Type/Allowable Values

thin or oci

Initial Value

thin

Typical Value

NA

Notes

In a cluster environment, this property must be set for each OC4J instance.

Example
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password 
 -setProperty oracle.uddi.server.db.jdbcDriverType=thin

maxChangeRecordsSentEachTime

Description

Controls the maximum number of change records sent out in response to an incoming getChangeRecords request.

Property Type/Allowable Values

integer

Initial Value

100

Typical Value

NA

Example
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
 -setProperty oracle.uddi.server.replication.maxChangeRecordsSentEachTime=100

maxConnections

Description

Determines the maximum number of database connections in the connection pool. This property is applicable only if the OracleAS Infrastructure database is used as the back-end storage.

Property Type/Allowable Values

A positive integer.

Initial Value

8

Typical Value

Depends on the maximum number of concurrent requests and the desired performance.

Notes

Enter a value that is the estimated maximum number of concurrent requests plus a percentage of the buffer.

In a cluster environment, this property must be set for each OC4J instance.

Example
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
 -setProperty oracle.uddi.server.db.maxConnections=10

minConnections

Description

Determines the minimum number of database connections in the connection pool. This property is applicable only if the OracleAS Infrastructure database is used as the back-end storage.

Property Type/Allowable Values

A nonnegative integer that is smaller than the value for maxConnections.

Initial Value

1

Typical Value

1

Notes

In a cluster environment, this property must be set for each OC4J instance.

Example
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
 -setProperty oracle.uddi.server.db.minConnections=1

operatorCategory

Description

Determines whether or not additional entities may be categorized as an operator node, if the value of the categoryValidation property is true.

Property Type/Allowable Values

Boolean (true, false)

Initial Value

true

Typical Value

true

Example
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
 -setProperty oracle.uddi.server.categoryValidation.operatorCategory=true

operatorName

Description

Provides the name of the operator of OracleAS UDDI Registry. This name appears in the operator attribute of responses. Setting this parameter applies in a retroactive fashion to existing entities in the database. For example, changing the operator name results in all business and tModel data structures that currently have the old operator name to have that name changed to the new operator name.

Property Type/Allowable Values

A non-null string.

Initial Value

OracleUddiServer

Typical Value

domain_of_the_UDDI registry/uddi

Notes

Be sure to set this parameter before enabling replication.

See "Adding an Externally Validated Category to the Registry" for information on using this property.

Example
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
  -setProperty oracle.uddi.server.operatorName=OracleUddiServerIT_Dept

pushEnabled

Description

Controls whether or not a push task should be performed for UDDI replication.

Property Type/Allowable Values

Boolean (true, false)

Initial Value

true

Typical Value

true

Example
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
 -setProperty oracle.uddi.server.replication.pushEnabled=true

pushTaskExecutionPeriod

Description

Controls the push task execution period (in milliseconds).

Property Type/Allowable Values

45000

Initial Value

NA

Typical Value

NA

Example
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
-setProperty oracle.uddi.server.replication.pushTaskExecutionPeriod=45000

quotaLimitChecking

Description

Determines whether or not publishing quotas, the limits on the number of entities that can be created in the registry per user, are enforced.

Property Type/Allowable Values

Boolean (true, false)

Initial Value

true

Typical Value

true

Notes

See "Enforcing Quotas" for information on quota limits.

Example
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
 -setProperty oracle.uddi.server.quotaLimitChecking=true

schemaValidationUponIncomingRequests

Description

Determines whether or not the server will validate incoming requests against the UDDI XML schema.

Property Type/Allowable Values

Boolean (true, false)

Initial Value

true

Typical Value

true

Example
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password 
-setProperty oracle.uddi.server.schemaValidationUponIncomingRequests=true

soapRequestAuthMethod

Description

Controls the authentication method the registry node will try to use in sending replication SOAP requests to other nodes. If the value CLIENT-CERT is used, the administrator must set the wallet password each time the registry node gets started or restarted.

Property Type/Allowable Values

NONE or CLIENT-CERT

Initial Value

NONE

Typical Value

CLIENT-CERT

Example
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
 -setProperty oracle.uddi.server.replication.soapRequestAuthMethod=NONE

soapRequestTimeout

Description

Controls the timeout value for each SOAP replication request (in milliseconds).

Property Type/Allowable Values

long

Initial Value

180000

Typical Value

NA

Example
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
 -setProperty oracle.uddi.server.replication.soapRequestTimeout=180000

startMaintainingUpdateJournal

Description

Controls whether or not the update journal will be maintained for UDDI replication. This property must be set to true for replication to occur.

Property Type/Allowable Values

Boolean (true, false)

Initial Value

false

Typical Value

true

Notes

Be sure to upload a correct replication configuration before you set this property to true.

Once you set this property to true, you should set it back to false only if you no longer want to participate in UDDI replication. Setting this property haphazardly from true to false will result in fatal loss of change records.

See "Enabling UDDI Replication" for information on using this property.

Example
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
 -setProperty oracle.uddi.server.replication.startMaintainingUpdateJournal=false

status

Description

Indicates whether or not the scheduler is enabled to send out replication requests.

Property Type/Allowable Values

Boolean (0=off, 1=on)

Initial Value

1

Typical Value

1

Notes

See "Enabling UDDI Replication" for information on using this property.

Example
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
  -setProperty oracle.uddi.server.scheduler.status=1

stmtCacheType

Description

Defines the type of statement caching. This property is to be used with the OracleAS Infrastructure database and JDBC driver only.

Property Type/Allowable Values

NONE, IMPLICIT, or EXPLICIT

Initial Value

NONE

Typical Value

EXPLICIT

Notes

In a cluster environment, this property must be set for each OC4J instance.

Example
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password 
 -setProperty oracle.uddi.server.db.stmtCacheType=NONE

stmtCacheSize

Description

Defines the size (number of statements cached) of statement caching per connection. This property is to be used with the OracleAS Infrastructure database and JDBC driver only.

Property Type/Allowable Values

integer

Initial Value

50

Typical Value

50

Example
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
 -setProperty oracle.uddi.server.db.stmtCacheSize=50

taskExecutionPeriod

Description

Controls the period of time during which a replication task should be executed (in milliseconds).

Property Type/Allowable Values

long

Initial Value

5000

Typical Value

NA

Example
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
  -setProperty oracle.uddi.server.replication.taskExecutionPeriod=5000

timer_pool_size

Description

Specifies the number of concurrently active threads used by the scheduler.

Property Type/Allowable Values

NA

Initial Value

1

Typical Value

1

Notes

See "Setting Properties for the UDDI Replication Scheduler" for information on using this property.

Example
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
 -setProperty oracle.uddi.server.scheduler.timer_pool_size=1

tModelInstanceInfoKeyValidation

Description

Determines if tModelKey existence validation occurs within tModelInstanceInfo elements.

Property Type/Allowable Values

Boolean (true, false)

Initial Value

true

Typical Value

true

Example
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
 -setProperty oracle.uddi.server.tModelInstanceInfoKeyValidation=true

walletLocation

Description

Defines the wallet file name. The wallet file will be located in the same place as the uddiserver.config file.

Property Type/Allowable Values

NA

Initial Value

ewallet.p12

Typical Value

NA

Notes

See "Enabling UDDI Replication" for information on using this property.

Example
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password
 -setProperty oracle.uddi.server.replication.walletLocation=ewallet.p12