Technische Universität Ilmenau Fakultät für Informatik und Automatisierung Institut für Praktische Informatik und Medieninformatik Fachgebiet Telematik Java und XML Hauptseminar Telematik WS 2002/2003 Christian Brosch Betreuer: Dr. Eckhardt Schön Java und XML Einführung • XML • Warum Java und XML? XML Verarbeitung XML Binding XML Messaging XML basierter Remote Procedure Call XML Registries Christian Brosch Java und XML 2 1 Java und XML Quellen • • • • http://java.sun.com/xml/ http://java.sun.com/webservices/docs/1.0/tutorial/index.html http://www.w3c.org/XML/ http://www.w3c.org/TR/SOAP/ Java-Komponenten die im Folgenden erwähnte Technologien sind enthalten im: • Java XML Pack: http://java.sun.com/xml/javaxmlpack.html • Java Webservice Development Pack: http://java.sun.com/webservices/webservicespack.html Christian Brosch Java und XML 3 XML XML (eXtensible Markup Language) ist textbasierte Auszeichungssprache, ähnlich wie HTML XML ist gängiges Format für Datenaustausch, wurde 1998 vom World Wide Web Consortium (www.w3c.org) standardisiert Im Gegensatz zu HTML geben die Tags nicht (nur) Auskunft über die Formatierung, sondern auch die „Art“ der Daten keine fest vorgegebene Menge an Tags optionale DTD (Document Type Definition) gibt an, welche Tags mit welchen Attributen zulässig sind und deren Anordnung Christian Brosch Java und XML 4 2 XML XML Schema: komplexes Regelwerk, dass den Aufbau einer XML-Datei beschreibt und die Validierung einer XML-Datei ermöglicht Beispiel für (simples) XML-Dokument <?xml version="1.0"?> <message> <to>[email protected]</to> <from>[email protected]</from> <subject> XML Is Really Cool</subject> <text>text</text> </message> Christian Brosch Java und XML 5 Warum XML und Java? Java gilt als „Programmiersprache des Webs“ und XML als „Auszeichnungssprache des Webs“ zur Übertragung von Dokumenten beide plattformunabhängig konzipiert Unicode Java enthält verschiedene Technologien zur Verarbeitung von XML: • SAX (Simple API for XML) • Unterstützung für Document Objects Model (DOM) (Standard vom W3C zur Manipulation von XML) • XML Binding • Unterstützung für XML-basierte Webservices Christian Brosch Java und XML 6 3 XML Verarbeitung Zur Verarbeitung (d.h. lesen, schreiben, verändern) von XML-Dokumenten dient das Java API for XML Processing (JAXP) Mittels dieser standardisierten Schnittstelle können verschiedene Parserimplementationen verwenden werden, ohne die Anwendung zu ändern Möglichkeit zur Validierung der XML-Dokumente vorhanden zur Verarbeitung gibt es zwei grundsätzliche Varianten • SAX (Simple API for XML) • DOM (Document Object Model) Christian Brosch Java und XML 7 XML Verarbeitung SAX (Simple API for XML) • ereignisbasierte, streamartige Abarbeitung der Datei • Entwickler (=Anwender des Parsers) instanziiert Parser und stellt CallBack-Methode(n) zur Verfügung • Parser arbeitet XML-Datei ab und ruft CallBackMethode(n) für jedes Element der XML-Datei auf • Verarbeitung ist also völlig „seriell“ Christian Brosch Java und XML 8 4 XML Verarbeitung DOM • (Document Object Model) standardisierte Schnittstelle von W3C, in JAXP enthalten • DOM-Parser liest XML-Document in baumförmige Struktur im Speicher • es kann direkt auf einzelne Knoten des Baumes wahlfrei zugegriffen werden • Knoten können eingefügt, modifiziert und gelöscht werden Christian Brosch Java und XML 9 XML Verarbeitung SAX - wenig Speicherbedarf - serielle Abarbeitung - schneller Christian Brosch DOM - XML-Dokument komplett im Speicher - flexiblere Nutzung, wahlfreier Zugriff - (meist) weniger Aufwand für Entwickler Java und XML 10 5 XML Binding JAXB (Java Architecture for XML Binding) ermöglicht eine Abbildung von XML-Dokumenten in Java Objekten (und umgekehrt) der JAXB-Compiler erzeugt aus einem gegebenen XMLSchema eine Menge von Java-Klassen ein XML Dokument kann als Instanz einer solchen Klasse aufgefasst werden Vorteile: • Geschwindigkeit vergleichbar mit SAX • sehr einfach zu benutzen, leicht wartbar • valide Dokumente • Möglichkeit, deutliche komplexere XML-Dokumente zu bearbeiten Christian Brosch Java und XML 11 XML Binding Christian Brosch Java und XML 12 6 XML Messaging JAXM = Java API for XML Messaging wird hauptsächlich für Webservices genutzt Nachrichten im XML Format werden mittels SOAP (Simple Object Access Protocoll) übertragen dient dem Austausch von XML-Dokumenten z.B. Oderbestätigung bei Webservices über das Internet zwei Arten von SOAP-Nachrichten • ohne Attachment, d.h. nur ein XML-Dokument enthalten • mit Attachment, beliebige Dateien (Bilder, Programme etc.) enthalten Christian Brosch Java und XML 13 XML Messaging Übertragung der Nachrichten kann direkt oder über einen Provider erfolgen Provider • ist immer aktiv • sorgt für Verteilung der Nachrichten • speichert diese zwischen, falls Empfänger offline • führt Logdateien, Fehlerauswertung Christian Brosch Java und XML 14 7 XML Messaging Anwendungsszenario: Online-Shop Christian Brosch Java und XML 15 XML basierter RPC JAX-RPC = Java API for XML-based RPC RPC (= Remote Procedure Call) ist ein Mechanismus, der es ermöglicht, Prozeduren auf anderen Systemen auszuführen JAX-RPC ist die Java-Schnittstelle zur Verwendung von XML-basierenden RPC bei Webservices RPC durch Übertragung einer SOAP-basierenden Nachricht ausgelöst, Format WSDL WSDL (=Web Service Description Language) ist ein vom W3C standardisiertes XML-basierendes Format zur Beschreibung von Webservices JAX-RPC-Client kann auch mit nicht-Java-basierendem Server kommunizieren und umgekehrt Christian Brosch Java und XML 16 8 XML Registries eine XML-Registry ist eine Infrastruktur, die zur Entwicklung und zum Auffinden von Webservices dient gemeinsame Resource zwischen allen Beteiligten z.Zt. existieren mehrere Spezifikationen: ebXML, UDDI JAXR (Java API for XML Registries) dient als einheitliche Schnittstelle für Java-Entwickler, um auf verschiedene Arten von XML Registries zuzugreifen JAXR besteht grundsätzlich aus zwei Komponenten: • Client nutzt JAXR-API, um auf WebserviceRegistrierung zuzugreifen • Provider ist Implementierung der API, der den Zugriff auf Registrierungsdatenbank(en) ausführt Christian Brosch Java und XML 17 9