Angewandte Softwareentwicklung Serialisierung



Ähnliche Dokumente
WebService in Java SE und EE

Java: Vererbung. Teil 3: super()

Wiederholung: Beginn

Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen.

Java und XML 2. Java und XML

Java API for XML Binding

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

Themen. Web Service - Clients. Kommunikation zw. Web Services

Zählen von Objekten einer bestimmten Klasse

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

Software Entwicklung II (SS12)

ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Eschenweg Weiterstadt

Auszug aus JAX-WS Folien

Große Übung Praktische Informatik 1

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Einführung in die Java- Programmierung

teamsync Kurzanleitung

Flashfragen in ILIAS Test & Assessment. Helmut Schottmüller

Step by Step Softwareverteilung unter Novell. von Christian Bartl

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

LineQuest-Leitfaden LineQuest Dialog-Portal. Generieren der LineQuest-Auswertungsdatei

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Norm 240 Versionierung

DELFI. Benutzeranleitung Dateiversand für unsere Kunden. Grontmij GmbH. Postfach Bremen. Friedrich-Mißler-Straße Bremen

Handbuch ECDL 2003 Modul 2: Computermanagement und Dateiverwaltung Der Task-Manager

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

Anleitung zur Webservice Entwicklung unter Eclipse

ObjectBridge Java Edition

WinVetpro im Betriebsmodus Laptop

Übung - Datenmigration in Windows Vista

FIREBIRD BETRIEB DER SAFESCAN TA UND TA+ SOFTWARE AUF MEHR ALS EINEM COMPUTER

WebPoint. Ein Framework zur Erstellung von webbasierten Verkaufsanwendungen. Maria C. Raabe Daniel Woithe Vorlage: Torsten Walter. 16.

1) Farbsteuergerät in der Nikobus-Software unter Modul zufügen hinzufügen.

Übung: Verwendung von Java-Threads

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

Print2CAD 2017, 8th Generation. Netzwerkversionen

Der lokale und verteilte Fall

Netzwerkversion PVG.view

Dokumentation zur Versendung der Statistik Daten

5. Übung: PHP-Grundlagen

Erstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu])

Technische Dokumentation SilentStatistikTool

CMS-Manual Bilder hochladen und einfügen

Einführung in die Programmierung

Zwischenablage (Bilder, Texte,...)

Abschnitt 12: Strukturierung von Java-Programmen: Packages

Historical Viewer. zu ETC5000 Benutzerhandbuch 312/15

Die Textvorlagen in Microsoft WORD und LibreOffice Writer

Anleitung zur Installation und Verwendung von eclipseuml 2.1.0

Übungsblatt 3: Algorithmen in Java & Grammatiken

User Manual Data 24. Login und Layout

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 17: 3-Schichten-Architektur 2

Konvertieren von Settingsdateien

Praktikum: Einstieg: Arbeitsplatz, JCreator

Verteilte Systeme: Übung 4

Workshop 6. Einführung in die objektorientierte Programmierung. Teil: Java mit BlueJ

Anleitung zur Erstellung von Serienbriefen (Word 2003) unter Berücksichtigung von Titeln (wie Dr., Dr. med. usw.)

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Abschluss Version 1.0

5. Programmierschnittstellen für XML

3a Open BIM Workflow - Import und Weiterbearbeitung

Starten Sie Eclipse: Hier tragen sie Ihr Arbeitsverzeichnis ein. Zu Hause z.b. c:\workspace.

Dokumentation zum Inco- FORM

Nutzung von GiS BasePac 8 im Netzwerk

Vorgehensweise bei Lastschriftverfahren

Alice & More Anleitung. GigaMail.

<script type="text/javascript"> <! <%= page(page.searchsuggestionsscript) %> // > </script>

Handbuch ECDL 2003 Basic Modul 5: Datenbank Access starten und neue Datenbank anlegen

Version White Paper ZS-TimeCalculation und die Zusammenarbeit mit dem iphone, ipad bzw. ipod Touch

Barcodedatei importieren

Win-Digipet V 9.2 Premium Edition Wie bastele ich mir steuerbare Kontakte. Wie bastele ich mir steuerbare Kontakte? -Quick-And-Dirty-Lösung-

NODELOCKED LIZENZ generieren (ab ST4)

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

ECO-Manager - Funktionsbeschreibung

Anleitung über den Umgang mit Schildern

Programmierkurs Java

Anleitung zum LPI ATP Portal

Neuinstallation Einzelplatzversion

XINDICE. The Apache XML Project Name: J acqueline Langhorst blackyuriko@hotmail.de

Sie können diesen Service verwenden, um fast beliebig große Dateien auch über 2 GB zu versenden.

