Java UDDI XML

Hallo,

ich hoffe da könnte mir irgendjemand dabei helfen:

ich versuche ein JAXR ConnectionFactory zu erstellen, denn ich möchte gerne auf Services in den sap uddi registry zuzugreifen und die Informationen über die Dienste zu listen.

meine klasse sieht so aus:

package mypackage;

import javax.xml.registry.*;
import javax.xml.registry.infomodel.*;
import java.net.*;
import java.util.*;

public class JAXRfind
{

public JAXRfind()
{
}

public void query(String queryString)
{

Connection con = null;
Properties prop = new Properties();
prop.setProperty(„javax.xml.registry.queryManagerURL“,"http://uddi.sap.com/UDDI/api/inquiry");
prop.setProperty(„javax.xml.registry.factoryClass“,„com.sun.xml.registry.uddi.ConnectionFactoryImpl“);
// System.out.println(prop.getProperty(„javax.xml.registry.factoryClass“));
try
{
ConnectionFactory factory = ConnectionFactory.newInstance();
factory.setProperties(prop);

con = factory.createConnection();

RegistryService rs = con.getRegistryService();
BusinessQueryManager bqm = rs.getBusinessQueryManager();

Collection qualifiers = new ArrayList();
qualifiers.add(FindQualifier.SORT_BY_NAME_DESC);

Collection namePatterns = new ArrayList();
namePatterns.add(queryString);

BulkResponse response = bqm.findOrganizations(qualifiers, namePatterns, null, null, null, null);
Collection orgs = response.getCollection();
Iterator orgIter = orgs.iterator();
while(orgIter.hasNext())
{
Organization org = (Organization) orgIter.next();
System.out.println("Organization: "+org.getName().getValue());
printServices(org);
printPrimaryContact(org);
}

}catch(Exception e)
{
System.out.println(e.getMessage());
}
}

private void printServices(Organization org) throws JAXRException
{
Collection services = org.getServices();
Iterator sIter = services.iterator();
while(sIter.hasNext())
{
Service service = (Service)sIter.next();
System.out.println("ServiceName: "+service.getName().getValue());
System.out.println(„Service Description :“+ service.getDescription().getValue());

Collection bindings = service.getServiceBindings();
Iterator bIter = bindings.iterator();
while(bIter.hasNext())
{
ServiceBinding binding =(ServiceBinding) bIter.next();
System.out.println("Service Binding: "+binding.getName().getValue());
System.out.println(„Binding Description :“+ binding.getDescription().getValue());
System.out.println("Access URL: "+ binding.getAccessURI());
}
}
}

private void printPrimaryContact(Organization org) throws JAXRException
{
User primaryContact = org.getPrimaryContact();
if(primaryContact != null)
{
PersonName name = primaryContact.getPersonName();
System.out.println("Contact: "+ name.getFullName());
Collection emails = primaryContact.getEmailAddresses();
Iterator iter = emails.iterator();
while(iter.hasNext())
{
EmailAddress email = (EmailAddress)iter.next();
System.out.println("EmailAddresses: "+ email.getAddress());
}
}
}
public static void main(String[] args)
{
JAXRfind find = new JAXRfind();
/* System.out.println(args.length);
if(args.length!=1)
{
System.out.println("Usage: java JAXRfind ");
}else
{
find.query(args[0]);
}*/
find.query(„Carbon“);

}

}

Aber leider ich krige die folgende Fehlermeldung:

Unable to create ConnectionFactory: Provider com.sun.xml.registry.common.ConnectionFactoryImpl not found

Könnte mir irgendjemand helfen?

ich bedanke mich sehr.

Auch hallo.

Hallo,

ich hoffe da könnte mir irgendjemand dabei helfen:

Klingt nach einem Problem mit der SAP IDE Netweaver, oder ?

ich versuche ein JAXR ConnectionFactory zu erstellen, denn ich
möchte gerne auf Services in den sap uddi registry zuzugreifen
und die Informationen über die Dienste zu listen.

Hört sich fies an…

meine klasse sieht so aus:

Quelle ? ISBN ISBN 3-89842-317-4 Buch anschauen , https://sdn.sap.com (-> suche nach UDDI +XML) Oder eine eigene Kreation ?

Aber leider ich krige die folgende Fehlermeldung:

Unable to create ConnectionFactory: Provider
com.sun.xml.registry.common.ConnectionFactoryImpl not found
Könnte mir irgendjemand helfen?

Pfadangaben richtig gesetzt ? Ist die zuständige jar-Datei im richtigen Verzeichnis ? Aber mit etwas Glück steht dem Autor dieser Zeilen gleich eine
passende Umgebung zur Verfügung :wink:

Bis dann:

HTH
mfg M.L.

etwas längere Antwort
Hi ho,

also, Du hast es so gewollt… *grins*.
Dein Problem besteht darin, dass Deine Entwicklungsumgebung die genannte Klasse nicht findet. Diese befindet sich im Java Web Services Developer Pack.

Zuerst brauchst Du also den Java Web Services Developer Pack 2.0, den gibts hier:
http://java.sun.com/webservices/downloads/webservice…

Der verlangt wiederum einen Container, nimm am Besten Tomcat5, den gibts hier:
http://java.sun.com/webservices/containers/tomcat_fo…

