ws-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Apache Wiki <wikidi...@apache.org>
Subject [Ws Wiki] Update of "How do I access jUDDI from Java" by IvanKrizsan
Date Thu, 05 Mar 2009 03:12:32 GMT
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);
          }
      }
  }

Mime
View raw message