Kapitel 3 Bilder farblich verändern - Arbeiten mit Objekten

Informatik 1 Tutorial

Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.

MOBILITY ONLINE ANLEITUNG

Installation von NetBeans inkl. Glassfish Anwendungs-Server

Menü auf zwei Module verteilt (Joomla 3.4.0)

5. Programmierschnittstellen für XML

Comtarsia SignOn Familie

Objektorientierte Programmierung

Synchronisations- Assistent

Melde- und Veröffentlichungsplattform Portal (MVP Portal) Hochladen einer XML-Datei

Installationsanleitung Sander und Doll Mobilaufmaß. Stand

INSTALLATION DES MICROSOFT SUS-SERVERS AUF WINDOWS XP PROFESSIONAL

Anleitung. Lesezugriff auf die App CHARLY Termine unter Android Stand:

Anleitung für Ingenieurbüros zur Erstellung von TGA-Plänen für AutoCAD und AutoCAD pit-cad

Handbuch. NAFI Online-Spezial. Kunden- / Datenverwaltung. 1. Auflage. (Stand: )

ID VisitControl. Dokumentation Administration Equitania Software GmbH cmc Gruppe Seite 1

Um die Rücklagen ordnungsgemäß zu verbuchen, ist es wichtig, Schritt-für-Schritt vorzugehen:

Einrichten einer mehrsprachigen Webseite mit Joomla (3.3.6)

Transkript:

Angewandte Softwareentwicklung Serialisierung WS 2014/2015 Markus Berg Hochschule Wismar Fakultät für Ingenieurwissenschaften Bereich Elektrotechnik und Informatik markus.berg@hs-wismar.de http://mmberg.net

2 Motivation Inhalt von Objekten geht nach dem Beenden eines Programms verloren, da sie nur im Arbeitsspeicher liegen Oftmals ist die Speicherung von Daten erwünscht (z.b. Bestenliste in Spielen, etc.) Z.B. als CSV Datei Diese muss aufwändig erzeugt und wieder gelesen werden (um ein leeres Objekt mit den entsprechenden Werten aus der CSV zu belegen) Einfacher ist die 1:1 Speicherung des Objektes als Datei Serialisierung ist die Speicherung des Zustandes eines Objektes D.h. Speicherinhalt Datei Auch Marshalling genannt

3 Serialisierung als XML Das einfachste ist die Speicherung als Binärdatei Alternative ist die Speicherung als XML Lesbar Änderbar Austauschbar Programmiersprachenunabhängig Auf Grundlage der Standard-XML-Datentypen (und ComplexTypes) Diese müssen von der jeweiligen Programmiersprache in die eigenen Typen/Klassen konvertiert werden (Unmarshalling) z.b. xsd:string java.lang.string

4 JAXB: Java Architecture for XML Binding Referenzimplementierung und Teil von Jersey Übersetzung zw. XML und Java Schritte Binding Marshalling (Java XML) Unmarshalling (XML Java) XSD XML follows bind unmarshal marshal Java Class Java Object Zwei Möglichkeiten: Schema first: Java Klassen aus XML Schema generieren lassen Java first: XML Dokument aus Java Objekt erstellen Vorher Java Klasse erzeugen und annotieren Optional validieren anhand eines Schemas Schema kann auch aus Beans (Java Klassen) generiert werden instance-of

