XML und SOAP Einführung und Grundlagen Matthias Böhmer 16.12.2005 Agenda 1. XML 2. SOAP 3. Seife im Buchladen?! E-Commerce :: XML und SOAP – Matthias Böhmer – 16.12.2005 2 XML :: Einführung (1) • eXtensible Markup Language (Auszeichnungssprache) • Formatierung von Daten mit Tags • klare Regeln für die Syntax von XML-Dokumenten • standardisiert beim W3C (aktuell Version 1.1) • Tags können selbst definiert werden • weitere Regeln definierbar (DTDs) • unabhängig von Plattform und Programmiersprache E-Commerce :: XML und SOAP – Matthias Böhmer – 16.12.2005 3 XML :: Einführung (2) • flexible Datenverwaltung & -haltung • z.B. XML-Datei statt Datenbank für Persistenz • Konfigurationsdateien in XML • flexible Präsentation • Generierung verschiedener Ausgabeformate aus XML • HTML, PDF, SVG, … • wohl definierte Kommunikation • da plattformübergreifender Standard • SOAP E-Commerce :: XML und SOAP – Matthias Böhmer – 16.12.2005 4 XML :: Dokument • Prolog • Information an den Parser: Version, Zeichensatz • <?xml version=“1.1“ encoding=“ISO-8859-1“ ?> • ROOT-Element • umfasst alle anderen Elemente des Dokuments • es darf nur ein ROOT-Element existieren • Kommentare • <!–- Ich bin ein Kommentar --> • Können (fast) überall stehen E-Commerce :: XML und SOAP – Matthias Böhmer – 16.12.2005 5 XML :: Tags und Elemente (1) • Elemente werden von umschließenden Tags gebildet • <tag>…</tag> • Elemente können enthalten: • • • • nichts, leerer Tag <tag/> andere Elemente, Kind-Elemente Zeichenketten (<,>,&,“,‘ müssen escaped werden) Rohdaten, z.B. binäre Informationen <tag><![CDATA[binarydatastream1101]]></tag> E-Commerce :: XML und SOAP – Matthias Böhmer – 16.12.2005 6 XML :: Tags und Elemente (2) • Tags können in Namensräume unterteilt werden • <bs:book> • Tags können Attribute haben • <bs:book id=“4711“>…</bs:book> • Document Type Definition (DTD) • Syntaxüberprüfung • <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT bs:author (#PCDATA)> bs:title (#PCDATA)> bs:isbn (#PCDATA)> bs:book (bs:author,bs:title,bs:isbn)> E-Commerce :: XML und SOAP – Matthias Böhmer – 16.12.2005 7 XML :: Implementierung • JDOM, DOM4J, XOM, SAX … • Apache Xerces, XML-Parser E-Commerce :: XML und SOAP – Matthias Böhmer – 16.12.2005 8 XML :: Beispiel für BookStore <?xml version=“1.1“ encoding=“ISO-8859-1“ ?> <!DOCTYPE bs:order SYSTEM “http://dtd.bookstore.de/order.dtd“> <bs:order> <bs:user> <bs:username>peter lustig</bs:username> <bs:passwort>topsecret</bs:passwort> </bs:user> <bs:book> <bs:title>J2EE – Einstieg für Anspruchsvolle</bs:title> <bs:author>Thomas Stark</bs:author> <bs:isbn>3-8273-2184</bs:isbn> </bs:book> <bs:book> <bs:title>Effektive Software-Architekturen</bs:title> <bs:author>Gernot Starke</bs:author> <bs:isbn>3-446-22846-2</bs:isbn> </bs:book> </bs:order> E-Commerce :: XML und SOAP – Matthias Böhmer – 16.12.2005 9 SOAP SOAP :: Einführung • Simple Object Access Protocol • Kommunikationsprotokoll für Web Services • Erweiterung von XML-RPC (vor allem um Header) • formatiert in XML • genauso unabhängig wie XML • „Leicht“ zu handhaben • Unter Umständen sehr viel Beschreibung für wenig Nutzdaten: Overhead! • standardisiert beim W3C (aktuell Version 1.2) E-Commerce :: XML und SOAP – Matthias Böhmer – 16.12.2005 11 SOAP :: Nachricht • Nutzdaten im Body SOAPBodyEelement • Metadaten im Header SOAPBodyElement • Attachments im MIME-Format, z.B. JPEG E-Commerce :: XML und SOAP – Matthias Böhmer – 16.12.2005 12 SOAP :: Transport • Versand über andere Applikations-Protokolle • HTTP-Binding (GET/POST) • SMTP-Binding • geht elegant durch Firewalls E-Commerce :: XML und SOAP – Matthias Böhmer – 16.12.2005 13 SOAP :: Implementierung • JAXM (Java-API für XML-Messaging) bringt Servlet mit • AXIS (Apache eXtensible Interaction System ) bringt SOAP mit E-Commerce :: XML und SOAP – Matthias Böhmer – 16.12.2005 14 SOAP :: Kommunikation • synchron class SyncServer extends JAXMServlet implements ReqRespListener { public SOAPMessage onMessage(SOAPMessage msg) { ... } } • asynchron class SyncServer extends JAXMServlet implements OnewayListener { public void onMessage(SOAPMessage msg) { ... }; } E-Commerce :: XML und SOAP – Matthias Böhmer – 16.12.2005 15 Seife im Buchladen?! Seife im Buchladen: Idee • bisher: B2C Kunden können über HTML-Frontend Bücher suchen, kaufen • jetzt auch: B2B Andere Bookstore-Applikationen können in unserem Shop Bücher suchen & bestellen • SOAP als Schnittstelle zwischen den Systemen E-Commerce :: XML und SOAP – Matthias Böhmer – 16.12.2005 17 Seife im Buchladen: Implementierung • XML-Mapper für Fachklassen • Servlet, das SOAP entgegennimmt • Client, der Anfrage an Servlet stellt E-Commerce :: XML und SOAP – Matthias Böhmer – 16.12.2005 18 Seife im Buchladen: Servlet Response SOAPMessage message = this.msgFactory.createMessage(); SOAPPart part = message.getSOAPPart(); SOAPEnvelope envelope = part.getEnvelope(); SOAPBody body = envelope.getBody(); Name root, book, title, author, isbn; // gekürztes Java für Folie ;) SOAPElement rootElement, bookElement, titleElement, authorElement, isbnElement; // dito Collection<Book> found = bs.findEqualsTo(book); root = envelope.createName("foundbooks"); rootElement = body.addBodyElement(root); for (Book b : found) { book = envelope.createName("book"); bookElement = rootElement.addChildElement(book); title = envelope.createName("title"); titleElement = bookElement.addChildElement(title); titleElement.addTextNode(b.getTitle()); author = envelope.createName("author"); authorElement = bookElement.addChildElement(author); authorElement.addTextNode(b.getAuthor()); isbn = envelope.createName("isbn"); isbnElement = bookElement.addChildElement(isbn); isbnElement.addTextNode(b.getIsbn()); } return message; E-Commerce :: XML und SOAP – Matthias Böhmer – 16.12.2005 19 Vielen Dank für Ihre Aufmerksamkeit! www.m-boehmer.de Literatur • J2EE – Einstieg für Anspruchsvolle, Thomas Stark Addison-Wesley, ISBN 3-8273-2184-0 • Java Web Services, Manfred Hein u. Henner Zeller Addison-Wesley, ISBN 3-8273-2071-2 • http://www.w3.org/XML/ • http://www.w3.org/TR/soap/ • http://ws.apache.org/axis/ • http://java.sun.com/webservices/jaxm/ E-Commerce :: XML und SOAP – Matthias Böhmer – 16.12.2005 21