146 lines
5.3 KiB
Java
146 lines
5.3 KiB
Java
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 "";
|
|
}
|
|
}
|