Oracle® Application Server Web Services Developer’s Guide
10g (9.0.4) Part No. B10447-01 |
|
![]() |
![]() |
Oracle Application Server Containers for J2EE (OC4J), provides a Universal Discovery Description and Integration (UDDI) Web Services registry known as the Oracle Application Server UDDI Registry, in which Web Services provider administrators in an enterprise environment can publish their Web Services for use by Web Services consumers (programmers). Web Services consumers can use the UDDI inquiry interface to discover these published Web Services by browsing, searching, and drilling down in the OracleAS UDDI Registry to select one or more Web Services from among those registered, and use those services in their applications for a particular enterprise process.
For example, a Web Services provider administrator working with programmers who have completed a Web Services implementation using the J2EE stack (either EJBs, JavaBeans, JSP, or servlets) and exposing the implementation as a Simple Object Access Protocol (SOAP)-based Web Services, can publish the Web Services by providing all the metadata and pointers to the interface specification in the OracleAS UDDI Registry. In this way, the Web Services provider administrator publishes the availability of these Web Services for the Web Services consumers to discover and select for use in their own applications.
This chapter is organized into the following main sections:
As part of the OC4J OracleAS UDDI Registry, a SOAP API as defined by the UDDI v2 specification is provided to be used primarily by Web Services application developers (see the OracleAS SOAP API Reference Javadoc on the Oracle Application Server 10g (9.0.4) Documentation CD-ROM). This API provides the inquiry and publishing functions by implementing the inquiry and publishing API defined by the UDDI v2 specification. The use of this API is described in Web Services Discovery and Web Services Publishing.
In addition, a set of management facilities and tools are provided for all management and operational requirements of the registry as described in OracleAS UDDI Registry Administration. Some of these tools are provided through Oracle Enterprise Manager as described in Web Services Publishing.
A Java-based client library is also provided to facilitate additional tool development and application development (see the Oracle Application Server UDDI Client API Reference Javadoc on the Oracle Application Server 10g (9.0.4) Documentation CD-ROM).
UDDI open database support is provided for Microsoft SQL Server, IBM DB2, and Oracle (non-infrastructure) databases as described in UDDI Open Database Support.
Finally, OracleAS UDDI Registry leveraging OracleAS Syndication Services provides a subscription service allowing publishers in the registry to monitor or obtain changes in the registry (see UDDI Subscription Service). See Subscribing to an Offer for information about using the UDDI Content Subscription Manager that allows publishers and administrators to subscribe to offers from content providers through specialized content connectors managed by OracleAS Syndication Services.
UDDI Registration describes the types of searches that can be performed in a UDDI registration, describes an overview of the data structure of a UDDI registry as specified by the UDDI v2 specification, and finally describes a subset of the Oracle implementation of the UDDI registry as support for Web Services discovery and Web Services publishing.
The information provided in a UDDI registration can be used to perform three types of searches:
White pages search -- containing address, contact, and known identifiers. For example, search for a business that you already know something about, such as its name or some unique ID.
Yellow pages topical search -- containing industrial categories based on standard classifications, such as NAICS, ISO-3166, and UNSPSC.
Green pages service search -- containing 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.
UDDI 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 that group information to facilitate rapid location and understanding of registration information:
businessEntity -- the top-level, logical parent data structure; contains descriptive information about the business that publishes information about Web Services, such as 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; 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; contains technical information about a Web Services entry point and references to interface specifications.
tModel -- description of specifications for Web Services, or a classification that forms the basis for technical identification; represents the technical specification of Web Services, in order to facilitate Web Services consumer 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 structure, Web Services consumers can easily identify other compatible Web Services.
publisherAssertion -- information about a relationship between two parties, asserted by one or both.
Figure 10-1 shows the UDDI information model and the relationships among its five data structure types.
Figure 10-1 UDDI Information Model Showing the Relationship Among the Five Main Data Structure Types
Because UDDI makes use of XML and SOAP, each of these data structure types contains a number of elements and attributes that further serve to describe a business or to have a technical purpose. 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 for a complete description of the UDDI service description framework, http://www.uddi.org/specification.html. This description includes the XML schema, and the approximately 20 request messages and 10 response messages that comprise the request/response XML SOAP message interface that is used to perform publishing and inquiry functions against the UDDI business registry.
See Standard Classification Support for more information about the standard classifications that are supported in the OracleAS UDDI Registry.
This section describes a subset of features that provide UDDI support for Web Services.
The 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 available for Java programmers to implement their own Web Services discovery tool to search, locate, and drill down to discover OC4J Web Services in the OracleAS UDDI Registry, as well as in any other accessible UDDI v1.0 Web Services registry. See Using the Inquiry API for more information about using the Inquiry API and locating the Javadoc documentation that describes the Inquiry API.
Web Services publishing -- Web services provider administrators can deploy OC4J Web Services using Oracle Enterprise Manager. As part of the deployment process, the administrator can also publish the OC4J container, and in this process, there is a step where you can publish Web Services to the Oracle UDDI Registry.
Web Services provider administrators can also update published Web Services by searching, locating, and drilling down to OC4J Web Services using the Application Server: <Instance-name>: OC4J home: Administration: Related Links: UDDI Registry link provided through Oracle Enterprise Manager.
Replication management -- allows administrators to create a logical registry that comprises one or more Oracle UDDI implementations and UDDI implementations from other vendors that also implement the UDDI v2.0 Replication Specification.
Subscription service -- allows publishers in the registry to monitor or obtain changes in the registry through subscriptions created using OracleAS Syndication Services.
The OracleAS UDDI Registry is preinstalled with Oracle Application Server and available through the following URLs:
Getting started information: http://
<OracleAS-host>
:
<OracleAS-port>
/uddi/
UDDI inquiry SOAP endpoint: http://
<OracleAS-host>
:
<OracleAS-port>
/uddi/inquiry
UDDI publishing SOAP endpoint: http://
<OracleAS-host>
:
<OracleAS-port>
/uddi/publishing
UDDI administration endpoint: http://
<OracleAS-host>
:
<OracleAS-port>
/uddi/admin
UDDI replication SOAP endpoint: http://
<OracleAS-host>
:
<OracleAS-port>
/uddirepl/replication
UDDI replication HTTPS Wallet Password Administration endpoint: http://
<OracleAS-host>
:<OracleAS_port>
/uddirepl/admin/wallet
Subscription management application: http://
<OracleAS-host>
:
<OracleAS-port>
/uddisub/subscription/ui
See User Management for the set of UDDI users and groups available to help you get started.
A postinstallation configuration step is necessary to set up the following:
UDDI core tModels
A node businessEntity representing the registry node
The businessEntity discoveryURL prefix and the operatorName
Postinstallation configuration is done automatically when you try to access (either through the browser or SOAP invocation programmatically) the UDDI inquiry or publishing SOAP endpoints.
As a result, if you have not accessed the inquiry or publishing SOAP endpoints and try to access other UDDI features, such as subscription management, Oracle Enterprise Manager integrated Web Services deployment and publishing, and so forth, those features will not function.
Web Services are discovered in the OracleAS UDDI Registry by browsing the registry using tools or using the Inquiry API.
Consumers can use Oracle9i JDeveloper release 9.0.3, create their own inquiry browse tool, or use third-party tools to browse and drill down for information about Web Services from theOracleAS UDDI Registry, as well as from any other accessible UDDI v1.0 Web Services registry. Consumers can use the Inquiry API available for Java programmers to implement their own Web Services discovery interface.
The Inquiry API lets consumers search for the available registered Web Services by providing 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 allows consumers to discover and use Web Services using the Java language. Programs can be written in any language and can use SOAP to discover Web Services. The Java API is provided as a convenience for Java programmers. The URL for the OracleAS UDDI Registry is http://
<OracleAS-http-server-host-name><OracleAS-port-number>
/uddi/inquiry
, where <OracleAS-http-server-host-name>
is where the Oracle HTTP Server powered by Apache is installed, and <OracleAS-port-number>
is the port number for the Oracle HTTP Server.
The Inquiry API is located in the Oracle Application Server installation directory, <ORACLE_HOME>
/uddi/
for UNIX and <ORACLE_HOME>
\uddi\
for Windows. The API documentation that describes how to use this Inquiry API can be found on the Oracle Application Server Documentation Library as UDDI Client API Reference (Javadoc) under OracleAS Web Services, which is located under the J2EE and Internet applications tab.
A set of sample demonstration (uddidemo.zip
) files are located on the Oracle technology Network (OTN) Web site http://otn.oracle.com/tech/java/oc4j/demos/ .
Within the uddidemo.zip
file is a Java program file, UddiInquiryExample.java
, that provides Java programmers with a starting point that demonstrates the key constructs and the sequence in using the Oracle Application Server UDDI client library.
The program example does the following:
Gets an instance of SoapTransportLiaison. 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 the OracleAS UDDI Registry on the command line, using parameters, such as -Dhttp.proxyHost=
<hostname>
-Dhttp.proxyPort=
<portnum>
.
setHttpProxy((SoapHttpTransportLiaison)transport);
Uses SoapTransportLiaison 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 the OracleAS UDDI Registry.
UddiClient uddiClient = new UddiClient(szInquiryUrl, null, transport);
Note: The UddiClient instance, by default, operates as a UDDI v2.0 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 business entities 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.getName()); System.out.println(businessInfo.getFirstDescription()); 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 business entities (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 new UDDI v2.0 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 the 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 the OracleAS UDDI Registry and four public UDDI registries.
Web Services are published in the OracleAS UDDI Registry by using Oracle Enterprise Manager or using the Publishing API.
Using Oracle Enterprise Manager, Web Services provider administrators can publish Web Services in the OracleAS UDDI Registry in two ways:
Navigate to the Application Server: <Instance-name>: OC4J home: Deployed Applications: Deploy Application Wizard. The Deploy Application wizard takes you through the process of deploying a J2EE application on the OC4J container. In order to publish a J2EE Web Service, you must first assemble it as a J2EE Enterprise Archive (EAR) file. See the chapter on using the Web Services assembly tool for more information. See Oracle Application Server Containers for J2EE User's Guide for information about EAR file-based deployment of J2EE Web applications.
The second-to-last step, the Publish Web Services step, of the Deploy Application wizard lets Web Services provider administrators publish (OC4J) Web Services (servlets) that are found in the EAR file. Any Web Services servlet in an application that you want to access must be published to the 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
and when the Web Services servlet is published, the status changes to Published
.
Navigate to the Application Server: <Instance-name>: OC4J home: UDDI Registry: Web Services Details window. The Web Services Details window lets Web Services provider administrators publish J2EE applications to the OracleAS UDDI Registry after entering all required Service Details and tModel Details information.
Web Services provider administrators can update the discovered published Web Services. They find these published Web Services through the Oracle Enterprise Manager Discovery tool using the UDDI Registry link in the Related Links column within the Administration section of the OC4J: home window from the Application Server: <Instance-name>: window.
Web Services provider administrators can publish J2EE Web Services, which are produced by the OracleAS Web Services assembly tool, using the Oracle Enterprise Manager Deploy Applications wizard. They can do this as follows:
Invoke Oracle Enterprise Manager and navigate to the Application Server: <Instance-name> window and then to the OC4J: home window. Locate the Deployed Applications section within the OC4J: home window and click Deploy Application to invoke the Deploy Application wizard.
Perform the steps in each window of the Deploy Application wizard and provide the essential information for each step.
At the Publish Web Services window, select the desired Web Services to register from the list of Web Services known to the application whose status is Not Published
. Do this by clicking its corresponding radio button in the Select column. Then click Publish to continue to the Web Services Details window.
At the Web Services Details window, review, edit, or enter the information as needed in each of the fields in the Services Details section and in the tModel Details section.
To add categories for either the Services Details or the tModel Details sections, click Browse UDDI Registry, browse to the desired classification, and drill down as needed through each desired category, noting all desired category names and values.
Click Add Category to add an empty row of category information.
Select the desired classification, then enter the value code and its corresponding category name for the desired category.
Repeat this process (Steps b and c) as many times as it takes to add all the categories to which to register this Web Services.
After entering all the required information on the Web Services Details window, publish the Web Services to the OracleAS UDDI Registry by clicking OK. You return to the Publish Web Services window.
Back at the Publish Web Services window, select another Web Service to publish and repeat this entire process again as described in Steps 3 and 4.
After publishing all Web Services for this application, click Next to continue to the Summary window where all the application deployment information can be reviewed.
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. Then, to repeat the process of deploying another J2EE application on the OC4J container, click Deploy Application.
After deployment, metadata describing the Web Services that you chose to publish has been added to the OracleAS UDDI Registry.
Web Services provider administrators can publish Web Services using the Oracle Enterprise Manager Web Services Details window. They do this as follows:
Invoke Oracle Enterprise Manager and navigate to the Application Server: <Instance-name> window, and then, to the OC4J: home window. Locate the UDDI Registry link in the Related Links column within the Administration section of the OC4J: home window.
Click the UDDI Registry link.
The UDDI Registry window lets the administrator select one of the three standard classifications: NAICS, UNSPSC, or ISO-3166, by clicking its link, or lets you publish Web Services by selecting the Administration link.
Click the Administration link.
At the Web Services Details window, enter the required information in each of the fields in the Services Details section and in the tModel Details section.
Enter the service name, service description, and service URL to the servlet in the Services Details section.
Enter the tModel name, tModel description, and the URL to the WSDL document in the tModel Details section.
To add categories for either the Services Details or the tModel Details sections, click Browse UDDI Registry, browse to the desired classification, and drill down as needed through each desired category, noting all desired category names and values.
Click Add Category to add an empty row of category information.
Select the desired classification, then enter the value code and its corresponding category name for the desired category.
Repeat this process (Steps d and e) as many times as needed to add all the categories to which to register this Web Services.
After entering all required information on the Web Services Details window, publish the Web Services to the OracleAS UDDI Registry by clicking Apply. This returns you to the UDDI Registry window where you can choose to publish another J2EE application to the OracleAS UDDI Registry by following the same steps again, beginning at Step 2.
Oracle Enterprise Manager provides a user interface for Web Services provider administrators to browse, drill down, and get information about Web Services published for categories in the OracleAS UDDI Registry. Web Services provider administrators can update the discovered published Web Services. They find these published Web Services through the Oracle Enterprise Manager Discovery tool using the UDDI Registry link within the Administration section of the OC4J: home window from the Application Server: <Instance-name> window.
To update published Web Services using Oracle Enterprise Manager to discover Web Services, do the following:
Invoke Oracle Enterprise Manager and navigate to the Application Server: <Instance-name> window and then to the OC4J: home window. Locate the UDDI Registry link in the Related Links column within the Administration section of the OC4J: home window.
Click the UDDI Registry link.
The UDDI Registry window lets the administrator select one of the three standard classification: NAICS, UNSPSC, or ISO-3166 by clicking its link. The UDDI Registry window lets the administrator browse any of the three classifications and discover published Web Services associated with any category or subcategory.
Click the desired classification link.
The UDDI Registry: <Classification Name> window lets the administrator 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.
Navigate to the desired category or subcategory by successively clicking the desired category links.
The Web Services: <Category Name> window lets the administrator continue to drill down through the categories, or you can view all Web Services published in a particular category by selecting the corresponding radio button in the Select column for that category, and clicking View Services.
Select the corresponding radio button in the Select column for the desired category and click View Services.
The Web Services window 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.
To view the complete details of a particular published Web Services listed for a category, either click its service name link or select its corresponding radio button in the Select column and click View Details.
Click the desired service name link.
The Web Services Details window displays detailed information for the selected Web Services published in the OracleAS UDDI Registry. This information includes:
Service Details
Service details include information such as the Web Services name, Web Services description, and the URL of the Web Services access point.
Category
Category information includes the classification and the corresponding code value and its category name.
tModel Details
tModel details include 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.
Category
Category information includes the classification and the corresponding code value and its category name.
Category information can be added or deleted for both the Service Details and tModel Details sections. You can browse the OracleAS UDDI Registry (click Browse UDDI Registry) looking for categories in which to register Web Services. You can add categories (click Add Category) to which both the Web Services and tModel are to be registered. You can remove categories (click Delete) to which the Web Services and tModel are registered.
Service and tModel detail information can be modified by moving the cursor to the appropriate field and making the necessary changes.
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 window refreshes with the original set of values for all selections as if you had just begun your current session.
Make your modifications and click Apply to save your changes.
To discover and update other published Web Services for the same category, at the top of the Web Services Details window, select the desired Web Services:<Classification Name> link to return to the desired Web Services:<Classification Name> window. At this window, select another Web Services to view in more detail, make any necessary changes, and finally click Apply to save your changes.
Alternatively, you can select the UDDI Registry link at the top of the Web Services Details window to return to the UDDI Registry window 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 its details, make any necessary changes, and finally click Apply to save your changes.
The UDDI publishing API lets 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 allows programmers to publish Web Services using the Java language. Programs can be written in any language and use 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>\uddi\
for Windows. The API documentation that describes how to use this publishing API can be found on the Oracle Application Server Documentation Library CD-ROM as UDDI Client API Reference (Javadoc) under OracleAS Web Services, which is located under the J2EE and Internet Applications tab.
A set of sample demonstration (uddidemo.zip
) files are located on the Oracle technology Network (OTN) Web site http://otn.oracle.com/tech/java/oc4j/demos.
Within the uddidemo.zip
file is 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 Oracle UDDI client library.
The program example does the following:
Gets an instance of SoapTransportLiaison. 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();
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 SoapTransportLiaison 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 the 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.0 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();
Performs various publishing operations that include creating and saving a tModel, a businessEntity, a businessService, and a bindingTemplate data structure for the purpose of creating a business that provides a Google-interface-compatible service.
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");
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");
In the tModel data structure, uses the UddiElementFactory instance to create a CategoryBag data structure and its KeyedReference, 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("wsdlSpec"); krTm1.setKeyValue("wsdlSpec"); 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 bindingTemplates 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 bindingTemplates 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 bindingTemplates 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 containing 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();
Within the uddidemo.zip
file is a Java program file, UddiPublisherAssertionExample.java
. This file provides Java programmers with a starting point that demonstrates the key constructs and the sequence in using the Oracle UDDI client library for publisher assertion-related operations. A publisher assertion, which is a UDDI v2.0 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 the OracleAS UDDI Registry. Publisher assertions are 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 business entities to be used.
String bEKey1 = createBusinessEntity(uddiClient1, "bE1 - UddiPublisherAssertionExample");String bEKey2 = createBusinessEntity(uddiClient2, "bE2 - UddiPublisherAssertionExample");
Creates for uddiClient1 a publisher assertion 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 publisher assertion.
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 new OracleAS UDDI Registry administration features.
Many administrative operations are done using the command-line tool uddiadmin.jar
described in the sections that follow.
The command-line tool uddiadmin.jar
is located in the uddi/lib/uddiadmin.jar
file for UNIX and in the uddi\lib\uddiadmin.jar
file for Windows. Administrators can use this tool for various administrative activities. In general, the command-line tool takes the command-line parameters of the following form:
java -jar uddiadmin.jar <registry admin URL> <username> <password> [-verbose] <action to perform and additional parameters> where the <username> belongs to the uddiadmin group
The default user name is ias_admin
and the default password is ias_admin123
.
Note that the -verbose
option will cause stack trace information to be printed out when an exception is encountered.
The following parameters are used for server configuration operations. See Server Configuration Properties Reference Information for more information about these configuration parameters.
Parameters: <registry admin URL> <username> <password> [-verbose] -getProperties
Description: Lists the current registry configuration parameters.
Example:
java -jar uddiadmin.jar <registry admin URL> <username> <password> [-verbose] -getProperties
Parameters: <registry admin URL> <username> <password> [-verbose] -setProperty <name>=<value>
Description: Changes the value of the named configuration parameter. The OracleAS UDDI Registry J2EE application needs to be restarted for the parameters to take effect.
Warning: Be very careful when using the -setProperty option to change server configuration property values. Making an incorrect property setting could cause severe damage to the integrity of the registry. |
OracleAS UDDI Registry for 10g (9.0.4) uses the Oracle Internet Directory (OID) of the Oracle Application Server 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.
In other words, users are located under the user subtree of the OID default subscriber.
The types of UDDI users are summarized in Table 10-1.
Table 10-1 Default UDDI Groups
Group | Description |
---|---|
uddipublisher | Can access the publishing end point and save, update, or delete UDDI entities in the registry. |
uddipublisher | Can create UDDI subscriptions. |
uddiadmin | Can access the administration end points and perform administrative activities.
Can perform all activities specified in uddipublisher group. |
uddireplicator | Can perform replication activities based on the replication schedule: send replication requests such as get_changeRecords to other UDDI nodes and apply the changeRecords received. |
Note: Do not remove any of these default UDDI Groups. |
In addition to these groups, there are also a set of default groups for user quota purposes. Those groups can be added, updated, or removed based on the specific user quota policy administrators need to enforce.
By default, the following users are created in an installation. Administrators can add or remove users to or from these corresponding groups as shown in Table 10-2.
Table 10-2 Default UDDI Users
Group | User Names | Comments |
---|---|---|
uddiadmin | ias_admin | Typically, Enterprise Manager administrators also login as ias_admin to publish to the UDDI registry through the Enterprise Manager integrated J2EE Web Services deployment and publishing wizard. |
uddipublisher | uddi_publisher, uddi_publisher1 | These are sample users for demonstrating publishing and different default quota groups. |
uddireplicator | uddi_replicator | The default user used for performing the 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 archive file.
|
Generic user management, such as creation, deletion, suspension, and so forth, is handled by Oracle Internet Directory and its Delegated Administration Service. Refer to Oracle Internet Directory Administrator's Guide for more information.
User management, including operations such as creation, deletion, suspension, role management, and so forth, is handled by OC4J Java Authentication and Authorization (JAAS) service. Refer to Oracle Application Server Containers for J2EE Services Guide for more information.
In general, user management is handled by the OC4J JAAS service and OID. However, to find out the authorized name of a user, use the -getUsers
option of the uddiadmin.jar
command-line tool described as follows:
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 tModels, publisherAssertions, businessEntities, businessServices per businessEnitity, and bindingTemplates per businessService depending upon the quota group associated with the publisher, which 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-3 shows the predefined quota groups and quota limits for each entity that a publisher can own.
Table 10-3 Predefined Quota Groups
Quota Group | Quota Limits per Entity | ||||
---|---|---|---|---|---|
|
businessEntities | businessServices per businessEntity | bindingTemplates per businessService | tModels | publisherAssertions |
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 UDDI administrators always get unlimited quota.
The OracleAS UDDI Registry administrator 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.
When a user is added to the user store (OID or jazn-data.xml
), the user should be placed in a group so that it gets 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 gets the quota limits from the Default
group. A UDDI administrator always has unlimited quota.
Use the -getRoleQuotaLimits
option of the command-line tool uddiadmin.jar
, described as follows:
Parameter: getRoleQuotaLimits
Description: Displays all the J2EE-role-to-quota-limits mappings that are currently set in the registry.
Parameter type/allowable values: long
Initial value: 0
Typical value: N/A
Guideline: N/A
Example:
java -jar uddiadmin.jar <registry admin URL> <username> <password> [-verbose] -getRoleQuotaLimits
Use the -setRoleQuotaLimits
option of the command-line tool uddiadmin.jar
, described as follows:
Parameter: setRoleQuotaLimits
Description: Sets the quota limit value for the specified quota group. This option can be used to create a new group-to-quota-limit mapping or to update an existing mapping. The parameters are defined as follows:
roleName -- name of the quota group to map to the specified limits
maxBE -- maximum number of businessEntity data structures allowed
maxBSperBE -- maximum number of businessService data structures per businessEntity allowed
maxBTperBS -- maximum number of bindingTemplate data structures per businessEntity allowed
maxTM -- maximum number of tModel data structures allowed
maxPA -- maximum number of publisherAssertion data structures allowed
The value -1 means unlimited.
Parameter type/allowable values: N/A
Initial value: N/A
Typical value: N/A
Guideline: N/A
Example:
java -jar uddiadmin.jar <registry admin URL> <username> <password> [-verbose] -setRoleQuotaLimits <roleName> <maxBE> <maxBSperBE> <maxBTperBS> <maxTM> <maxPA>
To add a new quota group, perform the following steps:
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
application. The settings must be added in both the application.xml
file of the orauddi.ear
file and the web.xml
file of the orauddi.ear
file.
Define the J2EE security role to the user store mapping in the orion-application.xml
file of the orauddi.ear
file.
Define the actual limits of the quota group using the -setRoleQuotaLimits
option of the command-line tool uddiaddmin.jar
. See the -setRoleQuotaLimits
option in 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
application. The settings must be removed from both the application.xml
file of the orauddi.ear
file and the web.xml
file of the orauddi.ear
file.
Remove the J2EE security role to the user store mapping in the orion-application.xml
file of the orauddi.ear
file.
Remove the actual limits of the quota group using the -deleteRoleQuotaLimits
option of the command-line tool uddiadmin.jar
. See the -deleteRoleQuotaLimits
option described after Step 4 for more information.
Remove the group from the user store, typically OID.
Parameter: deleteRoleQuotaLimits
Description: Deletes the group-to-quota-limits mappings for the specified quota groups.
Parameter type/allowable values: N/A
Initial value: N/A
Typical value: N/A
Guideline: N/A
Example:
java -jar uddiadmin.jar <registry admin URL> <username> <password> [-verbose] -deleteRoleQuotaLimits <roleName> [<roleName>...]
The following parameters are used for administrative entity management:
Parameters: <registry admin URL> <username> <password> [-verbose] -deleteEntity [-businessKey <businessKey> | -serviceKey <serviceKey> | -bindingKey <bindingKey> | -tModelKey <tModelKey>]
Description: Deletes the named entity irrespective of the owner of the entity. Note that this operation performs a nonpermanent delete (hide) operation in the case of a tModel entity.
Parameters: <registry admin URL> <username> <password> [-verbose] -destroyTModel <tModelKey>
Description: Permanently deletes the named tModel from the registry (as opposed to the UDDI-defined delete_tModel call, which is just hiding the tModel entity).
Parameters: <registry admin URL> <username> <password> [-verbose] -changeOwner <new username> [-businessKey <businessKey> | -tModelKey <tModelKey>]
Description: Changes the ownership of the named entity to the new specified user.
The following parameter is used for importing entities:
Parameters: <registry admin URL> <username> <password> [-verbose] [-s|-m] -import [-businesses <filename> | -tmodels <filename> | -publisherAssertion <filename> -fromBusinessCheck [true|false] -toBusinessCheck [true|false]]
Description: Imports all businessEntity and tModel data structures, and a publisherAssertion 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, entityKeys (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. 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 publisher assertion, 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 publisher assertion is going to be inserted.
The -setOperationalInfo
parameter is used for setting some operational information of entities, such as the modified timestamp. Note there are two options.
Parameters: Option 1: <registry admin URL> <username> <password> [-verbose] - setOperationalInfo
[[-businessKey key | -tModelKey key] [-newOperator OperatorName] [-newAuthorizedname authName] [-newTime timestamp]]
Option 2: <registry admin URL> <username> <password> [-verbose] - setOperationalInfo
[[-serviceKey key | -bindingKey key] -newTime timestamp]
Description: Sets some operational information, such as the operator name, authorized name, or timestamp of a businessEntity or tModel specified by a key, for example, following an import operation. Any combination of these three options is allowed to be set using the -setOperationalInfo
option.
The syntax option [[-businessKey key | -tModelKey key] [-newOperator OperatorName] [-newAuthorizedname authName] [-newTime timestamp]]
lets you change either the operator name, the authorized name, or the timestamp, or all three options of a business entity or tModel specified by a key.
The syntax option [[-serviceKey key | -bindingKey key] -newTime timestamp]
lets you change only the timestamp of a business service or binding template.
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 quotation marks on the command line. |
Warning: This feature should not be invoked when replication is set to on. In general, the-setOperationalInfo option should not be used when replication is enabled.
|
The OracleAS UDDI Registry allows administrators to create a logical registry that comprises one or more Oracle UDDI implementations and UDDI implementations from other vendors that also implement the UDDI v2.0 Replication Specification. See the UDDI v2.0 Replication Specification for more information.
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 Replication Specification. The sections that follow describe the Oracle implementation of UDDI replication.
To enable UDDI replication, an administrator 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.0 replication specification) accordingly, and using the -downloadReplicationConfiguration
and -uploadReplicationConfiguration
options of the command-line tool uddiadmin.jar
.
Enable replication scheduling by setting the following server property, oracle.uddi.server.scheduler.status
, to the value 1.
Enable update journal storage by setting the following property, oracle.uddi.server.replication.startMaintainingUpdateJournal, to true.
After UDDI replication is started, the UDDI administrator can suspend or resume replication operations by stopping or starting the oraudrepl.ear
application.
If HTTPS client-certification is used, UDDI administrators must do the following:
Obtain an exported Oracle wallet file using Oracle Wallet Manager and specify the exported wallet location by setting the server property oracle.uddi.server.replication.walletLocation
. This option only needs to be set once.
Use the -setWalletPassword
option to supply the wallet password, whenever the oraudrepl.ear
application is started or restarted. The password is not persistent for security reasons.
See Replication Configuration Management for a description of useful parameter options that are provided to assist OracleAS UDDI Registry administrators in the day-to-day operations during replication, using the command-line tool uddiadmin.jar
.
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 Replication Exception Handling for more information.
The following parameters are used in replication configuration management:
Parameters: <registry admin URL> <username> <password> [-verbose] -uploadReplicationConfiguration <xml_file_containing_replication_configuration>
Description: Uploads the specified replication configuration to a particular UDDI node within an OracleAS UDDI Registry. The application must be restarted for the new replication configuration to be used.
The following parameters are used in miscellaneous operations:
Parameters: <registry admin URL> <username> <password> [-verbose] -doPing replicationEndPointSoapUrl [-password walletPassword]
Description: Sends a UDDI replication do_ping message to the replication end-point URL specified. This is similar to the ping command in TCP/IP that is used to check if the other end point is alive. The optional walletPassword is useful when the JVM, which receives the do_ping message, does not have a valid wallet password set.
Parameters: <registry admin URL> <username> <password> [-verbose] -
replicationEndPointSoapUrl [-password walletPassword]
Description: Gets the high-water marks vector from the specified UDDI node. The optional walletPassword is useful when the JVM, which receives the do_ping message, does not have a valid wallet password set.
Parameters: <registry admin URL> <username> <password> [-verbose] -
getChangeRecord local_usn
Description: Gets the detail of a change record specified by local_usn (an integer). This API is used in conjunction with the -CorrectChangeRecord
option to correct wrong or inconsistent data across different UDDI nodes with the OracleAS UDDI Registry.
The following parameter is used in HTTPS setup operations:
Parameters: <registry replication wallet admin URL> <username> <password> [-verbose] -
setWalletPassword walletPassword
Description: Sets the wallet password to be used for HTTPS communication among UDDI nodes for UDDI replication. Each time the application is restarted, this option must be invoked because the wallet password is not stored persistently, for security reasons. The registry replication wallet admin URL is http://
<OracleAS-host>
:
<OracleAS-port>
/uddirepl/admin/wallet
.
The following parameter is used in replication custody transfer operations:
Parameters: <registry admin URL> <username> <password> [-verbose] -
transferCustody oldOperatorName newOperatorName newAuthorizedName [-tModelKey tModelKey | -businessKey businessKey]
Description: Transfers the custody of a tModel or a business entity to a new operator and a new authorized name. This option is part of custody transfer as defined by the UDDI specification.
If any errors occur during replication operations, the OracleAS UDDI Registry logs the error in the application.log
file of the oraudrepl.ear
file. The administrator should investigate the cause of the error and correct each problem accordingly.
The following parameter is used in replication exception handling:
Parameters: <registry admin URL> <username> <password> [-verbose] -
correctChangeRecord
<changeRecordCorrectionfile> <changeRecordNewDatafile
>
Description: Applies the changeRecordCorrectionfile file contents and changeRecordNewDatafile file contents to the UDDI node. The content of these files must conform to the UDDI replication XML schema. This option is part of UDDI replication error recovery.
See UDDI Replication Properties for a description of a set of server properties provided for advanced tuning and configuration of the replication operations.
OracleAS UDDI Registry for 10g (9.0.4) can perform a spell-check form of category value validation. An administrator can add or remove the set of categories that will be validated by the registry. Refer to the v2.0 UDDI 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 the included sample Web applications link http://<OracleAS-host>:<OracleAS-port>/uddi/
or a third-party tool.
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 tModelKeys entities) using the uddiadmin.jar
utility. See Import Operation for more information on the import operation. The tModel data structure published should be classified as "unvalidatable" in 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 uddi/admin/naics-97.ctl
for UNIX and uddi\admin\naics-97.ctl
for Windows. Copy the file and replace the category file name in the control file with the one you create. Refer to the v2.0 UDDI specification for more information about generating a unique ID for the new category tModel.
Load the category file to the database using SQL*Loader. Refer to Oracle9i Database Utilities 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 administrative tool, uddiadmin.jar
. For example, to add a new tModel entity with key UUID:FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFF0
, issue the setProperty command for the property oracle.uddi.server.categoryValidationTModelKeys
as follows:
java -jar uddiadmin.jar <registry admin URL> <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' "
Notice that because the setProperty command defines all categories that need to be validated, to add a new category, you must set the property with all the existing tModelKey values plus the new tModelKey value.
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 with the registry and remove the category values in the database. Perform the following steps:
To unregister the category with the registry, you should remove it from the list of validated categories using the uddiadmin.jar setProperty
command for the property oracle.uddi.server.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.
Third parties can register new category and identifier schemes, and then control the validation process used by the 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 is calling the validate_values service will pass a businessEntity, a businessService, or a tModel element as the sole argument to this callout. 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 for the following property oracle.uddi.server.externalValidation
as follows:
java -jar uddiadmin.jar <registry admin URL> <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 categorized as checked under uddi-org:types category.
Register the external validation service of the category with the registry by updating the following server property: oracle.uddi.server.externalValidationTModelList
using the -setProperty
option as follows:
java -jar uddiadmin.jar <registry admin URL> <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
, the command with the entry is as follows:
java -jar uddiadmin.jar <registry admin URL> <username> <password> -setProperty oracle.uddi.server.externalValidationTModelList=uuid:acme-taxonomy-key,http://acme.com/externalValidation
In addition, the timeout limit (in milliseconds) can be tuned for calls to the external validation service using the server property oracle.uddi.server.externalValidationTimeout
as follows:
java -jar uddiadmin.jar <registry admin URL> <username> <password> -setProperty oracle.uddi.server.externalValidationTimeout=5000
To remove an externally validated category from the registry, perform the following steps:
Update the following server property: oracle.uddi.server.externalValidationTModelList
using the -setProperty
option by supplying a null value for the <URL-validation-service>
as follows:
java -jar uddiadmin.jar <registry admin URL> <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 <registry admin URL> <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 all be monitored using Oracle Enterprise Manager 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
Registry data backup and restore operations can be done by using the standard Oracle database backup and restore operations. See Oracle9i Backup and Recovery Concepts.
The following sections are some additional OracleAS UDDI Registry administration information.
The UUID generation algorithm that is used generates version 4 UUID, which creates UUIDs from random numbers.
All built-in tModel data structures as specified in the UDDI v2.0 specification are included. An additional tModel data structure uddi-org:operators
, defined in the UDDI v2.0 specification, is also included to classify the bootstrap node businessEntity that represents the OracleAS UDDI Registry itself.
The following sections describe some database-specific configuration information.
The database character set should be UTF-8 to accommodate all possible characters. However, if a customer is absolutely certain that the data to be stored in the registry contains characters of a specific country or region (such as western Europe), the customer may use the appropriate database character set.
The functional index must be enabled to support index-based, case-insensitive search. The following init.ora
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 higher, the modified timestamps are of SQL type TIMESTAMP, with accuracy up to microseconds. If the database compatibility is below release 9.0.1, the modified timestamps are of SQL type DATE, with accuracy up to seconds.
The Inquiry API in general does not require authentication. However, if the inquiry end point needs to be protected, transport-level authentication, such as HTTP BASIC authentication and HTTPS 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 endpoint URL, you may want to allow HTTPS access only. To disable HTTP access, edit the web.xml
file of the orauddi
application to enforce data confidentiality and make adjustments to HTTP servers accordingly. 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. 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>
Similarly, you can set up HTTPS access for the Administrative endpoint and the UDDI Replication endpoint in the same way.
The OracleAS UDDI Registry uses the following three standard classifications:
North American Industry Classification System (NAICS)
This is a classification system for each industry and corresponding code. For more information about NAICS, see the Web site at
http://www.census.gov/epcd/www/naics.html
Universal Standard Products and Services Codes (UNSPSC)
This is the first coding system to classify both products and services for use throughout the global marketplace. For more information about UNSPSC, see the Web site at
http://eccma.org/unspsc/
ISO-3166 Geographic classification (ISO-3166)
This is a list of all country names and each corresponding two-character code element. For more information about ISO-3166, see the Web site at
http://www.iso.org/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/index.html
When Web Services provider administrators publish Web Services, they can select the classification 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 classifications, and to as many categories and subcategories as they wish within each classification.
The UDDI specification mandates that the registry support the full UTF-8 character set. Oracle recommends, though does not require, using UTF-8 as the character set for the Oracle Application Server infrastructure database if the 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 Oracle9i Globalization Support Guide for details.
In particular, the descriptions in the UDDI built-in ISO-3166 classification contains 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, clrISO.sql
, for example:
cd <ORACLE_HOME>/uddi/admin sqlplus system/manager @clrISO.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 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 of your choice as the backend storage, the parameters can be configured by editing the data source jdbc/OracleUddi
. Refer to the chapter on data sources in Oracle Application Server Containers for J2EE Services Guide for more information. If you are using the Oracle Application Server infrastructure database as the backend storage, the parameters can be configured by modifying the following UDDI server configuration parameters:
oracle.uddi.server.db.minConnections
oracle.uddi.server.db.maxConnections
oracle.uddi.server.db.jdbcDriverType
oracle.uddi.server.db.stmtCacheType
oracle.uddi.server.db.stmtCacheSize
Refer to Server Configuration and Server Configuration Properties Reference Information for more information.
Change of the operatorName and businessEntity discoveryURL prefix: In some cases, administrators may want to change either the operatorName or businessEntity discoveryURL prefixes, or both parameter values, when moving a system from a staging environment to a production environment.
The SQL script ${ORACLE_HOME}/uddi/admin/uddirpic.sql
on UNIX or %ORACLE_HOME%\uddi\admin\uddirpic.sql
on Windows can be used to change the these parameter values.
This section describes reference information for some UDDI server configuration properties. It is divided into the following sections:
These server configuration parameters are referenced in Server Configuration . As each example shows, these configuration parameters can be changed only by using the command-line administration tool, uddiadmin.jar
, which is described in Using the Command-Line Tool uddiadmin.jar .
The following two properties operatorName
and businessEntityURLPrefix
should be changed immediately after an installation, but should not be changed afterward:
Property name: operatorName
Description: Provides the name of the operator of the 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 be changed to the new operator name.
Note: Be sure to set this parameter before enabling replication. |
Property type/allowable values: A non-null string.
Initial value: OracleUddiServer
Typical value: <domain of the UDDI registry>/uddi
Guideline: N/A
Example:
java -jar uddiadmin.jar <registry admin URL> <username> <password> [-verbose] -setProperty oracle.uddi.server.operatorName=OracleUddiServer
Property name: businessEntityURLPrefix
Description: 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 all discoveryURLs of usetype "businessEntity" that begin with the old URL prefix to be changed to the new URL prefix.
Note: Be sure to set this parameter before enabling replication. |
Property type/allowable values: A valid URL.
Initial value: The OracleAS UDDI Registry will prompt an administrator for an initial value upon server initialization.
Typical value: The host name and port should be the host name and port of the Web server (which may or may not be the same as the servlet container).
Guideline: N/A
Example:
java -jar uddiadmin.jar <registry admin URL> <username> <password> [-verbose] -setProperty oracle.uddi.server.businessEntityURLPrefix=
Property name: defaultLang
Description: Provides the default language of the registry for the purpose of filling in UDDI v1.0 description elements, which lack a language qualification. Language defaults are not done for UDDI v2.0 requests. Valid values are the values of the xml:lang attribute.
Property type/allowable values: Values of xml:lang.
Initial value: en
Typical value: The location of the primary region the registry serves.
Guideline: N/A
Example:
java -jar uddiadmin.jar <registry admin URL> <username> <password> [-verbose] -setProperty oracle.uddi.server.defaultLang=en
The following UDDI server properties can be used with external classification validation:
Property name: externalValidation
Description: Determines if external validation occurs.
Property type/allowable values: Boolean (true, false)
Initial value: false
Typical value: false
Guideline: N/A
Example:
java -jar uddiadmin.jar <registry admin URL> <username> <password> [-verbose] -setProperty oracle.uddi.server.externalValidation=true
Property name: externalValidationTModelList
Description: Provides the list of tModel key-URL pairs that represents the categorization and identifier tModel data structures that will be validated by an external SOAP service. The tModelKey and URL values within a pair are separated by a comma (,), and pairs of values are separated by a semicolon (;).
Property type/allowable values: N/A
Initial value: null value ""
Typical value: null value ""
Guideline: N/A
Example:
java -jar uddiadmin.jar <registry admin URL> <username> <password> [-verbose] -setProperty oracle.uddi.server.externalValidationTModelList=uuid:acme-taxonomy-key, http://acme.com/externalValidation
Property name: externalValidationTimeout
Description: Defines the amount of time, in milliseconds, before timeout occurs for external validation.
Property type/allowable values: long
Initial value: 5000
Typical value: N/A
Guideline: N/A
Example:
java -jar uddiadmin.jar <registry admin URL> <username> <password> [-verbose] -setProperty oracle.uddi.server.externalValidationTimeout=5000
The following UDDI server properties can be used with replication:
Property name: taskExecutionPeriod
Description: Controls the period of time during which replication task should be executed (in milliseconds).
Property type/allowable values: long
Initial value: 5000
Typical value: N/A
Guideline: N/A
Example:
java -jar uddiadmin.jar <registry admin URL> <username> <password> [-verbose] -setProperty oracle.uddi.server.replication.taskExecutionPeriod=5000
Property name: maxChangeRecordsSentEachTime
Description: Controls the maximum number of change records sent out in response to an incoming getChangeRecords request.
Property type/allowable values: integer
Initial value: 100
Typical value: N/A
Guideline: N/A
Example:
java -jar uddiadmin.jar <registry admin URL> <username> <password> [-verbose] -setProperty oracle.uddi.server.replication.maxChangeRecordsSentEachTime=100
Property name: pushTaskExecutionPeriod
Description: Controls the push task execution period (in milliseconds).
Property type/allowable values: long
Initial value: 45000
Typical value: N/A
Guideline: N/A
Example:
java -jar uddiadmin.jar <registry admin URL> <username> <password> [-verbose] -setProperty oracle.uddi.server.replication.pushTaskExecutionPeriod=45000
Property name: pushEnabled
Description: Controls whether or not push should be performed for UDDI replication.
Property type/allowable values: Boolean (true, false)
Initial value: true
Typical value: true
Guideline: N/A
Example:
java -jar uddiadmin.jar <registry admin URL> <username> <password> [-verbose] -setProperty oracle.uddi.server.replication.pushEnabled=true
Property name: soapRequestTimeout
Description: Controls the timeout value for each SOAP replication request (in milliseconds).
Property type/allowable values: long
Initial value: 180000
Typical value: N/A
Guideline: N/A
Example:
java -jar uddiadmin.jar <registry admin URL> <username> <password> [-verbose] -setProperty oracle.uddi.server.replication.soapRequestTimeout=180000
Property name: soapRequestAuthMethod
(Authentication property)
Description: Controls the authentication method the registry node will try to use in sending replication SOAP requests to other nodes. If CLIENT-CERT is used, the administrator must set the wallet password each time the registry node gets started or restarted.
Property type/allowable values: one of {NONE, CLIENT-CERT}
Initial value: NONE
Typical value: CLIENT-CERT
Guideline: N/A
Example:
java -jar uddiadmin.jar <registry admin URL> <username> <password> [-verbose] -setProperty oracle.uddi.server.replication.soapRequestAuthMethod=NONE
Property name: walletLocation
(Authentication property)
Description: Defines the wallet file name. The wallet file will be located in the same place as uddiserver.config.
Property type/allowable values: N/A
Initial value: ewallet.p12
Typical value: N/A
Guideline: N/A
Example:
java -jar uddiadmin.jar <registry admin URL> <username> <password> [-verbose] -setProperty oracle.uddi.server.replication.walletLocation=ewallet.p12
Property name: startMaintainingUpdateJournal
(Advanced use property)
Description: Controls whether or not the update journal will be maintained for UDDI replication. This property must be set to true for replication to occur.
Note: Be sure to upload a correct replication configuration before you set this property totrue .
|
Note: Once you set this property totrue , you should only set it back to false 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.
|
Property type/allowable values: Boolean (true, false)
Initial value: false
Typical value: false
Guideline: N/A
Example:
java -jar uddiadmin.jar <registry admin URL> <username> <password> [-verbose] -setProperty oracle.uddi.server.replication.startMaintainingUpdateJournal=false
Property name: changeRecordWantsAck
(Advanced use property)
Description: Controls whether or not ACK is required for the change records sent out from the local node.
Property type/allowable values: Boolean (true, false)
Initial value: false
Typical value: false
Guideline: N/A
Example:
java -jar uddiadmin.jar <registry admin URL> <username> <password> [-verbose] -setProperty oracle.uddi.server.replication.changeRecordWantsAck=false
The following UDDI server properties can be used to set UDDI replication scheduler properties:
Property name: timer_pool_size
Description: Specifies the number of concurrently active threads used by the scheduler.
Property type/allowable values: N/A
Initial value: 1
Typical value: 1
Guideline: N/A
Example:
java -jar uddiadmin.jar <registry admin URL> <username> <password> [-verbose] -setProperty oracle.uddi.server.scheduler.timer_pool_size=1
Property name: status
Description: Indicates whether or not the scheduler is enabled to send out replication requests.
Property type/allowable values: Boolean (0=off, 1=on)
Initial value: 1
Typical value: 1
Guideline: N/A
Example:
java -jar uddiadmin.jar <registry admin URL> <username> <password> [-verbose] -setProperty oracle.uddi.server.scheduler.status=1
The following UDDI server properties can be used for registry-based validation and quota limit checking:
Property name: categoryValidationTModelKeys
(Advanced use property)
Description: Represents the categorization and identifier tModel keys, which will be validated by the registry during an attempted save operation.
Property type/allowable values: A list in the form of '<tModelKey1>', '<tModelKey2>', '<tModelKey3>'.
Initial value: 'UUID:C1ACF26D-9672-4404-9D70-39B756E62AB4', which represents (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).
Note: The uddi-org:types classification should not be removed from the list. |
Typical value: The preinstalled value.
Example:
java -jar uddiadmin.jar <registry admin URL> <username> <password> [-verbose] -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' "
Property name: identifierValidation
(Advanced use property)
Description: Controls validation for all IdentifierBag entities. The following flag settings are allowed:
full -- all validation conditions will be checked
tmodel_existence -- only tModelKey existence will be validated
none -- no condition will be checked
Property Type/allowable values: full, tmodel_existence, none
Initial value: full
Typical value: full
Guideline: N/A
Example:
java -jar uddiadmin.jar <registry admin URL> <username> <password> [-verbose] -setProperty oracle.uddi.server.identifierValidation=full
Property name: operatorCategory
(Advanced use property)
Description: Determines whether or not additional entities may be categorized as an operator node, if categoryValidation is true.
Property type/allowable values: Boolean (true, false)
Initial value: true
Typical value: true
Guideline: N/A
Example:
java -jar uddiadmin.jar <registry admin URL> <username> <password> [-verbose] -setProperty oracle.uddi.server.categoryValidation.operatorCategory=true
Property name: categoryValidation
(Advanced use property)
Description: Controls validation for all CategoryBag entities. The following flag settings are allowed:
full -- all validation conditions will be checked
tmodel_existence -- only tModelKey existence will be checked
none -- no condition will be checked
Property type/allowable values: full, tmodel_existence, none
Initial value: full
Typical value: full
Guideline: N/A
Example:
java -jar uddiadmin.jar <registry admin URL> <username> <password> [-verbose] -setProperty oracle.uddi.server.categoryValidation=full
Property name: assertionKeyedRefValidation
(Advanced use property)
Description: Controls validation for all publisher assertion KeyedReference entities. The following flag settings are allowed:
full -- all validation conditions will be checked
tmodel_existence -- only tModelKey existence will be validated
none -- no condition will be checked
Property type/allowable values: full, tmodel_existence, none
Initial value: full
Typical value: full
Guideline: N/A
Example:
java -jar uddiadmin.jar <registry admin URL> <username> <password> [-verbose] -setProperty oracle.uddi.server.assertionKeyedRefValidation=full
Property name: tModelInstanceInfoKeyValidation
(Advanced use property)
Description: Determines if tModelKey existence validation occurs within tModelInstanceInfo elements.
Property type/allowable values: Boolean (true, false)
Initial value: true
Typical value: true
Guideline: N/A
Example:
java -jar uddiadmin.jar <registry admin URL> <username> <password> [-verbose] -setProperty oracle.uddi.server.tModelInstanceInfoKeyValidation=true
Property name: addressTModelKeyValidation
(Advanced use property)
Description: Determines if tModelKey existence validation occurs within address elements.
Property type/allowable values: Boolean (true, false)
Initial value: true
Typical value: true
Guideline: N/A
Example:
java -jar uddiadmin.jar <registry admin URL> <username> <password> [-verbose] -setProperty oracle.uddi.server.addressTModelKeyValidation=true
Property name: hostingRedirectorValidation
(Advanced use property)
Description: Determines if hostingRedirector validation occurs within bindingTemplate elements. Validation ensures that the referenced bindingTemplate element exists and does not contain a hostingRedirector element.
Property type/allowable values: Boolean (true, false)
Initial value: true
Typical value: true
Guideline: N/A
Example:
java -jar uddiadmin.jar <registry admin URL> <username> <password> [-verbose] -setProperty oracle.uddi.server.hostingRedirectorValidation=true
The following UDDI server properties are miscellaneous.
Property name: quotaLimitChecking
Description: Determines whether or not publishing quotas, the limits on the number of entities that can be created in the registry per user, are enforced.
Property type/allowable values: Boolean (true, false)
Initial value: true
Typical value: true
Guideline: N/A
Example:
java -jar uddiadmin.jar <registry admin URL> <username> <password> [-verbose] -setProperty oracle.uddi.server.quotaLimitChecking=true
Property name: schemaValidationUponIncomingRequests
(Advanced use property)
Description: Determines whether or not the server will validate incoming requests against the UDDI XML schema.
Property type/allowable values: Boolean (true, false)
Initial value: true
Typical value: true
Guideline: N/A
Example:
java -jar uddiadmin.jar <registry admin URL> <username> <password> [-verbose] -setProperty oracle.uddi.server.schemaValidationUponIncomingRequests=true
The following UDDI server properties can be used for configuring database connection properties:
Property name: minConnections
(Advanced use property)
Description: Determines the minimum number of database connections in the connection pool. This property is applicable only if the Oracle Application Server infrastructure database is used as the backend storage.
Note: In a cluster environment, this property must be set for each OC4J instance. |
Property type/allowable values: A nonnegative integer that is smaller than the value for maxConnections
.
Initial value: 1
Typical value: 1
Guideline: N/A
Example:
java -jar uddiadmin.jar <registry admin URL> <username> <password> [-verbose] -setProperty oracle.uddi.server.db.minConnections=1
Property name: maxConnections
(Advanced use property)
Description: Determines the maximum number of database connections in the connection pool. This property is applicable only if the Oracle Application Server infrastructure database is used as the backend storage.
Note: In a cluster environment, this property must be set for each OC4J instance. |
Property type/allowable values: A positive integer.
Initial value: 8
Typical value: Depends on the maximum number of concurrent requests and the desired performance.
Guideline: The estimated maximum number of concurrent requests plus a percentage of the buffer.
Example:
java -jar uddiadmin.jar <registry admin URL> <username> <password> [-verbose] -setProperty oracle.uddi.server.db.maxConnections=12
Property name: jdbcDriverType
(Advanced use property)
Description: Defines the type of JDBC driver to be used to access the Oracle Application Server infrastructure database. This property is applicable only if the Oracle Application Server infrastructure database is used as the backend storage.
Note: In a cluster environment, this property must be set for each OC4J instance. |
Property type/allowable values: {thin, oci}
Initial value: thin
Typical value: N/A
Guideline: N/A
Example:
java -jar uddiadmin.jar <registry admin URL> <username> <password> [-verbose] -setProperty oracle.uddi.server.db.jdbcDriverType=thin
Property name: stmtCacheType
(Advanced use property)
Description: Defines the type of statement caching. This property is to be used with the Oracle Application Server infrastructure database and JDBC driver only.
Note: In a cluster environment, this property must be set for each OC4J instance. |
Property type/allowable values: {NONE, IMPLICIT, EXPLICIT}
Initial value: NONE
Typical value: EXPLICIT
Guideline: N/A
Example:
java -jar uddiadmin.jar <registry admin URL> <username> <password> [-verbose] -setProperty oracle.uddi.server.db.stmtCacheType=NONE
Property name: stmtCacheSize
(Advanced use property)
Description: Defines the size (number of statements cached) of statement caching per connection. This property is to be used with the Oracle Application Server infrastructure database and JDBC driver only.
Note: In a cluster environment, this property must be set for each OC4J instance. |
Property type/allowable values: integer
Initial value: 50
Typical value: 50
Guideline: N/A
Example:
java -jar uddiadmin.jar <registry admin URL> <username> <password> [-verbose] -setProperty oracle.uddi.server.db.stmtCacheSize=50
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 is typically located at <J2EE_HOME>
/application-deployments/orauddi/application.log
. The reference provides additional information for an administrator to diagnose and resolve problems.
The following error message is associated with the UDDI content syndication UI implementation. This error is returned to the user, non administrator, as a message within the GUI.
In addition to the Oracle Application Server infrastructure database, the following databases are supported:
Microsoft SQL Server
IBM DB2
Oracle (non-Oracle Application Server infrastructure database)
For Microsoft SQL Server and IBM DB2, the Oracle Application Server DataDirect Connect JDBC driver is needed.
The following installation steps for SQL Server, DB2, and Oracle assume that the relevant database server has been installed. These instructions also assume that Oracle Application Server Portal has been installed, which should copy the relevant UDDI files to $
{ORACLE_HOME}
/uddi/admin
on UNIX or %ORACLE_HOME%
\uddi\admin
on Windows.
The following sections describe installation and configuration information.
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 and password (sa/sa
):
osql -S <server>
-U sa -P sa -i wurcreatedb_mssql.sql
where <server>
is the server hosting the SQL Server instance.
Go to the %MSSQL_HOME_DB%
directory. Use the osql
utility to execute the SQL script wurinst_mssql.sql
using the uddisys/uddisys
account created in Create the Database and User.The syntax is as follows:
osql -S<server>
-U<user>
-P <password> -d<database>
-i wurinst_mssql.sql
where <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 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 ("|
") 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 ISO3166 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, like 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://<servername>:1433;SelectMethod=cursor;User=uddisys;Password=uddisys" />
Note that <servername>
is the network name or IP address of the server hosting the SQL Server instance used for UDDI.
The data source needs to be accessible by the orauddi.ear
and oraudrepl.ear
files.
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.
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.
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 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 < wurcreatdb_db2.sql
where -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, do the following: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 ('|') as the delimiter.
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 ISO3166 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, like 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 UDDI.
The data source needs to be accessible by the orauddi.ear
and oraudrepl.ear
files.
Refer to the Data Sources chapter in the Oracle Application Server Containers for J2EE Services Guide for more information.
Now, launch the UDDI server so that these initial URL connection strings will be used to create the appropriate default package in DB2.
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"
Note that the last two parameters, CreateDefaultPackage
and ReplacePackage
, have been removed from the final URL attribute.
Once these changes have been made to both data-sources.xml
files, restart the UDDI server for the changes to take effect.
The following sections describe installation and configuration information.
If the ${ORACLE_HOME}
/uddi/admin
directory is not accessible from the server with the relevant Oracle tools, then copy this directory to a location that is accessible. This directory will be referred to as ${ORACLE_HOME_ORACLE}
on UNIX or %ORACLE_HOME_ORACLE%
on Windows.
The following steps describe how to create the uddisys
database and the uddisys
user:
Go to the ${ORACLE_HOME_ORACLE}
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 ISO3166 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 non-Oracle Application Server infrastructure database is the desired database, like 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-Oracle Application Server infrastructure database instance used for UDDI.
The data source needs to be accessible by the orauddi.ear
and oraudrepl.ear
files.
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 OracleAS UDDI Registry, leveraging OracleAS Syndication Services, provides a subscription service allowing publishers in the registry to monitor or obtain changes in the registry. By specifying a specific query or a set of entities, an administrator can define an offer that provides changes in the entities that are interesting to some users or scenarios. For example:
An administrator can define an offer that provides changes to any businessService entities classified in the NAICS classification scheme, for example, under the category named mining
.
Publishers in the registry are interested in these types of services and can subscribe to the offer.
For example, if you want to find all changes to any businessServices entities that are classified under the topic name mining in the NAICS classification scheme, as a user of the registry, you can subscribe to such an offer and automatically receive periodic updates to the content.
An administrator defines an offer using the OracleAS Syndication Services administrators tool.
Determine the content connector to be used based on the type of filtering criteria.
Create a content provider resource defining the specific filtering criteria.
Create an offer.
Define the contract (such as licensing terms, delivery rules) of the offer.
Grant the offer to uddi_syndication
application user, so that regular UDDI publishers can subscribe to the offer using the UDDI Content Subscription Manager.
Note: The offer must be granted to uddi_syndication user. It is the user used in UDDI Content Subscription Manager. |
See Oracle Application Server Syndication Services Developer's and Administrator's Guide for more information.
For example, to provide an offer of changes to businessService entities classified under the mining category in the NAICS classification scheme, the administrator would do the following:
Determine the content connector to be used. First, the administrator determines the content connector to be used based on the type of filtering criteria. In this example, the type of filtering criteria is a finding services by categoryBag. Therefore, the content connector to be used is UddiFindServiceByCategoryBagCPAdaptor.
Create a content provider resource. Secondly, the administrator creates a content provider resource using the content connector selected. The content provider resource defines the specific filtering criteria. In this example, the UDDI Subscription Service specific filtering criteria is that mining category in the NAICS classification scheme.
Create an offer. Finally, the administrator creates an offer (to which regular UDDI publishers can subscribe) using the content provider resource. In addition, to the filtering criteria, the administrator does the following:
Defines the contract (such as licensing terms, delivery rules) of the offer.
Grants the offer to uddi_syndication
application user, so that regular UDDI publishers can subscribe to the offer using the UDDI Content Subscription Manager.
OracleAS Syndication Services comes configured with the following content UDDI connectors. A description of each connector is provided along with the specified input arguments or properties each contains.
UddiFindBusinessByCategoryBagCPAdaptor -- find businesses by category bag; the category bag contains only one keyed reference with the following properties: tModel key, key name, and key value.
UddiFindServiceByCategoryBagCPAdaptor -- find services by category bag; the category bag contains only one keyed reference with the following properties: tModel key, key name, and key value.
UddiFindServiceByTModelBagCPAdaptor -- find services by TModel bag; the tModel bag contains only one keyed reference with the following properties: tModel key, key name, and key value.
UddiFindTModelByCategoryBagCPAdaptor -- find TModels by category bag; the category bag contains only one keyed reference with the following properties: tModel key, key name, and key value.
UddiGetBusinessDetailCPAdaptor -- get the full businessEntity information for one business identified by a BusinessKey.
UddiGetServiceDetailCPAdaptor -- get full details for a registered businessService identified by a ServiceKey.
UddiGetBindingDetailCPAdaptor -- get full bindingTemplate information suitable for making one or more service requests identified by a BindingKey.
UddiGetTModelDetailCPAdaptor -- get full details for a registered tModel data structure identified by a TModelKey.
UddiFindBusinessByNameCPAdaptor -- find one business by name; the name is the business name prefix.
The OracleAS Syndication Services administrator:
May register a content provider for any of these preconfigured connectors by specifying its properties, selecting the desired UDDI content connector, and specifying settings to access the content repository and its resources.
May create an offer for a content provider by selecting the content provider resource, specifying its offer properties, and choosing users or groups to which to grant access to this offer.
Once the offers are created, the UDDI Content Subscription Administrator uses the Web-based UDDI Content Subscription Manager to:
Manage UDDI application subscription properties, such as configuring the UDDI Content Subscription Manager with OracleAS Syndication Services.
Subscribe to available offers as well as cancel his own subscriptions and those belonging to any user.
See Subscribing to an Offer for more information about using this administrative tool to create OracleAS UDDI Registry UDDI Registry-based subscriptions. See Oracle Application Server Syndication Services Developer's and Administrator's Guide for more information about managing and registering content providers and creating offers and associated offer contracts with content providers.
OracleAS UDDI Registry provides a command-line tool to facilitate the automatic generation of custom OracleAS Syndication Services content connectors for various UDDI inquiry requests. The command-line tool can be described as follows:
generateCPA
Parameter: <registry admin URL> <username> <password> [-verbose] -generateCPA <javaClassName> <uddiRequestXMLTemplate>
Description: Given the UDDI request template XML, generates an OracleAS Syndication Services content connector, in the format of a Java class file. The generated Java class file will have the name as specified by the javaClassName
parameter and a fixed Java package of oracle.uddi.server.subscription.cp
. In order for OracleAS Syndication Services to find it, the Java class file should be incorporated into the existing JAR file located in the following directory:
For UNIX:<ORACLE_HOME>
/syndication/lib/cp/uddicpas.jar For Windows:<ORACLE_HOME>
\syndication\lib\cp\uddicpas.jar
For example, given the following XML file findbiz.xml
as a UDDI request template, perform the following steps:
<find_business xmlns='urn:uddi-org:api_v2' generic='2.0'> <findQualifiers> <findQualifier>sortByNameDesc</findQualifier> <findQualifier>sortByDateAsc</findQualifier> <findQualifier>caseSensitiveMatch</findQualifier> </findQualifiers> <name>$(BusinessName,"Test")</name> </find_business>
Note that parameter definitions are allowed in this XML template. The syntax is as follows: $(parameterName)
or $(parameterName,"default_value")
. For the find_business request template, a parameter with a preset value is defined. An Oracle Application Server UDDI Content Subscription Administrator can generate offers by setting different values to the BusinessName
parameter after loading the content connector generated from this XML template. Note that this UDDI request XML template must have a UDDI v2 namespace.
Execute the generateCPA
command as follows:
java -jar uddiadmin.jar <registry admin URL> <username> <password> [-verbose] -generateCPA UddiFindBizCPAdaptor findbiz.xml
A UddiFindBizCPAdaptor.class
file will be generated and must be incorporated into the uddicpas.jar
file.
Navigate to the directory where the uddicpas.jar
file is located.
Create under this current directory the subdirectory oracle/uddi/server/subscription/cp
on UNIX or the subdirectory oracle\uddi\server\subscription\cp
on Windows.
Copy your class file, UddiFindBizCPAdaptor.class into the <ORACLE_HOME>
/syndication/lib/cp/oracle/uddi/server/subscription/cp
directory on UNIX or the <ORACLE_HOME>
\syndication\lib\cp\oracle\uddi\server\subscription\cp
directory on Windows.
Execute the following JAR command:
On UNIX: jar -uf uddicpas.jar oracle/uddi/server/subscription/cp/UddiFindBusinessByNameCPAdaptor.class On Windows: jar -uf uddicpas.jar oracle\uddi\server\subscription\cp\UddiFindBusinessByNameCPAdaptor.class
Register the connector. Refer to Oracle Application Server Syndication Services Developer's and Administrator's Guide for more information.
The UDDI Content Subscription Manager is a Web-based application that allows users (publishers and administrators) to subscribe to offers from content providers through specialized UDDI content connectors managed by OracleAS Syndication Services. As subscribers to the OracleAS UDDI Registry syndicated by OracleAS Syndication Services, users can create subscriptions to obtain changes in UDDI Registry content delivered to them through e-mail. Users can also cancel their own subscriptions.
The UDDI Content Subscription Manager recognizes two types of users, the regular user or publisher, who has the UDDI publisher privilege, and the administrator of the UDDI Content Subscription Manager, who logs in as a UDDI administrator, for example ias_admin
.
The regular user can do the following (see Using the UDDI Content Subscription Manager as a Publisher):
Subscribe to offers (create subscriptions).
Cancel only their own subscriptions.
The administrator (for example, ias_admin
) can do the following (see Using the UDDI Content Subscription Manager as a UDDI Administrator):
Subscribe to offers (create subscriptions).
Cancel their own subscriptions as well as all subscriptions belonging to all users.
Enter or change UDDI subscription application properties, such as configuring the UDDI Content Subscription Manager with OracleAS Syndication Services. These configurable properties include specifying:
The syndication services URL.
The syndication subscriber user name and password for UDDI (the syndication user name and password for the special UDDI application subscriber).
The syndication connection pool size. This is the pool size for syndication connections held by the subscription application.
The logging level or the level of detail to record in the log file.
To use the UDDI Content Subscription Manager as a UDDI publisher, perform the following steps:
Start the UDDI Content Subscription Manager by entering the following URL:
http://<host>
:<port>
/uddisub/subscription/ui
where the <host>
parameter indicates the system on which the UDDI Content Subscription Manager is installed and the <port>
parameter specifies the port number on which it is running.
Next, log in as a UDDI publisher (for example, uddi_publisher
/<publisher-password>
). The UDDI Content Subscription Manager home page or Subscriptions page is displayed, as shown in Figure 10-2.
As the UDDI publisher, you can do any of the following tasks:
Create a subscription.
Click Subscribe Wizard to launch a 5-step subscribe wizard that lets you choose an offer, accept the business terms of the offer, select the delivery rules for delivering content to you, specify the e-mail address to where content is to be delivered, and review a summary of the specified subscription information before you create the subscription.
Cancel a subscription.
Select an existing subscription by selecting its corresponding box in the Select column, then click Unsubscribe.
To subscribe to an offer, click Subscribe Wizard. In the first of 5 steps of the subscribe wizard, the Offers page is displayed, as shown in Figure 10-3.
At the Offers page, select one of the available offers from the list, then click Next to continue to the next step.
At the Business Terms page, as shown in Figure 10-4, review the business terms of the offer. If the business terms are acceptable, click the radio button I Have Read and Accept, then click Next to continue to the next step. If the business terms are not acceptable, click Back to return to the previous Offers page and find another offer whose business terms are acceptable.
At the Delivery Rules page, as shown in Figure 10-5 and Figure 10-6, select the delivery rules to be used by the OracleAS Syndication Services to deliver content to you by clicking its box, then, click Next to continue to the next step. The expiration policy information is displayed. Only push delivery rules are available for selection.
Figure 10-5 Delivery Rules Page (Top Half of Page)
Figure 10-6 Delivery Rules Page (Bottom Half of Page)
At the Email Address page as shown in Figure 10-7, enter the e-mail address to whom this offer content is to be sent, then click Next to continue to the next step.
At the Subscription Summary page, as shown in Figure 10-8 and Figure 10-9, review the subscription information. The following information is displayed: offer description, expiration policy, push delivery rules, and e-mail address to where the content is to be pushed. If the information is correct, click Finish to complete the subscription process. A confirmation message is shown at the top of the Subscriptions page, indicating that your subscription was successfully created.
If the information is not correct, click Back to return to the appropriate subscribe wizard page where you can make the necessary change, then click Next to return to this Subscription Summary page to review a summary of the subscription information again.
Figure 10-8 Subscription Summary Page (Top Half of Page)
Figure 10-9 Subscription Summary Page (Bottom Half of Page)
This completes the tasks that a UDDI publisher can perform using the UDDI Content Subscription Manager.
To cancel a subscription, at the Subscriptions page as shown in Figure 10-2, select the subscriptions that you want to cancel by clicking their boxes in the Select column, then click Unsubscribe. A Subscription Cancellation page is displayed, as shown in Figure 10-10. Click OK to confirm the unsubscribe action.
To use the UDDI Content Subscription Manager as a UDDI administrator, perform the following steps:
Start the UDDI Content Subscription Manager by entering the following URL:
http://<host>
:<port>
/uddisub/subscription/ui
where the <host>
parameter indicates the system on which the UDDI Content Subscription Manager is installed and the <port>
parameter specifies the port number on which it is running.
Next, log in as a UDDI administrator (for example, ias_admin
/<ias_admin-password>
). The UDDI Content Subscription Manager home page or Subscriptions page is displayed, as shown in Figure 10-11.
As the administrator, you can do any of the following tasks:
Create a subscription.
Click Subscribe Wizard to launch a 5-step subscribe wizard that lets you select an offer, accept the business terms of the offer, select the delivery rules for delivering content to you, specify the e-mail address to where content is to be delivered, and review a summary of the specified subscription information before you create the subscription.
Cancel a subscription.
Select an existing subscription by selecting its corresponding box in the Select column, then click Unsubscribe.
Edit application properties.
Click Edit Application Properties to edit the UDDI subscription application properties, such as configuring the UDDI Content Subscription Manager with OracleAS Syndication Services.
Switch to regular view.
Click Switch to Regular View if you have logged in as the administrator and want to just view or manage your own subscriptions as a regular user would.
Click Subscription Application Properties to view or edit the UDDI subscription application properties, as shown in Figure 10-12. The UDDI content subscription administrator may need to change the default properties only if one or more settings need to be changed.
For example, if the instance of OracleAS Syndication Services is installed on the same system as this UDDI Content Subscription Manager, then the syndication URL should be correct; if OracleAS Syndication Services is not on the same system, then the UDDI Content Subscription administrator must specify the syndication URL. You can edit any properties that may need to be changed. Usually, the default settings will be fine. If no changes are necessary, click Cancel; if changes are necessary, make your changes, then click OK. Then, restart the UDDI content subscription application in order for these changes to take effect.
Note: You must enter values for all fields in order to make changes. |
Figure 10-12 Subscription Application Properties Page
Note: If you change any subscription application properties, you must restart the UDDI application in order for these changes to take effect. |
Having checked the subscription application properties, regular users and administrators can now begin subscribing to offers and managing subscriptions.
You can subscribe to an offer just like a regular publisher by following the procedure described beginning at Step 3 in Using the UDDI Content Subscription Manager as a Publisher.
To cancel one of your own subscriptions or a subscription belonging to any user, at the Subscriptions page as shown in Figure 10-11, select the subscriptions from that you want to cancel by clicking their boxes in the Select column, then click Unsubscribe. A Subscription Cancellation page is displayed, as shown in Figure 10-13. Click OK to confirm the unsubscribe action.