XML und SOAP

Werbung
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
Herunterladen