5 JAXB Verarbeitet POJOs (Plain Old Java Objects) Keine Abhängigkeiten (Vererbung etc) Empfohlen: Java Beans (Getter und Setter, Argumentloser Konstruktor) public class Person { private String name; public Person(){ public String getname(){ return name; public void setname(string name){ this.name=name;

6 JAXB Basiert auf Annotations (javax.xml.bind.annotation) @XmlRootElement @XmlElement @XmlAttribute Ohne XmlElement-Annotationen werden alle öffentlichen Methoden und Attribute serialisiert (Default JAXB Binding Rules) Konvention Getter getname wird zu XML-Element name Element name wird vom Setter setname verarbeitet Getter: wichtig beim Marshalling Setter: wichtig beim Unmarshalling Es darf nicht einen öffentlichen Getter getname und gleichzeitig ein öffentliches Attribut name geben, da beides in XML zu name werden würde Das Root-Element muss immer gekennzeichnet werden

7 Beispiel: Serialisierung @XmlRootElement public class Person { private String vorname; private String nachname; public static void main(string[] args) { Person p = new Person(); p.setnachname("bond"); p.setvorname("james"); public String getvorname(){ return vorname; public void setvorname(string vorname){ this.vorname=vorname; public String getnachname(){ return nachname; public void setnachname(string nachname){ this.nachname=nachname; try{ JAXBContext context = JAXBContext.newInstance(Person.class); Marshaller m=context.createmarshaller(); m.marshal(p, System.out); catch(exception ex){ ex.printstacktrace(); <?xml version="1.0" encoding="utf- 8"?> <person> <nachname>bond</nachname> <vorname>james</vorname> </person>

8 Schema aus Beans generieren Mit Hilfe des schemagen-tools im bin-order des JDK > cd src/net/mmberg/ase/ > ls Serialisierung.java Person.java > schemagen Person.java Note: Writing src/net/mmberg/ase/schema1.xsd

9 Klassen aus Schema generieren Wir probieren nun den Schema-first- Ansatz Tool: XJC (Binding Compiler) Ebenfalls im bin-ordner des JDK > xjc schema1.xsd parsing a schema... compiling a schema... generated/objectfactory.java generated/person.java Optional Package angeben: > xjc p net.mmberg.ase.generated schema1.xsd

10 Instantiieren & Serialisieren Wir haben nun Klassen aus dem Schema erzeugt Nun können wieder Objekte erzeugt werden Serialisieren schlägt fehl, da Annotation @XmlRootElement fehlt Es wurde zusätzlich eine ObjectFactory erzeugt Kapselt das Objekt in einem JAXBElement Diese muss zum Erzeugen der Objekte genutzt werden (Alternativ per Hand die Annotation hinzufügen) Person p = new Person(); p.setnachname("bond"); p.setvorname("james"); JAXBElement<Person> element = new ObjectFactory().createPerson(p); JAXBContext context = JAXBContext.newInstance(Person.class); Marshaller m=context.createmarshaller(); m.marshal(p, System.out); m.marshal(element, System.out)

11 Programmiersprachenunabhängikeit Bis jetzt: innerhalb der Java-Welt Ziel: Erzeugen von Klassen in C# anhand des Schemas (das wiederum aus der Java-Klasse erzeugt wurde) > xsd.exe c schema1.xsd Microsoft (R) Xml Schemas/DataTypes support utility Writing file 'C:\...\SerialisierungC\xsd\schema1.cs'.

12 Serialisieren in C# person p = new person(); p.vorname = "James"; p.nachname = "Bond"; XmlSerializer serializer = new XmlSerializer(typeof(person)); serializer.serialize(console.out, p); Console.ReadKey(); <?xml version="1.0" encoding="ibm850"?> <person xmlns:xsi="http://www.w3.org/2001/xmlschema- instance" xmlns:xsd="http:// www.w3.org/2001/xmlschema"> <nachname>bond</nachname> <vorname>james</vorname> </person> Statt auf Konsole kann natürlich auch in eine Datei geschrieben werden, die dann von einer anderen Anwendung wieder gelesen werden kann Somit realisieren wir einen Datenaustausch zwischen verschiedenen Programmen

13 Ablauf Nutzung von Binding/Marshalling zwischen verschiedenen Programmiersprachen mit Hilfe eines Schemas Java-Klasse XSD Java-Objekt C#-Klasse C#-Objekt XML

14 Datenaustausch Bis jetzt: Datenaustausch zwischen Programmen auf dem gleichen Rechner (bzw. über Datenträger) Daten mit einem Programm erzeugen und speichern Mit anderem Programm laden und weiterverarbeiten Änderungen dem ersten Programm übergeben Java-Objekt Java-Objekt XML Serialisieren /Deserialisieren XML Deserialisieren /Serialisieren C#-Objekt C#-Objekt Werte ändern Java-Programm Filesystem C#-Programm

15 Datenaustausch Ziel: Datenaustausch und Kommunikation im Internet Java-Objekt Java-Objekt XML Serialisieren /Deserialisieren XML Deserialisieren /Serialisieren C#-Objekt C#-Objekt Werte ändern Java-Programm Internet C#-Programm

16 Beispiel Server (auf Java-Basis) stellt Wetterinformationen zur Verfügung Sie möchten diese in Ihrem Client (auf C#-Basis) nutzen Request-Objekt Serialisierung Deserialisierung Response-Objekt C#-Client <request>wismar</request> XML Request XML Response <response>20 C</response> Internet Request-Objekt Deserialisierung Serialisierung Response-Objekt Java-Server Notwendigkeit das Format der Schnittstelle zu beschreiben und verfügbar zu machen Realisierung mit Web Services

17 Quellen und weiterführende Literatur http://docs.oracle.com/cd/e13222_01/wls/ docs103/webserv/data_types.html https://jaxb.java.net/2.2.4/docs/ schemagen.html