??
Let me google that for you --> 4. Suchergebnis "RMI Client Callback Example" ... oder auch 8. Suchergebnis: "Threads and Callbacks in RMI" :autsch:
Und die Sache mit dem "Code nicht mehr ändern".
Danke, dennoch bin ich irgendwie nach langer Suche auf eine Seite gekommen die mir da ernsthaft Polling als Callback andrehen wollte.
Versteh ich nicht. Der Server hat zwar mit deinem Ansatz erstmal nur den Namen der Client-facade. Aber spätestens wenn er eine Methode aufrufen will braucht er a) das passende Interface und b) muss er wissen welche Methode er aufrufen will.
Ja dann solltest du dir mal das Naming oder Registry ansehen. Da hats die Methode lookup() womit ich über den Facadename zur Facade käme. Aber dazu müsste ich zuerst Registry.bind oder rebind aufrufen von dem Client aus auf dem Server. Wenn das irgendwie machbar wäre ohne dass ich an der Serverseite was ändern müsste wäre ich glücklich. Ich mein das wär ja ganz einfach es so zu machen auf der ClientSeite:
Registry reg = LocateRegistry.getRegistry(ServerIP, ServerPort);
reg.bind("ClientStub", clientStub);
Das funktioniert auch auf der Clientseite, aber nur solange der Client auf demselben PC wie der Server läuft.
Änderst du nun das Interface, hat doch der Server keine Chance mehr die Methode aufzurufen. Gut, wenn du das Interface nur immer erweiterst und das Interface zur Laufzeit von Client runterlädst, dann geht das. Aber dann hast du immer noch a) ein sehr komplexes Szenario und b) hat der Server nix von deiner Erweiterung deiner Facade. Was du erreicht hast ist, dass ein alter Server auch mit einer neuen Client-facade zurecht kommt. Bleibt aber immer noch die Frage offen ob ein neuer Client mit einem alten Server zurecht kommt?
- Alex
Nein das Interface will ich ja garnicht ändern, Mensch. Ich will garnichts ändern an den Methoden, ich will ne Lösung für das AccessException Problem ;-) .
Am Code bin ich ja noch garnicht. Ich bin an den Klassendiagrammen, aber die darf ich wie gesagt nichtmehr ändern, da der "Kunde" das bereits so abgesegnet hat.
Ich weiß nicht was an meinem Problem so schwer zu verstehen ist. Die erste Antwort lief wohl auf das richtige hinaus, da andere es so auch gelöst bekommen haben. Aber bei mir scheint es nicht richtig zu funktionieren.
Stell dir das Problem vielleicht ganz anders vor: Der Server hat garkeine Facade und darf auch nie eine haben (Kundenanforderung z.B.) und die Clients registrieren sich manuell auf der entfernten Java Registry.