Dear Wiki user, You have subscribed to a wiki page or wiki category on "Ws Wiki" for change notification.
The following page has been changed by IvanKrizsan: http://wiki.apache.org/ws/How_do_I_access_jUDDI_from_Java ------------------------------------------------------------------------------ */ package com.ivan.jaxr; + import java.net.PasswordAuthentication; import java.util.ArrayList; import java.util.Collection; + import java.util.HashSet; import java.util.Properties; + import java.util.Set; import javax.xml.registry.BulkResponse; import javax.xml.registry.BusinessLifeCycleManager; @@ -19, +22 @@ import javax.xml.registry.FindQualifier; import javax.xml.registry.JAXRException; import javax.xml.registry.RegistryService; + import javax.xml.registry.infomodel.Key; + import javax.xml.registry.infomodel.Organization; /** * This class contains JAXR examples doing the following: * - Connect to a UDDI registry. - * - Query the UDDI registry for organization(s). + * - Locate organizations meeting specific criteria. + * - Create and save a new organization. * * Configured to use a jUDDI instance running in Tomcat on * localhost. + * Note that a publisher must have been inserted into the database + * and the appropriate constant below set to reflect the publisher id. * * Requires the following libraries: * jaxr-api.jar, jaxr-impl.jar, jaxb-api.jar, jaxb-impl.jar, @@ -39, +47 @@ { /* Constant(s): */ private static final String PUBLICATION_MANAGER_URL = - "http://localhost:8080/juddi//publication"; + "http://localhost:8080/juddi/publish"; private static final String INQUIRY_MANAGER_URL = "http://localhost:8080/juddi/inquiry"; + private static final String JUDDI_PUBLISHER_ID = "juddi"; /* Instance variable(s): */ private BusinessQueryManager mBusinessQueryMgr; private BusinessLifeCycleManager mBusinessLifecycleMgr; + private Connection mConnection; - /** * Prepares for access to the UDDI registry. */ @@ -64, +73 @@ /* * Set the inquiry and publication manager URLs to be used * by the connection factory. + * Also sets the authentication method, event though it is + * not strictly necessary. */ Properties theUDDIConnectionProperties = new Properties(); theUDDIConnectionProperties.setProperty( "javax.xml.registry.queryManagerURL", INQUIRY_MANAGER_URL); theUDDIConnectionProperties.setProperty( "javax.xml.registry.lifeCycleManagerURL", PUBLICATION_MANAGER_URL); + theUDDIConnectionProperties.setProperty( + "javax.xml.registry.security.authenticationMethod", + "UDDI_GET_AUTHTOKEN"); theJAXRConnectionFactory.setProperties(theUDDIConnectionProperties); /* Finally we can retrieve a JAXR connection. */ - Connection theUDDIConnection = - theJAXRConnectionFactory.createConnection(); + mConnection = theJAXRConnectionFactory.createConnection(); /* * Get the RegistryService, which is used to retrieve, * among other things: * - BusinessLifeCycleManager which allows for creation and - * deletion of organizations, services, associations, - * classification schemes and concepts. + * deletion of different kinds of objects, such as + * organizations, services etc. - * - BusinessQueryManager which allows for searching for the + * - BusinessQueryManager which allows for searching among - * above entity types. + * different kinds of objects. - * - Retrieving a CapabilityProfile object from which the + * - A CapabilityProfile object from which the capability - * capability level and JAXR version can be retrieved. + * level and JAXR version can be retrieved. */ + RegistryService theRegistryService = mConnection.getRegistryService(); - RegistryService theRegistryService = - theUDDIConnection.getRegistryService(); mBusinessQueryMgr = theRegistryService.getBusinessQueryManager(); mBusinessLifecycleMgr = @@ -105, +117 @@ { JAXRExamples theInstance = new JAXRExamples(); theInstance.init(); - + - theInstance.queryForOrganization(); + theInstance.addOrganization("Bad Cars Inc"); } catch (JAXRException theException) { theException.printStackTrace(); @@ -123, +135 @@ /* * Create list of query qualifiers. In this case: * - Case sensitive matching of organization names. - * - Sort found organisations by name in descending order. + * - Sort found organizations by name in descending order. */ - ArrayList theQueryQualifiers = new ArrayList(); + ArrayList<String> theQueryQualifiers = new ArrayList<String>(); theQueryQualifiers.add(FindQualifier.CASE_SENSITIVE_MATCH); theQueryQualifiers.add(FindQualifier.SORT_BY_NAME_DESC); + /* - /* Create list of organization names to search for. */ + * Create list of organization names to search for. + * The '%%' means that any name will match. + */ - ArrayList theOrganizationNames = new ArrayList(); + ArrayList<String> theOrganizationNames = new ArrayList<String>(); theOrganizationNames.add("%%"); /* Use the business query manager to query for the organization(s). */ @@ -138, +153 @@ mBusinessQueryMgr.findOrganizations(theQueryQualifiers, theOrganizationNames, null, null, null, null); - /* Retrieve list of exceptions and results from the response. */ Collection theQueryExceptions = theQueryResponse.getExceptions(); - Collection theOrganizations = theQueryResponse.getCollection(); + Collection<Organization> theOrganizations = theQueryResponse.getCollection(); + if (theQueryExceptions == null) + { - /* Output the result to the console. */ + /* Output the result to the console. */ - System.out.println("Listing organizations:"); + System.out.println("Listing organizations:"); - for (Object theOrganization : theOrganizations) + for (Organization theOrganization : theOrganizations) + { + System.out.println("An organization: " + + theOrganization.getName().getValue()); + } + } else + { + System.out.println("An error occurred querying for organizations."); - { + } - System.out.println("An organization: " + theOrganization); + } + + /** + * Adds an organization with the supplied name to the registry. + * + * @param inOrgName Name of organization to add. + * @throws JAXRException If error occurred inserting organization + * into registry. + */ + public void addOrganization(final String inOrgName) throws JAXRException + { + /* + * Set the credentials for the connection. + * JAXR will help us retrieve an UDDI authorization token and + * include it in subsequent requests. + * JUDDI will, in its default configuration, authenticate users + * which are present in the PUBLISHER table, PUBLISHER_ID column + * regardless of the password supplied. + */ + PasswordAuthentication thePswAuthentication = + new PasswordAuthentication(JUDDI_PUBLISHER_ID, "".toCharArray()); + Set<PasswordAuthentication> theConnectionCredentials = + new HashSet<PasswordAuthentication>(); + theConnectionCredentials.add(thePswAuthentication); + mConnection.setCredentials(theConnectionCredentials); + + /* Create an organization object and give it a name. */ + Organization theOrganization = + mBusinessLifecycleMgr.createOrganization(inOrgName); + + /* Place all organizations to be added in a collection. */ + Collection<Organization> theOrgCollection = + new ArrayList<Organization>(); + theOrgCollection.add(theOrganization); + + /* Save the organization(s) in the registry. */ + BulkResponse theQueryResponse = + mBusinessLifecycleMgr.saveOrganizations(theOrgCollection); + + /* + * If no exceptions in the response, then the operation + * succeeded and there will be a key for the saved organization. + */ + if (theQueryResponse.getExceptions() == null) + { + Collection<Key> theResponseCollection = + theQueryResponse.getCollection(); + Key theOrgKey = theResponseCollection.iterator().next(); + System.out + .println("Successfully created and saved an organization."); + System.out.println("Organization Key = " + theOrgKey.getId()); + } else + { + System.out.println("An error occurred adding the organization: " + + inOrgName); } } }
