Objekte auf Server speichern

chrismass

Mitglied
Hallo!
Mal ne kleine Einsteigerfrage ...
Wie kann ich Java Objekte von einem Client PC auf einen (überLAN oder Internet erreichbaren) Server übertragen, diese dort speichern und auch wieder laden?
Wie kann man so etwas realisieren?

Ich möchte z.B. in einer Swing Applikation einen JTree erzeugen, und diesen beim beenden zum Server übertragen und dort abspeichern. Dann muss ich ihn nicht jedes Mal neu erzeugen wenn das Programm wieder gestartet wird. Ich müsste ja nur das JTree Objekt übertragen und hätte wieder den kompletten Baum.
... oder mach ich da einen Denkfehler? :confused:
 
hi,

am einfachsten geht dein Vorhaben mit den Klassen XMLEncoder/XMLDecoder. Du sendest dein Object zum Server, der das mit Hilfe dieser Utilklassen es als XML-File ablegt.

Beispiel :

XMLEncoder e = new XMLEncoder(
new BufferedOutputStream(
new FileOutputStream("Test.xml")));
e.writeObject(new JButton("Hello, world"));
e.close()

Gleiches gibt es dann für das Auslesen des Files.

siehe hier : http://java.sun.com/products/jfc/tsc/articles/persistence4

Eine weitere, wenn auch nicht optimale Variante wäre das ablegen des Objectes als Blob in der DB. Beide Varianten zeichnen sich durch durch wenig Aufwand aus, sind aber anfällig gegen Änderungen der Objectstruktur. d.h. Wenn sich die Objectstruktur ändert, dann kannst du mit dem abgelegten Blob nix mehr anfangen.

Die 3. und aufwändigste Methode ist das Object per Hibernate, EJB, JDBC etc. in eine DB zu schreiben.
 
Wobei du darauf achten musst, dass die Objekte, die du speichern willst, auch serialisierbar sind, d.h. das Interface Serializable implementieren.

Aber abgesehen davon macht es in meinen Augen wenig Sinn, einen JTree irgendwohin auszulagern. Wenn schon, sollte man den Inhalt des JTree sichern, d.h. die Daten die im Model stecken und damit den Baum nach dem Wiedereinlesen neu aufbauen...
 
Danke für die rasche Antwort.
Ich werde mir mal den ersten Lösungsweg genauer ansehen. Da ich eXist als Datenbank benutze, bietet es sich doch sehr an die XML Encoder/Decoder Variante zu nutzen.

Gebe dann Rückmeldung mit meinem Ergebnis.
 
Zurück