JAXR Java API for XML Registries Jasmin Hatteh Übersicht z Web Service yArchitektur yRollenverteilung yInteraktionen z Business-Registry yUDDI yebXML z JAXR yArchitektur yInteraktionen yPakete Was sind Web Services? zVernetzte Dienste zProgrammierbar zLose gekoppelt zOrtstransparenz zProtokolltransparenz zPlattformtransparenz XML-based open standards zSimple Object Access Protocol (SOAP) zWeb Services Description Language (WSDL) zUniversal Description, Discovery and Integration (UDDI) zelectronic business XML (ebXML) Registry Prinzip einer Service orientierten Architektur ServiceBroker publish Service Provider Service Provider stellt Service zur Verfügung publiziert Service Service Broker bind, invoke find Stellt Verzeichnis zur Verfügung, wo Services publiziert und gefunden werden können Service Requestor Service Requestor findet gewünschten Dienst beim Service Broker und bindet sich an den Service Provider Web Services Rollen WSDL publish und UDDI Web Service Service Provider UDDI Registry Service Broker bind, invoke SOAP Service Provider stellt Service zur Verfügung publiziert Service ServiceBroker find Stellt Verzeichnis zur Verfügung, wo Services publiziert und gefunden werden können UDDI und WSDL Service Requestor Client Anwendung Service Requestor findet gewünschten Dienst beim Service Broker und bindet sich an den Service Provider Web Service Interaktionen 4 Web Service Interaktionen(1) UDDI Service 4 Im ersten Schritt wird ein Web Service mittels JAXR bei einem UDDI-Server registriert. Dieser Vorgang erfolgt mittels SOAPRequest. In diesem Schritt erfolgt das Veröffentlichen(publish)des Services. JAXR 1 Web Service Interaktionen(2) Business partner or other System 4 UDDI Service 2 Ein Client ist auf der Suche nach einem bestimmten Web Service. Um diesen zu finden, fragt er bei einem UDDI-Server an , welcher ihn auf den Web Service verweist Web Service Interaktionen(3) Business partner or other System 3 4 Im dritten Schritt erfordert der Client das WSDL-Dokument an, in welchem der Vertrag für die Kommunikation enthalten ist. WSDL Dokument Web Service Interaktionen(4) Business partner or other System 4 Servlets Erst im vierten Schritt wird der Web Service tatsächlich in Anspruch genommen. Was ist eine „Business-Registry“? (1) zähneln Gelben Seiten zenthalten Informationen zu einem Unternehmen, seinen Diensten sowie dem Zugriffsmechanismus zstellen die Infrastruktur für lose gekoppelte Business-2-Business-Interaktionen zur Verfügung Was ist eine „Business-Registry“? (2) zwei XML-Registry-Standards: zUDDI (Universal Description, Discovery, and Integration) yspezifiziert von einer Gruppe von Unternehmen ywww.uddi.org zebXML (electronic business XML ) ydefiniert von OASIS und U.N./CEFACT ywww.ebxml.org Beim Umgang mit einer BusinessRegistry fallen zwei Kernaufgaben an: zRegistrieren, Ändern und Löschen eines Unternehmens beziehungsweise seiner Dienste (Publishing) zAbfragen registrierter Unternehmen beziehungsweise ihrer Dienste (Inquiry) UDDI Universal Description, Discovery and Integration (1) White Pages Adressinformationen Name, Beschreibung, Kontaktinformationen Yellow Pages Business-Kategorisierung Katalogiesierung des Angebots Green Pages Webservice-Beschreibung technische Informationen über den Service UDDI Universal Description, Discovery and Integration (2) z ein "Telefonbuch" mit weißen, gelben und grünen Seiten z Spezifikation zur Publizierung und Suche von Firmen und Web Services yUDDI Spezifikationen definieren wie in UDDI Business Registries Webservices publiziert und gefunden werden können z UDDI Spezifikationen basieren auf XML und SOAP yXML basierende Datenstrukturen, die einen WebService in einer UDDI Registry definieren yAPIs um mit einem UDDI Registry zu kommunizieren basieren auf SOAP UDDI Universal Description, Discovery and Integration (3) zur Zeit 3 öffentliche Registry Knoten im Web zgesponsort von IBM, Microsoft und HP zin den UDDI Business Registries registrieren sich Firmen zInhalt ist Informationen über Firmen und ihre Services zRegistrierung ist kostenlos zEinträge werden täglich repliziert UDDI Universal Description, Discovery and Integration (4) ebXML electronic business XML Registry (1) z Initiative von UN/CEFACT und OASIS yGünstige Alternative zu EDI (Electronic Data Interchange) yBasierend auf XML yÜber das WWW nutzbar z Elektronische Abwicklung von Geschäften ySpezifikation von Kommunikation yProfile von Geschäftspartnern z Unterteilung in Registry und Repository yRegistry referenziert auf Daten yRepository speichert Daten UDDI vs. ebXML z z z z UDDI Datenstruktur: einfach, übersichtlich. Nur Metadaten. Bietet Grundfunktionalität, ist flexibel anwendbar Nur URL-Verweis auf Webservice-Beschreibung Sicherheit zwar streng, aber nicht standardisiert ebXML z Datenstruktur komplex, Unterteilung in Registry und Repository. Kann willkürliche Inhalte haben. z Erweiterte technische Funktionalität, spezialisierter z Sicherheit einheitlich geregelt Beide Standards werden von großen Firmen unterstützt und werden mittelfristig zueinander kompatibel sein. JAXR Java API for XML Registries zWerkzeug zum lesenden und schreibenden Zugriff. Ermöglicht komfortablen Zugriff auf Business-Registries mit Hilfe von Java über das Internet zUnternehmen kann sich selbst registrieren und Informationen wie Unternehmensname, Geschäftsbeschreibung etc. hinterlegen oder nach Informationen von anderen Organisationen suchen JAXR Java API for XML Registries zJAXR abstrahiert von der zugrundeliegenden Registry und beschreibt anhand eines allgemeinen Informationsmodells deren Inhalt und die Metadaten. zUnterstützt gängige Registry-Standards wie UDDI und ebXML JAXR Architektur (1) Registry Service JAXR Architektur (2) z JAXR-Client: Ein JavaProgramm, das das JAXR API verwendet, um auf eine Business-Registry zuzugreifen, die von einem JAXR-Provider zur Verfügung gestellt wird. JAXR Architektur (3) z JAXR-Provider: Implementierung der JAXR API. Der JAXR-Provider ist pluggable, d.h. er implementiert die JAXR API unabhängig von einer bestimmten BusinessRegistry. Wird normalerweise implementiert, um auf einen existierenden RegistryProvider zuzugreifen. JAXR Architektur (4) zRegistry-Provider: Implementierung einer RegistrySpezifikation oder Standard wie UDDI und ebXML. JAXR Architektur (5) zRegistry: Das sind die tatsächlichen Registry-Daten von UDDI und ebXML. JAXR Architektur Vorteile: zWird ein neuer Registry-Standard entwickelt, kann dieser in die JAXR-Provider Implementierung aufgenommen werden, ohne daß das den JAXR-Client beeinflußt. zEin JAXR-Client kann mit mehreren Registries in einer Session interagieren. zZusätzliche Capability Profiles erlauben es, den Funktionsumfang eines JAXR-Providers einzuschränken beziehungsweise zu erweitern. Interaktion (1) JAXR Client 5 1 JAXR Provider 2 4 Registry Provider 3 zJAXR Client stellt eine Anfrage zEIN JAXR-Client gebraucht JAXR-Schnittstellen und Klassen, um um den Zugang zu einer Registrierung zu bitten. Der Klient sendet den Antrag an einen JAXRProvider. Interaktion (2) JAXR Client 5 1 JAXR Provider 2 4 Registry Provider 3 z Wenn ein JAXR-Provider einen Antrag von einem JAXR-Client erhält, transformiert er den Antrag in einen equivalenten Antrag um, welcher auf der Spezifizierungen der ZielRegistry basiert. Der JAXRProvider leitet dann diesen umgestalteten Antrag an einen Registry-Provider weiter. Interaktion (3) JAXR Client 5 1 JAXR Provider 2 4 Registry Provider 3 zDer Registry-Provider erhält einen Antrag von einem JAXR-Provider und bearbeitet ihn. Der Prozeß wird dann umgekehrt... Interaktion (4) JAXR Client 5 1 JAXR Provider 2 4 Registry Provider 3 zDer Registry-Provider schickt dem JAXR-Provider eine Antwort, welche in eine equivalente JAXR Antwort umgewandelt wird. Interaktion (5) zDer JAXR-Provider sendet die JAXR Antwort an den JAXR-Client. JAXR Client 5 1 JAXR Provider 2 4 Registry Provider 3 Der JAXR-Provider implementiert zwei Hauptpakete: javax.xml.registry zAPI-Schnittstellen und -Klassen zdefinieren Schnittstelle für den Zugriff auf die Registry javax.xml.registry.infomodel zSchnittstellen, die das Informationsmodell für JAXR definieren. javax.xml.registry Paket Basisschnittstellen Connection z Der Klient muß eine Verbindung mit dem JAXR-Provider schaffen, um eine Registry zu gebrauchen. Sie vertritt eine Client-Session mit einem Registry-Provider. RegistryService z Der Client erhält ein RegistryService Objekt von seiner Verbindung z bietet dem Client andere Schnittstellen, um auf eine Registry zuzugreifen javax.xml.registry Paket Primäre Schnittstellen BusinessQueryManager z erlaubt dem Client in der Registry nach Informationen zu suchen BusinessLifeCycleManager z erlaubt dem Client die Informationen in einer Registry zu modifizieren durch speichern (aktualisieren) oder löschen. DeclarativeQueryManager: z erlaubt dem Client SQL Syntax für Queries zu benutzen. (Noch nicht implementiert) javax.xml.registry.infomodel javax.xml.registry.infomodel z Schnittstellen, die das Informationsmodell für JAXR definieren. z Diese Schnittstellen definieren die Types of Objects , die in einer Registry liegen und ihre Beziehungen. Die grundlegenden Schnittstellen in diesem Paket ist das RegistryObject interface und seine Subinterfaces Organization, Service und ServiceBinding. JAXR Exception zBei einem Fehler wird eine JAXR API Methode oder eines ihrer Unterklassen aufgerufen zEinige Methoden in der JAXR API nutzen eine Collection als Argument oder Returnwert. Das ermöglicht den gleichzeitigen Betrieb von mehreren Registry Objekts Vielen Dank für die Aufmerksamkeit! JAXR Java API for XML Registries Georg Pferdmenges JAXR Java API for XML Registries - Allgemein Ablauf von - Verbindungserstellung - Abfrage vorhandener Dienste - Registrieren eines eigenen Dienstes mittels der API JAXR Allgemein Hauptklassen IsoQuery und PublishORG beinhalten Funktionen um Verbindungen zu erstellen, Services abzufragen und zu registrieren Verbindungserstellung über die Funktionen makeConnection(String queryUrl); bzw. makeConnection(String publishUrl, String queryUrl); JAXR Verbindung Abfrage makeConnection(String queryUrl); Übergabe der Verbindungskonfiguration, z.B. http://uddi.ibm.com/testregistry/inquiryapi Angabe eines Verbindungstyps durch setProperty([..] xml.registry.uddi[..]); Objekt vom Typ ConnectionFactory erzeugt mit den Werten eine Verbindung JAXR Verbindung Eintrag makeConnection(String publishUrl, String queryUrl); zusätzlich eine publishURL https://uddi.ibm.com/testregistry/protect/publishapi Verbindungstyp setProperty([..] xml.registry.uddi[..]); Angabe meines Webservices props.setProperty("javax.xml.registry.http.proxyHost","myhos t.mydomain"); Verbindungserstellung wie zuvor JAXR Abfrage (bei stehender Verbindung) executeQuery() Angabe des Klassifikation Schemas (suchen, aber wie): findClassificationSchemeByName(findQualifiers, "iso-ch:3166:1999"); Klassifikation erzeugen (suchen, aber was): createClassification(cScheme,"Europe", "DE"); Zusatzoptionen: findOrganizations(null, null, classifications, null, null, null); à Fordert die Ergebnisse kumulativ ! Starten der Abfrage getCollection() JAXR Abfrage (bei stehender Verbindung) Ergebnis sind Services die den von uns vorgegebenen Parametern bezüglich Schema, Klassifikation und zusätzlichen Kriterien entsprechen. JAXR Eintrag (bei stehender Verbindung) executePublish(String username, String password) Authentifikation über user/ pass (Bekommen von IBM) connection.setCredentials(credits); user und pass sind durch PasswordAuthentication(user, pass) in der Variablen credits enthalten. Bei fehlerhafter Authentification gibt es eine exception Eingabe der notwenigen Parameter unseres Webservices: - createOrganization(String); „organization“ // erstellt neue Hauptinstanz JAXR Eintrag - (bei stehender Verbindung) createInternationalString(String); createPersonName(String); setNumber(String); createEmailAddress(String); // Werden der Hauptinstanz „organization“ hinzugefügt Auch hier: Setzen des Klassifikationschemas! Das Schema wird der Hauptinstanz „organization“ zugeordnet JAXR Eintrag (bei stehender Verbindung) Neue Services: createService(String); setDescription(); // // Titel Beschreibung nun die Bindung zum Service angeben: setAccessURI(ourWebServiceURL); durch addServices(services); die neuen Services an unsere Hauptinstanz weitergeben Unsere gespeicherten Organisation(en) registrieren: saveOrganizations(our_organizations); JAXR Eintrag (bei stehender Verbindung) Durch die Funktion getId() des javax.xml.registry.infomodel.Key unserer Organisation. Moduls bekommen wir die ID Vielen Dank für die Aufmerksamkeit!