Publishing v2 UDDI v2
                                                                                GetRegisteredInfo
Demonstrates how to construct and fill the Get_registeredInfo object, get a Publishing stub for the UDDI registry, get an authToken, and perform the get_registeredInfo call.
SaveBinding
Demonstrates how to construct and fill the Save_binding object, get a Publishing stub for the UDDI registry, get an authToken, and perform the save_binding call.
SaveBusiness
Demonstrates how to construct and fill the Save_business object, get a Publishing stub for the UDDI registry, get an authToken, and perform the save_business call.
SaveService
Demonstrates how to construct and fill the Save_service object, get a Publishing stub for the UDDI registry, get an authToken, and perform the save_service call.
SaveTModel
Demonstrates how to construct and fill the Save_tModel object, get a Publishing stub for the UDDI registry, get an authToken, and perform the save_tModel call.
SetAssertions
Demonstrates how to construct and fill the Set_publisherAssertions object, get a Publishing stub for the UDDI registry, get an authToken, and perform the set_publisherAssertions call.
Prerequisites and Preparatory Steps: Code
We expect that you have already installed the Oracle Service Registry and set the REGISTRY_HOME environment variable to its installation location.
To run the Oracle Service Registrys demos, your registry must be running. It is neccessary to configure the demos. The configuration system has two levels: global and local. The properties defined
at the global level may be overwritten at the local level. The global properties are located in the file: REGISTRY_HOME\demos\env.properties
Windows: REGISTRY_HOMEdemosenv.properties
UNIX: The values set during the installation of the Oracle Service Registry work out of the box, and their modification affects
all demos. If you need to redefine a propertys value for a single demo that is, at the local level, edit the file env.properties
in the directory where run.sh run.bat is located. Local level properties for the BasicInquiry demos are loaded from the file:
REGISTRY_HOME\demos\basic\publishing\v2\env.properties Windows:
REGISTRY_HOMEdemosbasicpublishingv2env.properties UNIX:
Table 4. Properties Used in the Demos
Description Default Value
Name
First users name demo_john
uddi.demos.user.john.name First users password
demo_john uddi.demos.user.john.password
Second users name demo_jane
uddi.demos.user.jane.name Second users password
demo_jane uddi.demos.user.jane.password
The publication Web service port URL
http:localhost:8888registryuddipublishing uddi.demos.url.publishing
The security Web service port URL
http:localhost:8888registryuddisecurity uddi.demos.url.security
Page 654
Prerequisites and Preparatory Steps: Code
Presentation and Functional Presentation
This section describes the programming pattern used in all demos using the SaveBusiness demo as an example. You can find this demos source code in the file:
REGISTRY_HOME\demos\basic\publishing\v2\src\demo\uddi\v2\publishing\SaveBusiness.java Windows:
REGISTRY_HOMEdemosbasicpublishingv2srcdemouddiv2publishingSaveBusiness.java UNIX:
The main method is easy to understand. First it gathers the users input. Namely optional publisher assigned businessKey, then an array of business entity names with their language codes and finally a description of the business.
The next step is to get the security stub and authorize the user. The resulting authInfo string is a secret key passed in all requests.
Next, the Save_business object is created, filled, and passed to the saveBusiness method as a parameter. When successful, the BusinessDetail object is returned from the UDDI registry and printed. The last step is to discard
the authInfo string, so it cannot be used to compromise a users account. int count = UserInput.readIntEnter count of names, 1;
String[] names = new String[count]; String[] languageCodes = new String[count];
for int i = 0; i  count; i++ { String tmp = UserInput.readStringEnter language code, ;
languageCodes[i] = tmp.length  0 ? tmp : null; names[i] = UserInput.readStringEnter name in language  + tmp, Marketing;
} String description = UserInput.readStringEnter description,
Saved by SaveBusiness demo; System.out.println;
UDDI_Security_PortType security = getSecurityStub; String authInfo = getAuthInfouser, password, security;
Save_business save = createSaveBusinessbusinessKey, names, languageCodes, description, authInfo;
BusinessDetail result = saveBusinesssave; printBusinessDetailresult;
discardAuthInfoauthInfo, security;
The helper method, getSecurityStub returns the UDDI Security stub of the Web service listening at the URL specified by the URL_SECURITY property.
public static UDDI_Security_PortType getSecurityStub throws SOAPException {
you can specify your own URL in property - uddi.demos.url.security String url = DemoProperties.getPropertyURL_SECURITY,
http:localhost:8888registryuddisecurity; System.out.printUsing Security at url  + url +  ..;
UDDI_Security_PortType security = UDDISecurityStub.getInstanceurl; System.out.println done;
return security; }
The helper method getPublishingStub returns the UDDI Publication stub of the Web service listening at the URL specified by the URL_PUBLISHING property.
Page 655
Presentation and Functional Presentation
public static UDDI_Publication_PortType getPublishingStub throws SOAPException {
you can specify your own URL in property - uddi.demos.url.publishing String url = DemoProperties.getPropertyURL_PUBLISHING,
http:localhost:8888registryuddipublishing; System.out.printUsing Publishing at url  + url +  ..;
UDDI_Publication_PortType inquiry = UDDIPublishStub.getInstanceurl; System.out.println done;
return inquiry; }
The getAuthInfo method is used to authorize the user against the UDDI registry and to get the secret authInfo key. public static String getAuthInfoString userName,
String password, UDDI_Security_PortType security throws InvalidParameterException, UDDIException {
System.out.printLogging in ..; AuthToken authToken = security.get_authTokennew Get_authTokenuserName, password;
System.out.println done; return authToken.getAuthInfo;
}
The discardAuthInfo method invalidates the secret authInfo key, so it cannot be used anymore. public static DispositionReport discardAuthInfoString authInfo,
UDDI_Security_PortType security throws InvalidParameterException, UDDIException {
System.out.printLogging out ..; DispositionReport dispositionReport = security.discard_authTokennew
Discard_authTokenauthInfo; System.out.println done;
return dispositionReport; }
The createSaveBusiness method is used to create a new instance of the Save_business class and initialize it with values from parameters:
public static Save_business createSaveBusinessString[] names, String[] nameLangCodes, String description, String authInfo
throws InvalidParameterException { for int i = 0; i  names.length; i++ {
System.out.printlnlang =  + nameLangCodes[i] + , name =  + names[i]; }
System.out.printlndescription =  + description;
BusinessEntity businessEntity = new BusinessEntity; businessEntity.setBusinessKey;
for int i = 0; i  names.length; i++ { if nameLangCodes[i] == null {
businessEntity.addNamenew Namenames[i]; } else {
businessEntity.addNamenew Namenames[i], nameLangCodes[i]; }
} businessEntity.addDescriptionnew Descriptiondescription;
Page 656
Presentation and Functional Presentation
Save_business save = new Save_business; save.addBusinessEntitybusinessEntity;
save.setAuthInfoauthInfo; save.setGenericConstants.GENERIC_2_0;
return save; }
The UDDI API call save_business is performed in the method saveBusiness: public static BusinessDetail saveBusinessSave_business save
throws UDDIException, SOAPException { UDDI_Publication_PortType publishing = getPublishingStub;
System.out.printSave in progress ...; BusinessDetail businessDetail = publishing.save_businesssave;
System.out.println done; return businessDetail;
}
The saved businessEntity is displayed by the printBusinessDetail method. One interesting aspect of the Oracle Service Registry client API is that each UDDIObject contains the toXML, which returns a human-readable formatted
listing of the XML representation.
public static void printBusinessDetailBusinessDetail businessDetail { System.out.println;
BusinessEntityArrayList businessEntityArrayList = businessDetail.getBusinessEntityArrayList;
int position = 1; for Iterator iterator = businessEntityArrayList.iterator; iterator.hasNext; {
BusinessEntity entity = BusinessEntity iterator.next; System.out.printlnBusiness  + position +  :  + entity.getBusinessKey;
System.out.printlnentity.toXML; System.out.println;
System.out.println; position++;
} }
Building and Running Demos
This section shows how to build and run the Oracle Service Registry Basic Publishing demo set. Let us continue with our SaveBusiness demo.
1. Be sure that the demos are properly configured and the Oracle Service Registry is up and running.
2. Change your working directory to
REGISTRY_HOME\demos\basic\publishing\v2 Windows:
REGISTRY_HOMEdemosbasicpublishingv2 UNIX:
3. Build all demos using:
run.bat make Windows:
Page 657
Building and Running Demos
.run.sh make UNIX:
Note
When compiling demos on Windows platforms, you may see the following text: A subdirectory or file ..\..\common\.\build\classes already exists.
This is expected and does not indicate a problem. 4.
To get list of all available demos, run run.bat help
Windows: .run.sh help
UNIX: 5.
The selected demo can be executed via the run command using the name of the demo as a parameter. For example to run the SaveBusiness demo, invoke
run.bat SaveBusiness Windows:
.run.sh SaveBusiness UNIX:
The output of this demo will resemble the following: Running SaveBusiness demo...
Saving business entity where Enter count of names [1]:
Enter language code []: Enter name in language  [Marketing]:
Enter description [Saved by SaveBusiness demo]:
Using Publishing at url https:mycomp.com:8443registryuddipublishing .. done Logging in .. done
lang = null, name = Marketing description = Saved by SaveBusiness demo
Save in progress ... done
Business 1 : c9e8be50-a5a5-11d8-91cd-5c1d367091cd businessEntity businessKey=c9e8be50-a5a5-11d8-91cd-5c1d367091cd operator=Demo Operator
authorizedName=demo_john xmlns=urn:uddi-org:api_v2 nameMarketingname
descriptionSaved by SaveBusiness demodescription businessEntity
Logging out .. done
6. To rebuild demos, execute
run.bat clean .run.sh clean
to delete the classes directory and run.bat make
.run.sh make to rebuild the demo classes.