Java tutorial
/* * 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.BusinessQueryManager; import javax.xml.registry.BusinessLifeCycleManager; import javax.xml.registry.LifeCycleManager; import javax.xml.registry.JAXRException; import javax.xml.registry.BulkResponse; import javax.xml.registry.JAXRResponse; import javax.xml.registry.infomodel.InternationalString; import javax.xml.registry.infomodel.Concept; import javax.xml.registry.infomodel.ClassificationScheme; import javax.xml.registry.infomodel.Classification; import javax.xml.registry.infomodel.ExternalLink; import javax.xml.registry.infomodel.Key; import java.net.PasswordAuthentication; import java.util.ResourceBundle; import java.util.Properties; import java.util.Collection; import java.util.ArrayList; import java.util.HashSet; /** * The JAXRSaveClassificationScheme class consists of a main method, a * makeConnection method, and an executePublish method. * It creates a classification scheme and publishes it to a registry. */ public class JAXRSaveClassificationScheme { Connection connection = null; public JAXRSaveClassificationScheme() { } public static void main(String[] args) { ResourceBundle bundle = ResourceBundle.getBundle("JAXRExamples"); String queryURL = bundle.getString("query.url"); String publishURL = bundle.getString("publish.url"); // Edit to provide your own username and password // Defaults for Registry Server are testuser/testuser String username = bundle.getString("registry.username"); String password = bundle.getString("registry.password"); JAXRSaveClassificationScheme jscs = new JAXRSaveClassificationScheme(); jscs.makeConnection(queryURL, publishURL); jscs.executePublish(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 delete, 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 a classification scheme and saves it to the * registry. * * @param username the username for the registry * @param password the password for the registry */ public void executePublish(String username, String password) { RegistryService rs = null; BusinessLifeCycleManager blcm = null; BusinessQueryManager bqm = null; try { rs = connection.getRegistryService(); blcm = rs.getBusinessLifeCycleManager(); bqm = rs.getBusinessQueryManager(); 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 classification scheme InternationalString sn = blcm.createInternationalString(bundle.getString("postal.scheme.name")); InternationalString sd = blcm.createInternationalString(bundle.getString("postal.scheme.description")); ClassificationScheme postalScheme = blcm.createClassificationScheme(sn, sd); /* * 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); if (uddiOrgTypes != null) { InternationalString cn = blcm .createInternationalString(bundle.getString("postal.classification.name")); Classification classification = blcm.createClassification(uddiOrgTypes, cn, bundle.getString("postal.classification.value")); postalScheme.addClassification(classification); /* * Set link to location of postal scheme (fictitious) * so others can look it up. If the URI were valid, we * could use the createExternalLink method. */ ExternalLink externalLink = (ExternalLink) blcm.createObject(LifeCycleManager.EXTERNAL_LINK); externalLink.setValidateURI(false); externalLink.setExternalURI(bundle.getString("postal.scheme.link")); InternationalString is = blcm.createInternationalString(bundle.getString("postal.scheme.linkdesc")); externalLink.setDescription(is); postalScheme.addExternalLink(externalLink); // Add scheme and save it to registry // Retrieve key if successful Collection<ClassificationScheme> schemes = new ArrayList<ClassificationScheme>(); schemes.add(postalScheme); BulkResponse br = blcm.saveClassificationSchemes(schemes); if (br.getStatus() == JAXRResponse.STATUS_SUCCESS) { System.out.println("Saved PostalAddress " + "ClassificationScheme"); Collection schemeKeys = br.getCollection(); for (Object k : schemeKeys) { Key key = (Key) k; System.out.println("The postalScheme key is " + key.getId()); System.out.println( "Use this key as the scheme uuid " + "in the postalconcepts.xml file\n and as the " + "argument to JAXRPublishPostal and " + "JAXRQueryPostal"); } } else { Collection exceptions = br.getExceptions(); for (Object e : exceptions) { Exception exception = (Exception) e; System.err.println("Exception on save: " + exception.toString()); } } } else { System.out.println("uddi-org:types not found. Unable to " + "save PostalAddress scheme."); } } catch (JAXRException jaxe) { jaxe.printStackTrace(); } finally { // At end, close connection to registry if (connection != null) { try { connection.close(); } catch (JAXRException je) { } } } } } ////////////////////////////// // // File: JAXRExamples.properties // ////////////////////////////// ## Registry Server:query.url=http://localhost:8080/RegistryServer/ publish.url=http://localhost:8080/RegistryServer/ registry.username=testuser registry.password=testuser## HTTP and HTTPS proxy host and port http.proxyHost=http.proxyPort=8080 https.proxyHost=https.proxyPort=8080## Values used by publish examples org.name=The Coffee Break org.description=Purveyor of the finest coffees.Established 1950 person.name=Jane Doe phone.number=(800)555-1212 email.address=jane.doe@TheCoffeeBreak.com classification.scheme=ntis-gov:naics:1997 classification.name=All Other Specialty Food Stores classification.value=445299 service.name= My Service Name service.description= My Service Description svcbinding.description= My Service Binding Description svcbinding.accessURI=http://TheCoffeeBreak.com:8080/sb/ ## Values used by postal address examples postal.taxonomy.filenames=postalconcepts.xml postal.scheme.name= MyPostalAddressScheme postal.scheme.description= A ClassificationScheme for My PostalAddressMappings postal.classification.name= postalAddress postal.classification.value= postalAddress postal.scheme.link=http://unrealcompany.com/PostalScheme.html postal.scheme.linkdesc= My PostalAddress Scheme postal.org.name= The Postal Coffee Break postal.person.name= Jane Postal postal.email.address=jane.postal@ThePostalCoffeeBreak.com postal.streetNumber=99 postal.street=Imaginary Ave.Suite 33 postal.city= Imaginary City postal.state=NY postal.country=USA postal.postalCode=00000 postal.type=# Values used by JAXRPublishConcept example concept.name=HelloConcept concept.description=Concept for Hello Service link.uri=http://localhost:8080/hello-jaxws/hello?WSDL link.description= Hello WSDL document# Values used by JAXRPublishHelloOrg example wsdlorg.name= Hello Organization wsdlorg.description= Organization with a Hello Service wsdlorg.person.name= Duke wsdlorg.person.description= Owner of Hello Service wsdlorg.phone=111-222-3333 wsdlorg.email.address=duke@hello.com wsdlorg.svc.name=JAX-RPC Hello Service wsdlorg.svc.description= Says Hello wsdlorg.svcbnd.description= Service binding for Hello Service wsdlorg.svcbnd.uri=http://localhost:8080/hello-jaxws/hello