So, jetzt brauchst Du in Deiner Entwicklungsumgebung nur noch die folgenden Bibliotheken zum Projekt hinzufügen:

„/jwsdp-2.0/jaxr/lib/jaxr-api.jar“
„/jwsdp-2.0/jaxb/lib/jaxb-api.jar“
„/jwsdp-2.0/saaj/lib/saaj-api.jar“
„/jwsdp-2.0/jaxb/lib/jaxb-xjc.jar“
„/jwsdp-2.0/jaxb/lib/jaxb1-impl.jar“
„/jwsdp-2.0/jaxb/lib/jaxb-impl.jar“
„/jwsdp-2.0/saaj/lib/saaj-impl.jar“

wobei /jwsdp-2.0 für das Installationsverzeichnis des Java Web Services Developer Pack 2.0 steht.

Wenn Du diese Bibliotheken dem Classpath Deines Projektes hinzugefügt hast, dann läuft auch Dein Programm. Allerdings spuckt es bei mir dann die folgende Meldung aus:

27.02.2006 20:54:28 com.sun.xml.messaging.saaj.client.p2p.HttpSOAPConnection post
SCHWERWIEGEND: SAAJ0008: Bad Response; Service Unavailable
com.sun.xml.messaging.saaj.SOAPExceptionImpl: java.security.PrivilegedActionException: com.sun.xml.messaging.saaj.SOAPExceptionImpl: Bad response: (503Service Unavailable)

Was soviel bedeutet wie: Der Service ist nicht vorhanden :wink:

So, hoffentlich hilft das.

Ach ja, wenn Du hier Code postest, dann gitb es die und Tags, dann wird das ganze lesbarer (bitte ohne Leerzeichen eingeben).

Dann sieht es nähmlich so aus:

package org.calar.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.EmailAddress;
import javax.xml.registry.infomodel.Organization;
import javax.xml.registry.infomodel.PersonName;
import javax.xml.registry.infomodel.Service;
import javax.xml.registry.infomodel.ServiceBinding;
import javax.xml.registry.infomodel.User;

public class JAXRTest
{

 public JAXRTest()
 {
 }

 public void query(String queryString)
 {

 Connection con = null;
 Properties prop = new Properties();
 prop.setProperty("javax.xml.registry.queryManagerURL", "http://uddi.sap.com/UDDI/api/inquiry");
 prop.setProperty("javax.xml.registry.factoryClass", "com.sun.xml.registry.uddi.ConnectionFactoryImpl");

 //System.setProperty("java.endorsed.dirs","D:\\work\\jwsdp-2.0\\jaxp\\lib;D:\\work\\jwsdp-2.0\\jaxp\\lib\\endorsed");

 // System.out.println(prop.getProperty("javax.xml.registry.factoryClass"));
 try
 {
 ConnectionFactory factory = ConnectionFactory.newInstance();
 factory.setProperties(prop);

 con = factory.createConnection();

 RegistryService rs = con.getRegistryService();
 BusinessQueryManager bqm = rs.getBusinessQueryManager();

 Collection qualifiers = new ArrayList();
 qualifiers.add(FindQualifier.SORT\_BY\_NAME\_DESC);

 Collection namePatterns = new ArrayList();
 namePatterns.add(queryString);

 BulkResponse response = bqm.findOrganizations(qualifiers, namePatterns, null, null, null, null);
 Collection orgs = response.getCollection();
 Iterator orgIter = orgs.iterator();
 while (orgIter.hasNext())
 {
 Organization org = (Organization) orgIter.next();
 System.out.println("Organization: " + org.getName().getValue());
 printServices(org);
 printPrimaryContact(org);
 }

 }
 catch (Throwable e)
 {
 System.out.println(e.getMessage());
 }
 }

 private void printServices(Organization org) throws JAXRException
 {
 Collection services = org.getServices();
 Iterator sIter = services.iterator();
 while (sIter.hasNext())
 {
 Service service = (Service) sIter.next();
 System.out.println("ServiceName: " + service.getName().getValue());
 System.out.println("Service Description :" + service.getDescription().getValue());

 Collection bindings = service.getServiceBindings();
 Iterator bIter = bindings.iterator();
 while (bIter.hasNext())
 {
 ServiceBinding binding = (ServiceBinding) bIter.next();
 System.out.println("Service Binding: " + binding.getName().getValue());
 System.out.println("Binding Description :" + binding.getDescription().getValue());
 System.out.println("Access URL: " + binding.getAccessURI());
 }
 }
 }

 private void printPrimaryContact(Organization org) throws JAXRException
 {
 User primaryContact = org.getPrimaryContact();
 if (primaryContact != null)
 {
 PersonName name = primaryContact.getPersonName();
 System.out.println("Contact: " + name.getFullName());
 Collection emails = primaryContact.getEmailAddresses();
 Iterator iter = emails.iterator();
 while (iter.hasNext())
 {
 EmailAddress email = (EmailAddress) iter.next();
 System.out.println("EmailAddresses: " + email.getAddress());
 }
 }
 }

 public static void main(String[] args)
 {
 JAXRTest find = new JAXRTest();
 /\*
 \* System.out.println(args.length); if(args.length!=1) { System.out.println("Usage: java JAXRfind "); }else {
 \* find.query(args[0]); }
 \*/
 find.query("Carbon");

 }
}

Gruss,

Herb