Oracle® Application Server Web Services Developer's Guide
10g Release 2 (10.1.2) Part No. B14027-01 |
|
Previous |
Next |
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:
The information provided in a UDDI registry can be used to perform three types of searches:
White pages search—address, contact, and known identifiers. For example, search for a business that you already know something about, such as its name or some unique identifier (ID).
Yellow pages topic search—industrial categories based on standard classifications, such as NAICS, ISO-3166, and UNSPSC.
Green pages service search—technical information about Web Services that are exposed by a business, including references to specifications of interfaces for Web Services, as well as support for pointers to various file and URL-based discovery mechanisms.
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).
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.
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:
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:
UDDI Version 2.04 API Specification
UDDI Version 2.03, Data Structure Reference Specification
UDDI Version 2.03, Replication Specification
OracleAS UDDI Registry support for Web Services deployed in OC4J is composed of the following parts:
Web Services discovery—Consumers can use the Inquiry API to implement their own Web Services discovery tool to search, locate, and drill down to discover J2EE Web Services in OracleAS UDDI Registry, as well as in any other accessible UDDI registry compatible with the UDDI v1.0 or V2.0 specifications. See "Using the OracleAS UDDI Registry Inquiry API" for more information about using the Inquiry API and locating the Javadoc documentation.
Web Services publishing—Administrators can deploy J2EE Web Services using Oracle Enterprise Manager 10g. As part of the deployment process, the administrator can publish Web Services to OracleAS UDDI Registry.
Consumers can use the Publishing API to publish Web Services by providing save and delete calls for each of the five key UDDI data structures (businessEntity, businessService, bindingTemplate, tModel, and publisherAssertion). See "Using the OracleAS UDDI Registry Publishing API" for more information about using the Publishing API and locating the Javadoc documentation.
Web Services updates—Administrators can update published Web Services by searching, locating, and drilling down to J2EE Web Services using Oracle Enterprise Manager 10g.
Additional tool development—Consumers can use a Java-based client library to facilitate additional tool development and application development. See the Oracle Application Server Web Services UDDI Client API Reference for information about this API.
Replication management—Administrators can create a logical registry that comprises one or more OracleAS UDDI Registry implementations and UDDI implementations from other vendors that also implement the UDDI v2.03 Replication Specification. See "UDDI Replication" for more information.
Database support—UDDI open database support is provided for Microsoft SQL Server, IBM DB2, and Oracle (non-infrastructure) databases. See "UDDI Open Database Support" for more information.
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
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.
This section describes how to get started using OracleAS UDDI Registry. It includes the following topics:
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/
http://OracleAS-host:OracleAS-port/uddi/inquiry
UDDI publishing SOAP end point
http://OracleAS-host:OracleAS-port/uddi/publishing
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
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.
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.
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:
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:
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.
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 propertyoracle.uddi.client.defaultVersion .
For example:
|
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.
Web Services are published in OracleAS UDDI Registry by using one of the following interfaces:
Oracle Enterprise Manager 10g. See "Using Oracle Enterprise Manager for Web Services Publishing".
The OracleAS UDDI Registry Publishing Tool. See "Using the OracleAS UDDI Registry Publishing Tool".
The OracleAS UDDI Registry Publishing API. See "Using the OracleAS UDDI Registry Publishing API".
Using Oracle Enterprise Manager 10g, administrators can publish Web Services in OracleAS UDDI Registry and can update discovered Web Services:
Using the Deploy Application Wizard. The Deploy Application wizard takes you through the process of deploying a J2EE application on the OC4J container.
See "Publishing Web Services Using the Deploy Application Wizard".
Using the UDDI Registry page. The UDDI Registry page lets you discover published Web Services and update those published Web Services.
See "Updating Published Web Services in OracleAS UDDI Registry".
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. |
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:
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.
In the OC4J:oc4j-name page, click Applications.
In the Deployed Applications section, click Deploy Ear File to invoke the Deploy Application wizard.
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:
Click Continue.
For the next pages, take the defaults until you reach the Publish Web Services page, shown in the following illustration:
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.
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.
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:
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.
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.
After publishing all Web Services for this application, click Next to continue to the Review page where you can review the application deployment information.
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.
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:
Invoke Oracle Enterprise Manager and navigate to the Application Server Instance-name page. From the System Components table, select an OC4J instance.
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.
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:
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:
Navigate to the desired category or subcategory by successively clicking the desired categories.
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:
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.
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.
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:
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.
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:
Click the UDDI Inquiry/Publishing tool link. Then, on the OracleAS UDDI Registry: Searching and Browsing Tool page, click Publishing Tool.
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:
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.
In the Basic information section, specify the following information:
For Name, specify a name so that this tModel can be located. For example, enter urn:google.com:search-interface.
For Description, specify a description of the tModel, such as Google search interface.
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.
For Overview Document Description, enter a description of the overview document.
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:
Select uddi-org:types and click Browse.
The Classification Tree for this selection is displayed.
Click Specification for a Web Service. The Classification Tree for this selection is displayed, as shown in the following figure:
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
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:
Click the Publish button to publish the tModel. The TModel Details page is displayed, as shown in the following figure:
Note that the key (UUID:B960F57E-54BF-4DB8-BC36-F2802FE6BEF0) for this tModel is randomly assigned by the registry.
Click the Publish link at the bottom of the page to return to the Publishing Tool page.
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.
In the Business Details section of the Publish Business Entity (Service Provider) page, specify the following information:
For Name, specify a name so that this business can be located. For example, enter Google Service Provider.
For Description, specify a description of the business.
In the Contacts section, enter information that you want to appear in the UDDI registry. Specify information for the following fields:
For name, specify the name of a contact.
For voice, specify a voice mail number.
For email, specify an email address.
For address, specify a mailing address.
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:
Select iso3166 and click Browse. The Classification Tree for this selection is displayed.
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.
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:
Click Publish to publish the business. The Business Details page is displayed:
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.
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.
In the Basic information section, specify the following information:
The key for the business is automatically entered in Owning business.
For Name, enter a name for the businessService.
For Description, specify a description of the businessService.
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:
Select naics and click Browse. The Classification Tree for this selection is displayed.
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:
Click the Publish button to publish the service. The Service Details page is displayed, as shown in the following figure:
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.
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:
Click Publish to publish the bindingTemplate. The Binding Details page is displayed, as shown in the following figure:
Click the icon to the right of Interfaces implemented to add a new interface reference.
The Publish Interface Reference page is displayed.
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.
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:
Click Search.
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.
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:
Click the Publish button. The Binding Details page is displayed. As the following figure shows, it now contains information about the implemented interfaces:
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);
The following sections describe OracleAS UDDI Registry administration features:
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".
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 thesetProperty 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".
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.
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.
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.
To add a new quota group, perform the following steps:
Oracle recommends that you back up the configuration files, application.xml
, web.xml
, and orion-application.xml
, before you begin this process.
Add the group to the user store, typically OID.
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.
Define the J2EE security role to the user store mapping in the orion-application.xml
file of the orauddi.ear
application.
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.
To remove a quota group, perform the following steps:
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.
Remove the J2EE security role to the user store mapping in the orion-application.xml
file of the orauddi.ear
application.
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.
Remove the group from the user store, typically OID.
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.
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.
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.
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
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.
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.
To enable UDDI replication, as administrator, you must perform the following steps:
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.
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.
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:
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.
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.
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.
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.
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.
In the addition to the UDDI server properties described in previous sections, you can use the following server properties with replication:
changeRecordWantsAck: Controls whether or not ACK is required for the change records sent out from the local node. See "changeRecordWantsAck" for reference information on this property.
maxChangeRecordsSentEachTime: Controls the maximum number of change records sent out in response to an incoming getChangeRecords request. See "maxChangeRecordsSentEachTime" for reference information on this property.
pushEnabled: Controls whether or not a push task should be performed for UDDI replication. See "pushEnabled" for reference information on this property.
pushTaskExecutionPeriod: Controls the push task execution period (in milliseconds). See "pushTaskExecutionPeriod" for reference information on this property.
soapRequestAuthMethod: Controls the authentication method the registry node will try to use in sending replication SOAP requests to other nodes. If HTTP client certification (CLIENT_CERT) is used, you must set the wallet password each time the registry node gets started or restarted.
See "soapRequestAuthMethod" for reference information on this property.
soapRequestTimeout: Controls the timeout value for each SOAP replication request (in milliseconds). See "soapRequestTimeout" for reference information on this property.
taskExecutionPeriod: Controls the period of time during which replication task should be executed (in milliseconds). See "taskExecutionPeriod" for reference information on this property.
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.
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.
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:
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" />
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.
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.
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.
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.
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" />
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:
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.
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.
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
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
To add an externally validated category to the registry, perform the following steps:
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.
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
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
To remove an externally validated category from the registry, perform the following steps:
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,""
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.
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
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.
The following sections describe some database-specific configuration information.
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.
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
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);
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.
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.
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:
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 |
The following sections describe installation and configuration information with SQL Server.
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%
.
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.
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 -Sserver
-Uuser
-P password -ddatabase
-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
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:
Select the Import and Export Data option from the SQL Server Start menu options. Click Next.
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.
The default file format should be Delimited. Accept this by clicking Next.
Set the delimiter to the vertical bar character (|
). Click Next.
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.
Click the Destination and select the BUILTIN_CHECKED_CATEGORY table.
Click Transform. Map TMODEL_KEY to Col001, KEY_NAME to Col003, KEY_VALUE to Col002, and PARENT_VALUE to Col004. Click OK.
Click Next.
Click Next to run immediately, and click Finish to start.
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 scriptiso3166-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 .
|
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.
The following sections describe installation and configuration information for OracleAS UDDI Registry relative to IBM DB2.
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.
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.
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
Import the iso3166-99_tModelKey.txt
, naics-97_tModelKey.txt
, and unspsc-73_tModelKey.txt
files into the BUILTIN_CHECKED_CATEGORY table as follows:
Right-click the table BUILTIN_CHECKED_CATEGORY from the Control Center and select IMPORT.
Specify the Import file as $
{DB2_HOME_DB}
/iso3166-99_tModelKey.txt
for UNIX or %DB2_HOME_DB%
\iso3166-99_tModelKey.txt
for Windows.
Select Delimited ASCII format (DEL). Click Options and select the vertical bar character (|) as the delimiter for Column delimiter (COLDEL).
Use the INSERT import mode (the default).
Set the Commit records equal to 500.
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.
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.
Click OK to run the import process.
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 scriptiso3166-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 .
|
The following sections describe how to create the DB2 package and modify the URL for regular use.
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.
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."
The following sections describe installation and configuration information for an Oracle database that is not an OracleAS Infrastructure database.
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.
Create the uddisys
database and the uddisys
user, by taking the following steps:
Go to the ${ORACLE_Home}
directory on UNIX or the %ORACLE_Home_ORACLE%
directory on Windows.
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.
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 scriptiso3166-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 |
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.
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.
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
new_username
{-businessKey
business_Key
| -tModelKey
tModel_Key
}
Changes the ownership of the named entity to the new specified user.
-correctChangeRecord changeRecordCorrectionfile
changeRecord_NewDatafile
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 {-businessKey
business_Key
| -serviceKey
serviceKey
| -bindingKey
binding_Key
| -tModelKey
tModel_Key
}
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
role_Name
[
role_Name
...]
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.
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password -deleteRoleQuotaLimits role_Name
-destroyTModel
tModel_Key
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
replicationEndPointUrl
[-timeout
timeInMilliseconds
][ -walletPassword
wallet_password
]
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.
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password -doPing http://OracleAS-host:port/uddirepl/replication
-downloadReplicationConfiguration
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.
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password -downloadReplicationConfiguration
-getChangeRecord
local_usn
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
replicationEndPointUrl
[ -walletPassword
wallet_password
]
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.
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password -getHighWaterMarks http://OracleAS-host:port/uddirepl/replication
-getProperties
Lists the current registry configuration parameters. See "Configuring the Server" for information about using this option.
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password -getProperties
-getRoleQuotaLimits
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.
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password -getRoleQuotaLimits
-getUserDetail
username_to_retrieve
Retrieves the details of the named user, currently the authorizedName of each user. See "Managing Users" for information about using this option.
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password -getUserDetail username
-getUsers
Lists all existing users who have entities in the registry. See "Managing Users" for information about using this option.
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password [-verbose] -getUsers
-import [-s|-m]
-businesses
filename
|
-tmodels
filename
|
-assertions
filename
-fromBusinessCheck {true|false}
-toBusinessCheck {true|false} ]
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.
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
{-businessKey
key
| -tModelKey
key
} [-newOperator
OperatorName
] [-newAuthorizedname
authName
] [-newTime
timestamp
]
-setOperationalInfo
{-serviceKey
key
| -bindingKey
key
} [-newTime
timestamp
]
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, thesetOperationalInfo option should not be used when replication is enabled.
|
See "Setting Operational Information" for information about using this option.
-setProperty
property_name
=value
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.
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 thesetProperty 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
roleName
[
maxBE
] [
maxBSperBE
] [
maxBTperBS
] [
maxTM
] [
maxPA
]
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.
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password -setRoleQuotaLimits roleName maxBE maxBSperBE maxBTperBS maxTM maxPA
-setWalletPassword
wallet_password
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.
java -jar uddiadmin.jar http://OracleAS-host:port/uddirepl/admin/wallet username password -setWalletPassword=walletpassword
-transferCustody
oldOperatorName newOperatorName newAuthorizedName
{-tModelKey
tModel_Key
| -businessKey
businessKey
}
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
xml_file_containing_replication_configuration
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.
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password -uploadReplicationConfiguration xml_file_containing_replication_configuration
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.
Determines if tModelKey existence validation occurs within address elements.
Boolean (true, false)
true
true
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password -setProperty oracle.uddi.server.addressTModelKeyValidation=true
Controls validation for all publisherAssertion keyedReference entities.
full: All validation conditions will be checked.
tmodel_existence: Only tModelKey existence will be checked.
none: No condition will be checked.
full
full
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password -setProperty oracle.uddi.server.assertionKeyedRefValidation=full
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.
A valid URL.
OracleAS UDDI Registry generates an initial value upon server initialization.
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).
See "Modifying Properties at Installation or First-Use" for information about using this property.
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password -setProperty oracle.uddi.server.businessEntityURLPrefix="http://uddihost:port/uddi/inquiryget"
Controls validation for all CategoryBag entities.
full: All validation conditions will be checked.
tmodel_existence: Only tModelKey existence will be checked.
none: No condition will be checked.
full
full
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password -setProperty oracle.uddi.server.categoryValidation=full
Represents the categorization and identifier tModel keys, which will be validated by the registry during an attempted save operation.
A list in the form of '<tModelKey1>', '<tModelKey2>', '<tModelKey3>'.
'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).
The preinstalled value.
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.
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' "
Controls whether or not ACK is required for the change records sent out from the local node.
Boolean (true, false)
false
false
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password -setProperty oracle.uddi.server.replication.changeRecordWantsAck=false
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.
Values of xml:lang.
en
The location of the primary region the registry serves.
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password -setProperty oracle.uddi.server.defaultLang=en
Determines if external validation occurs.
Boolean (true, false)
false
false
See "Enabling External Category Validation" for information on using this property.
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password -setProperty oracle.uddi.server.externalValidation=true
Defines the amount of time, in milliseconds, before a timeout occurs for external validation.
long
5000
NA
See "Adding an Externally Validated Category to the Registry" for information on using this property.
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password -setProperty oracle.uddi.server.externalValidationTimeout=5000
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 (;).
NA
null value ""
null value ""
See "Adding an Externally Validated Category to the Registry" for information on using this property.
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
Determines if hostingRedirector validation occurs within bindingTemplate elements. Validation ensures that the referenced bindingTemplate element exists and does not contain a hostingRedirector element.
Boolean (true, false)
true
true
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password -setProperty oracle.uddi.server.hostingRedirectorValidation=true
Controls validation for all IdentifierBag entities.
full: All validation conditions will be checked.
tmodel_existence: Only tModelKey existence will be validated.
none: No condition will be checked.
full
full
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password -setProperty oracle.uddi.server.identifierValidation=full
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.
thin or oci
thin
NA
In a cluster environment, this property must be set for each OC4J instance.
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password -setProperty oracle.uddi.server.db.jdbcDriverType=thin
Controls the maximum number of change records sent out in response to an incoming getChangeRecords request.
integer
100
NA
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password -setProperty oracle.uddi.server.replication.maxChangeRecordsSentEachTime=100
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.
A positive integer.
8
Depends on the maximum number of concurrent requests and the desired performance.
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.
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password -setProperty oracle.uddi.server.db.maxConnections=10
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.
A nonnegative integer that is smaller than the value for maxConnections
.
1
1
In a cluster environment, this property must be set for each OC4J instance.
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password -setProperty oracle.uddi.server.db.minConnections=1
Determines whether or not additional entities may be categorized as an operator node, if the value of the categoryValidation property is true.
Boolean (true, false)
true
true
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password -setProperty oracle.uddi.server.categoryValidation.operatorCategory=true
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.
A non-null string.
OracleUddiServer
domain_of_the_UDDI registry/uddi
Be sure to set this parameter before enabling replication.
See "Adding an Externally Validated Category to the Registry" for information on using this property.
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password -setProperty oracle.uddi.server.operatorName=OracleUddiServerIT_Dept
Controls whether or not a push task should be performed for UDDI replication.
Boolean (true, false)
true
true
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password -setProperty oracle.uddi.server.replication.pushEnabled=true
Controls the push task execution period (in milliseconds).
45000
NA
NA
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password -setProperty oracle.uddi.server.replication.pushTaskExecutionPeriod=45000
Determines whether or not publishing quotas, the limits on the number of entities that can be created in the registry per user, are enforced.
Boolean (true, false)
true
true
See "Enforcing Quotas" for information on quota limits.
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password -setProperty oracle.uddi.server.quotaLimitChecking=true
Determines whether or not the server will validate incoming requests against the UDDI XML schema.
Boolean (true, false)
true
true
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password -setProperty oracle.uddi.server.schemaValidationUponIncomingRequests=true
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.
NONE or CLIENT-CERT
NONE
CLIENT-CERT
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password -setProperty oracle.uddi.server.replication.soapRequestAuthMethod=NONE
Controls the timeout value for each SOAP replication request (in milliseconds).
long
180000
NA
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password -setProperty oracle.uddi.server.replication.soapRequestTimeout=180000
Controls whether or not the update journal will be maintained for UDDI replication. This property must be set to true for replication to occur.
Boolean (true, false)
false
true
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.
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password -setProperty oracle.uddi.server.replication.startMaintainingUpdateJournal=false
Indicates whether or not the scheduler is enabled to send out replication requests.
Boolean (0=off, 1=on)
1
1
See "Enabling UDDI Replication" for information on using this property.
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password -setProperty oracle.uddi.server.scheduler.status=1
Defines the type of statement caching. This property is to be used with the OracleAS Infrastructure database and JDBC driver only.
NONE, IMPLICIT, or EXPLICIT
NONE
EXPLICIT
In a cluster environment, this property must be set for each OC4J instance.
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password -setProperty oracle.uddi.server.db.stmtCacheType=NONE
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.
integer
50
50
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password -setProperty oracle.uddi.server.db.stmtCacheSize=50
Controls the period of time during which a replication task should be executed (in milliseconds).
long
5000
NA
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password -setProperty oracle.uddi.server.replication.taskExecutionPeriod=5000
Specifies the number of concurrently active threads used by the scheduler.
NA
1
1
See "Setting Properties for the UDDI Replication Scheduler" for information on using this property.
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password -setProperty oracle.uddi.server.scheduler.timer_pool_size=1
Determines if tModelKey existence validation occurs within tModelInstanceInfo elements.
Boolean (true, false)
true
true
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password -setProperty oracle.uddi.server.tModelInstanceInfoKeyValidation=true
Defines the wallet file name. The wallet file will be located in the same place as the uddiserver.config
file.
NA
ewallet.p12
NA
See "Enabling UDDI Replication" for information on using this property.
java -jar uddiadmin.jar http://OracleAS-host:port/uddi/admin username password -setProperty oracle.uddi.server.replication.walletLocation=ewallet.p12