Laufen Objekte, die vom Cajo-Server geliefert werden, lokal auf dem Client?

TheJeed

Mitglied
Hallo zusammen!

Ich habe ein Problem, das mich etwas verwirrt und ich befürchte, die Funktionsweise von Cajo nicht ganz begriffen zu haben. Für ein kleines Projekt habe ich einen Cajo Client und Server geschrieben. Der Server stellt einen Service zur Verfügung, von dem wiederum eine Methode dazu dienen soll, ein Adressobjekt in eine db4o-Datenbank zu schreiben.

Beim Start des Servers wird meine Datenbankverbindung initialisiert, d.h. ich rufe "getInstance()" meiner als Singleton konzipierten DB-Helferklasse auf. Dabei wird die entsprechende DB-Datei in einem Server-Unterverzeichnis geöffnet. So weit, so gut.

Wenn ich nun auf dem Client die Methode "storeAdress" aufrufe, die vom Server bereitgestellt wird, soll folgendes geschehen:
Java:
//diese Methode wird vom Client remote aufgerufen
public void storeAddress(Address a){
  DBConnector dbc=DBConnector.getInstance();//DBConnector ist die Singleton-DB-Helferklasse
  dbc.storeAddressObject(a); 
}
Nun dachte ich mir:"In der ersten Zeile wird das vom Server instanziierte Helferklassenobjekt zurückgegeben." Das ist aber nicht der Fall und es hat zur Folge, dass noch eine Instanz des Singletons(im Kontext des Clients?!) erzeugt und die Datenbank neu geöffnet wird. Allerdings so, als würde sich das Objekt auf dem Client befinden - es sucht auch nicht mehr in einem Unterverzeichnis des Servers, sondern des Clientprogramms nach der DB-Datei zum Öffnen.

Baut Cajo das Objekt meiner Helferklasse tatsächlich noch ein zweites Mal lokal? Wie kann ich in dem Fall dafür sorgen, dass das Serverprogramm und der Cajo-Client auf die selbe Objektinstanz zugreifen können?

Ich wäre für nen denkfördernden Klapps auf den Hinterkopf sehr dankbar ;)

Beste Grüße,

David
 
Zuletzt bearbeitet:

TheJeed

Mitglied
Ja, das ist eben auch meine Meinung gewesen. Ich habe mittlerweile an mehreren Stellen gelesen, dass man das Prinzip, das hinter RMI steht, als "weak code mobility" bezeichnet. Dort verhält es sich so, dass die zur Verfügung gestellten Methoden im Serverkontext laufen.

Cajo scheint aber dem Prinzip "strong code mobility" zu folgen und nicht nur die Daten- und Ergebnisobjekte an den Server zu senden, sondern den kompletten Code auf den Clientkontext zu verfrachten.

Ich hab mein Problem jetzt erstmal über gutes altes RMI gelöst. Trotzdem werd ich mich mal hinsetzen und noch ein Cajo Beispiel schreiben um zu sehen, wie das nun wirklich läuft. Ich stelle es dann hier mal zur Verfügung.
 
T

tuxedo

Gast
Ergänzung:

http://de.wikipedia.org/wiki/Cajo hat gesagt.:
Das Projekt cajo ist eine kleine, freie Java-Klassen-Bibliothek. Sie ermöglicht die Kooperation zwischen mehreren virtuellen Maschinen. Das Ziel ist die Vereinfachung des Gebrauchs von RMI.

Ergo: Cajo ist nach wie vor "Remote Procedure Call" (RPC), nur eben angeblich einfacher als bei RMI. Und nicht "Transfer Remote Procedure to Local and Call it Locally". Stell ich mir insgesamt auch schwer vor. Denn das Remote-Objekt hat ja einen ganz eigenen Kontext auf dem Server. Den müsste man auf dem Client ja auch erstmal herstellen, bevor man die Methoden dann aufrufen könnte...

Schlussfolgerung: Ist und bleibt RPC :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Applet/Applikation auf Xport laufen lassen Netzwerkprogrammierung 10
K Programm als Webservice laufen lassen Netzwerkprogrammierung 5
O Webservice ohne Eclipse laufen lassen Netzwerkprogrammierung 3
A Java-Programm auf einem Server laufen lassen Netzwerkprogrammierung 9
O Server laufen lassen Netzwerkprogrammierung 3
T JSON-Objekte richtig parsen Netzwerkprogrammierung 8
L Socket Wie kann man in Java die Anzahl der Objekte in einem InputStream sehen ohne ihn durchgehen zu müssen Netzwerkprogrammierung 1
E Objekte versenden, Client-Server Netzwerkprogrammierung 25
A RMI RMI - Thread Objekte übertragen und auf anderer Machine weiterlaufen lassen Netzwerkprogrammierung 0
C List Deserialisierung entfernt Objekte Netzwerkprogrammierung 2
F HTTP Serialisierte Objekte aus Datei von Server Netzwerkprogrammierung 1
H Socket Objekte über Socket? Allgemeine Verständnisprobleme in Sachen Socket Netzwerkprogrammierung 3
V Socket Objekte werden nicht aktualisiert Netzwerkprogrammierung 2
S Socket Über UDP Objekte verschicken Netzwerkprogrammierung 9
B Eigene Objekte per RMI übergeben Netzwerkprogrammierung 2
S Kapselung der Netz-Objekte Netzwerkprogrammierung 3
B verschiedene Serialisierte Objekte identifizieren? Netzwerkprogrammierung 5
T Objekte im NIO unblocking mode versenden Netzwerkprogrammierung 11
C Socket ObjectInputStream liest nur Objekte der jeweiligen Programminstanz Netzwerkprogrammierung 5
G Frage zu Servlets und deren Objekte + Bilder in Servlets anzeigen? Netzwerkprogrammierung 11
G Objekte per TCP verschicken + Thread Netzwerkprogrammierung 4
T Inputstream -> verschiedene Objekte lesen Netzwerkprogrammierung 3
I Objekte über das Netzwerk Netzwerkprogrammierung 5
M Messenger - String oder Objekte Netzwerkprogrammierung 4
S Netzwerk und Objekte Netzwerkprogrammierung 5
S RMI 1.) Entfernte Objekte "Zwischenspeichern" 2.) Threadsicherheit Netzwerkprogrammierung 2
T rmi ssl zu große Objekte übergeben -> Exception Netzwerkprogrammierung 10
A Konflikt: Blocking und Non-Blocking bei Objekte versenden Netzwerkprogrammierung 4
N RMI und Datenbank Objekte Netzwerkprogrammierung 3
P Objekte über DatagramSocket versenden Netzwerkprogrammierung 12
R Mittels BufferedReader Objekte lesen? Netzwerkprogrammierung 5
M Objekte senden zwischen Java und PHP mit SOAP Netzwerkprogrammierung 9
A Objekte in übergebenen Objekten mit WebServices? Netzwerkprogrammierung 6
A RMI wie kann ich objekte übergeben? Netzwerkprogrammierung 5
P Serialialiserte Objekte übers Netzwerk verschicken Netzwerkprogrammierung 9
S Objekte zwischen Client und Server über Sockets senden Netzwerkprogrammierung 2
S Netzwerk Verbindungsproblem mit Cajo Netzwerkprogrammierung 5

Ähnliche Java Themen


Oben