/*
* Copyright 2007 Sun Microsystems, Inc.
* All rights reserved. You may not modify, use,
* reproduce, or distribute this software except in
* compliance with the terms of the License at:
* http://developer.sun.com/berkeley_license.html
*/
/*
Copyright 1994-2006 Sun Microsystems, Inc. All Rights Reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
* Redistribution of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistribution in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
Neither the name of Sun Microsystems, Inc. or the names of contributors may be
used to endorse or promote products derived from this software without specific
prior written permission.
This software is provided "AS IS," without a warranty of any kind. ALL EXPRESS OR
IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY IMPLIED WARRANTY
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY
EXCLUDED. SUN MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY
DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS
SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY
LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL,
INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF
LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
You acknowledge that this software is not designed, licensed or intended for use in
the design, construction, operation or maintenance of any nuclear facility.
*/
import javax.xml.registry.Connection;
import javax.xml.registry.ConnectionFactory;
import javax.xml.registry.RegistryService;
import javax.xml.registry.BusinessLifeCycleManager;
import javax.xml.registry.LifeCycleManager;
import javax.xml.registry.BusinessQueryManager;
import javax.xml.registry.BulkResponse;
import javax.xml.registry.JAXRException;
import javax.xml.registry.infomodel.RegistryObject;
import javax.xml.registry.infomodel.Organization;
import javax.xml.registry.infomodel.InternationalString;
import javax.xml.registry.infomodel.TelephoneNumber;
import javax.xml.registry.infomodel.User;
import javax.xml.registry.infomodel.PersonName;
import javax.xml.registry.infomodel.EmailAddress;
import javax.xml.registry.infomodel.ClassificationScheme;
import javax.xml.registry.infomodel.Classification;
import javax.xml.registry.infomodel.Concept;
import javax.xml.registry.infomodel.Service;
import javax.xml.registry.infomodel.ServiceBinding;
import javax.xml.registry.infomodel.ExternalLink;
import javax.xml.registry.infomodel.SpecificationLink;
import javax.xml.registry.infomodel.Key;
import java.net.PasswordAuthentication;
import java.util.ResourceBundle;
import java.util.Properties;
import java.util.HashSet;
import java.util.Collection;
import java.util.ArrayList;
/**
* The JAXRPublishHelloOrg class consists of a main method, a
* makeConnection method, and an executePublish method.
* It creates an organization and publishes it to a registry.
* The organization has a service binding that includes a WSDL file.
*/
public class JAXRPublishHelloOrg {
Connection connection = null;
public JAXRPublishHelloOrg() {
}
public static void main(String[] args) {
ResourceBundle bundle = ResourceBundle.getBundle("JAXRExamples");
String queryURL = bundle.getString("query.url");
String publishURL = bundle.getString("publish.url");
String username = bundle.getString("registry.username");
String password = bundle.getString("registry.password");
if (args.length < 1) {
System.out.println("Argument required: " + "-Duuid-string=<value>");
System.exit(1);
}
String uuidString = args[0];
System.out.println("UUID string is " + uuidString);
JAXRPublishHelloOrg jpws = new JAXRPublishHelloOrg();
jpws.makeConnection(queryURL, publishURL);
jpws.executePublish(uuidString, username, password);
}
/**
* Establishes a connection to a registry.
*
* @param queryUrl the URL of the query registry
* @param publishUrl the URL of the publish registry
*/
public void makeConnection(
String queryUrl,
String publishUrl) {
/*
* Specify proxy information in case you
* are going beyond your firewall.
*/
ResourceBundle bundle = ResourceBundle.getBundle("JAXRExamples");
String httpProxyHost = bundle.getString("http.proxyHost");
String httpProxyPort = bundle.getString("http.proxyPort");
String httpsProxyHost = bundle.getString("https.proxyHost");
String httpsProxyPort = bundle.getString("https.proxyPort");
/*
* Define connection configuration properties.
* To publish, you need both the query URL and the
* publish URL.
*/
Properties props = new Properties();
props.setProperty("javax.xml.registry.queryManagerURL", queryUrl);
props.setProperty("javax.xml.registry.lifeCycleManagerURL", publishUrl);
props.setProperty("com.sun.xml.registry.http.proxyHost", httpProxyHost);
props.setProperty("com.sun.xml.registry.http.proxyPort", httpProxyPort);
props.setProperty(
"com.sun.xml.registry.https.proxyHost",
httpsProxyHost);
props.setProperty(
"com.sun.xml.registry.https.proxyPort",
httpsProxyPort);
try {
// Create the connection, passing it the
// configuration properties
ConnectionFactory factory = ConnectionFactory.newInstance();
factory.setProperties(props);
connection = factory.createConnection();
System.out.println("Created connection to registry");
} catch (Exception e) {
e.printStackTrace();
if (connection != null) {
try {
connection.close();
} catch (JAXRException je) {
}
}
}
}
/**
* Creates an organization, its classification, and its
* services, and saves it to the registry.
*
* @param username the username for the registry
* @param password the password for the registry
*/
public void executePublish(
String uuidString,
String username,
String password) {
RegistryService rs = null;
BusinessLifeCycleManager blcm = null;
BusinessQueryManager bqm = null;
try {
// Get registry service and managers
rs = connection.getRegistryService();
bqm = rs.getBusinessQueryManager();
blcm = rs.getBusinessLifeCycleManager();
System.out.println(
"Got registry service, query "
+ "manager, and life cycle manager");
// Get authorization from the registry
PasswordAuthentication passwdAuth = new PasswordAuthentication(
username,
password.toCharArray());
HashSet<PasswordAuthentication> creds = new HashSet<PasswordAuthentication>();
creds.add(passwdAuth);
connection.setCredentials(creds);
System.out.println("Established security credentials");
ResourceBundle bundle = ResourceBundle.getBundle("JAXRExamples");
// Create organization name and description
InternationalString s = blcm.createInternationalString(
bundle.getString("wsdlorg.name"));
Organization org = blcm.createOrganization(s);
s = blcm.createInternationalString(
bundle.getString("wsdlorg.description"));
org.setDescription(s);
// Create primary contact, set name
User primaryContact = blcm.createUser();
PersonName pName = blcm.createPersonName(
bundle.getString("wsdlorg.person.name"));
primaryContact.setPersonName(pName);
s = blcm.createInternationalString(
bundle.getString("wsdlorg.person.description"));
primaryContact.setDescription(s);
// Set primary contact phone number
TelephoneNumber tNum = blcm.createTelephoneNumber();
tNum.setNumber(bundle.getString("wsdlorg.phone"));
Collection<TelephoneNumber> phoneNums = new ArrayList<TelephoneNumber>();
phoneNums.add(tNum);
primaryContact.setTelephoneNumbers(phoneNums);
// Set primary contact email address
EmailAddress emailAddress = blcm.createEmailAddress(
bundle.getString("wsdlorg.email.address"));
Collection<EmailAddress> emailAddresses = new ArrayList<EmailAddress>();
emailAddresses.add(emailAddress);
primaryContact.setEmailAddresses(emailAddresses);
// Set primary contact for organization
org.setPrimaryContact(primaryContact);
// Create services and service
Collection<Service> services = new ArrayList<Service>();
s = blcm.createInternationalString(
bundle.getString("wsdlorg.svc.name"));
Service service = blcm.createService(s);
s = blcm.createInternationalString(
bundle.getString("wsdlorg.svc.description"));
service.setDescription(s);
// Create service bindings
Collection<ServiceBinding> serviceBindings = new ArrayList<ServiceBinding>();
ServiceBinding binding = blcm.createServiceBinding();
s = blcm.createInternationalString(
bundle.getString("wsdlorg.svcbnd.description"));
binding.setDescription(s);
binding.setAccessURI(bundle.getString("wsdlorg.svcbnd.uri"));
/*
* Find the uddi-org:types classification scheme defined
* by the UDDI specification, using well-known key id.
*/
String uuid_types = "uuid:C1ACF26D-9672-4404-9D70-39B756E62AB4";
ClassificationScheme uddiOrgTypes = (ClassificationScheme) bqm
.getRegistryObject(
uuid_types,
LifeCycleManager.CLASSIFICATION_SCHEME);
/*
* Create a classification, specifying the scheme
* and the taxonomy name and value defined for WSDL
* documents by the UDDI specification.
*/
Classification wsdlSpecClassification = blcm.createClassification(
uddiOrgTypes,
blcm.createInternationalString("wsdlSpec"),
"wsdlSpec");
// Define classifications
Collection<Classification> classifications = new ArrayList<Classification>();
classifications.add(wsdlSpecClassification);
// Find the concept by its UUID
Concept specConcept = (Concept) bqm.getRegistryObject(
uuidString,
LifeCycleManager.CONCEPT);
// If we found the concept, we can save the organization
if (specConcept != null) {
String name = getName(specConcept);
Collection links = specConcept.getExternalLinks();
System.out.println(
"\nSpecification Concept:\n\tName: " + name
+ "\n\tKey: " + getKey(specConcept));
if (links.size() > 0) {
ExternalLink link = (ExternalLink) links.iterator()
.next();
System.out.println(
"\tURL of WSDL document: '" + link.getExternalURI()
+ "'");
}
// Now set the specification link for the service binding
SpecificationLink specLink = blcm.createSpecificationLink();
specLink.setSpecificationObject(specConcept);
binding.addSpecificationLink(specLink);
serviceBindings.add(binding);
// Add service bindings to service
service.addServiceBindings(serviceBindings);
// Add service to services, then add services to organization
services.add(service);
org.addServices(services);
// Add organization and submit to registry
// Retrieve key if successful
Collection<Organization> orgs = new ArrayList<Organization>();
orgs.add(org);
BulkResponse response = blcm.saveOrganizations(orgs);
Collection exceptions = response.getExceptions();
if (exceptions == null) {
System.out.println("Organization saved");
Collection keys = response.getCollection();
for (Object k : keys) {
Key orgKey = (Key) k;
String id = orgKey.getId();
System.out.println("Organization key is " + id);
}
} else {
for (Object e : exceptions) {
Exception exception = (Exception)
sources68 the directory containing the programming examples, source code and programming guide online
Friday, 29 July 2011
Create an organization and publishes it to a registry.( The organization has a service binding that includes a WSDL file.)
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment