# Fragen zu RMI



## Guest (22. Aug 2007)

Hallo, ich habe da mal eine Frage zu RMI.

ich habe eine Client Server Anwendung die mit RMI funktioniert. Bis jetzt hat es mir(dem Client gereicht) wenn es Methoden auf dem Server aufrufen konnte. Alsomeine damit habe eine anfrage mit Parametern gestellt(Requestobjekt) und der Server hat sie bearbeitet und mir ein Responseobjekt zurückgeliefert. Was ich dann weiter verarbeitet habe. Die Objekt habe ich dabei einfach serialisiert und als kopie übertragen.

Jetzt ist aber eine Sitation hinzugekommen. An dem der Server eine Anfrage an den Client stellt. Und nun weiß ich nicht wie ich das machen soll. Denn das RMI Interface implementiert ja nur der Server und nicht der Client und wie kann da der Server beim Client eine Funktion aufrufen. Und kann ich das dann auch die Antwort an den Server als Kopie übertragen (also serialisieren reicht aus).
Und dann noch etin anderes Problem, auch hinzugekommen ist, das der Client über Änderungen an einem Objekt des Servers dauerhaft informiert sein will, wie mache ich das?


----------



## Gast (22. Aug 2007)

Hallo kann mir denn keiner sagen was ich ändern oder hinzufügen muss, das der Server auch bei mir anfragen starten kann und wo ich diese methode definiere bzw implementiere.


----------



## Gast (22. Aug 2007)

Ich beschreib die 2 aufgaben mal näher vielleicht kann mir dann einer nen tipp geben wie man das ganzen lösen kann.

Vielleicht fallt dir oder jemand anderem ja noch was ein wie man das sonst machen könnte. 
Also der Server kriegt eine bestimmte Anfrage die kann er aber nur dann ausführen wenn er mit einer anderen Aufgabe fertig ist. Ich habe halt gedacht ich frage beim Server an und der sagt mir bin noch beschäftigt, weiß aber das ich was von ihm will. ist er mit seiner Aufgabe fertig soll er dann mir bescheid geben. ich frage dann daraufhin den nutzer etwas sagt er ok, wird die Aktion ausgeführt sagt er abbrechen wird die aktion abgebrochen. 

Dafür wollte ich halt das der Server beim Client eine Aktion aufrufen kann und erfährt wie der nutzer geantwortet hat um so die aktion auszuführen oder zu verwerfen. 

Zum zweiten. Da ist das genaue Problem. Ich schicke eine Anfrage an den Server, dieser nimmt sie auf. Während der Anfrage gibt es verschiedene Statisen, wartet laüft pausiert, fehler. 
In meiner gui habe ich dann eine tabelle in der alle aktuelle laufenden Prozesse angezeigt werden, mit dem aktallen Status. Und nun möchte ich das wenn sich auf dem server der status ändert. ich in der tabelle dies Änderung anzeige, also mein Modell auf dem Client sich ändert. deswegen wolte ich das der Server mir änderung am Modell dann mitteilt wenn sie eintreten.


----------



## ms (22. Aug 2007)

Am einfachsten pollen => der Client fragt den Server z.B. jede Minute ab ob sich was geändert hat, wie der aktuelle Status ist. Gilt in beiden Fällen.

ms


----------



## Gast (22. Aug 2007)

ok danke, mal noch ne andere frage was bedeuted das wort pollen eigentlich richtig. Frage bloß weil ich in letzter zeit öfter drüber gestolpert bin


----------



## ms (22. Aug 2007)

http://de.wikipedia.org/wiki/Polling_%28Informatik%29


----------



## Gast (22. Aug 2007)

danke habe unter pollen gesucht und halt logischerweise nur sowas wie Blütenpollen gefunden. manchmal sollte man sich halt überlegen wie das substantiv heißt


----------



## Yzebär (22. Aug 2007)

Pollen funktioniert zwar, ist aber ziemlich häßlich für eine moderne Programmiersprache. Das Stichwort heißt hier "Callback" (Google-Suche mit "java rmi callback").

Hier ein Link zum offiziellen Beispiel von SUN
java.sun.com/developer/onlineTraining/rmi/exercises/RMICallback/index.html


----------



## Niki (29. Aug 2007)

Ich erklär dir das mal auf die schnelle:

Am Server hast du ja ein Remote Objekt, welches du registrierst. Der Client holt sich dieses ab.

Wenn du am Client auch ein Remote Objekt erstellst (genauso wie das am Server) und einer Methode des Server-Objekts beim Aufruf mit übergibst, checkt die VM das es sich um ein Remote-Objekt handelt und übergibt dem Server nur den Stub. Der Server kann dan auf dem übergebenen Stub Methoden aufrufen die in wirklichkeit am Client aufgerufen werden.


----------

