Jaxr query package com.ack.webservices.jaxr; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.Properties; import javax.xml.registry.BulkResponse; import javax.xml.registry.BusinessQueryManager; import javax.xml.registry.Connection; import javax.xml.registry.ConnectionFactory; import javax.xml.registry.FindQualifier; import javax.xml.registry.JAXRException; import javax.xml.registry.RegistryService; import javax.xml.registry.infomodel.*; /** * Use the Java API for XML Registeries to query * the Microsoft and IBM UDDI business registries. * * Change the query string to determine what companies * will be found. * * A big thanks goes to Sun Microsystems as this example * is based upon one of theirs, tidied up and made a little * bit clearer * */ public class JaxrQuery { public static void main( String[] args ) throws Exception { String queryString = "acknow"; Connection connection = null; // Define connection configuration properties // To query, you need only the query URL Properties props = new Properties(); props.setProperty( "javax.xml.registry.queryManagerURL", //"http://www-3.ibm.com/services/uddi/testregistry/inquiryapi" "http://uddi.microsoft.com:80/inquire" ); props.setProperty( "javax.xml.registry.factoryClass", "com.sun.xml.registry.uddi.ConnectionFactoryImpl" ); // Create the connection, passing it the configuration properties ConnectionFactory factory = ConnectionFactory.newInstance(); factory.setProperties( props ); connection = factory.createConnection(); // Get registry service and business query manager RegistryService rs = connection.getRegistryService(); BusinessQueryManager bqm = rs.getBusinessQueryManager(); System.out.println( "We have the Business Query Manager" ); // Define find qualifiers and name patterns Collection findQualifiers = new ArrayList(); findQualifiers.add( FindQualifier.SORT_BY_NAME_ASC ); Collection namePatterns = new ArrayList(); namePatterns.add( "%" + queryString + "%" ); // Find based upon qualifier type and values System.out.println( "\n-- searching the registry --\n" ); BulkResponse response = bqm.findOrganizations( findQualifiers, namePatterns, null, null, null, null ); // check how many organisation we have matched Collection orgs = response.getCollection(); System.out.println( "\n-- Matched " + orgs.size() + " organisations --\n" ); // then step through them for( Iterator orgIter = orgs.iterator(); orgIter.hasNext(); ) { Organization org = (Organization) orgIter.next(); System.out.println( "Org name: " + getName( org ) ); System.out.println( "Org description: " + getDescription( org ) ); System.out.println( "Org key id: " + getKey( org ) ); // Display primary contact information User pc = org.getPrimaryContact(); if( pc != null ) { PersonName pcName = pc.getPersonName(); System.out.println( " Contact name: " + pcName.getFullName() ); Collection phNums = pc.getTelephoneNumbers( pc.getType() ); for( Iterator phIter = phNums.iterator(); phIter.hasNext(); ) { TelephoneNumber num = (TelephoneNumber) phIter.next(); System.out.println( " Phone number: " + num.getNumber() ); } Collection eAddrs = pc.getEmailAddresses(); for( Iterator eaIter = eAddrs.iterator(); eaIter.hasNext(); ) { System.out.println( " Email Address: " + (EmailAddress) eaIter.next() ); } } // Display service and binding information Collection services = org.getServices(); for( Iterator svcIter = services.iterator(); svcIter.hasNext(); ) { Service svc = (Service) svcIter.next(); System.out.println( " Service name: " + getName( svc ) ); System.out.println( " Service description: " + getDescription( svc ) ); Collection serviceBindings = svc.getServiceBindings(); for( Iterator sbIter = serviceBindings.iterator(); sbIter.hasNext(); ) { ServiceBinding sb = (ServiceBinding) sbIter.next(); System.out.println( " Binding Description: " + getDescription( sb ) ); System.out.println( " Access URI: " + sb.getAccessURI() ); } } // Print spacer between organizations System.out.println( " --- " ); } connection.close(); } private static String getName( RegistryObject ro ) throws JAXRException { if( ro != null && ro.getName() != null ) { return ro.getName().getValue(); } return ""; } private static String getDescription( RegistryObject ro ) throws JAXRException { if( ro != null && ro.getDescription() != null ) { return ro.getDescription().getValue(); } return ""; } private static String getKey( RegistryObject ro ) throws JAXRException { if( ro != null && ro.getKey() != null ) { return ro.getKey().getId(); } return ""; } }