T
tuxedo
Gast
Hallo zusammen,
für meine SIMON Bibliothek (siehe Signatur), bräuchte ich folgendes Feature (oder eben etwas vergleichbares):
Ähnlich wie bei RMI habe ich auf Client-Seite, meiner Client-Server-Anwendung "Remote Objekte" die für den Client den Server darstellen. Diese Remoteobjekte sind via Proxy und einer Socketverbindung mit dem Server "verbunden".
So. Nun möchte ich, dass, wenn der GC des Clients alle "Remote Objekte" aufgeräumt hat, die Socketverbindung getrennt wird. Nach ein wenig googeln bin ich auf die "finalize" Methode von "Object" gestoßen. Diese müsste ich in meinem RemoteObjekt einfach überschreiben und damit Rückmeldung an SIMON geben dass diese Instanz nun nicht mehr gebraucht wird. Ist auch sonst keine mehr "in gebrauch", wird die Verbindung getrennt.
Soweit so gut. Nur will ich den Entwickler nicht zwingen von einer "speziellen" Simon-Basisklasse zu erben, die "finalize()" für Simon implementiert hat. Bisher reicht es aus, wenn die Implementierung des Remoteobjekts irgendwo ein "implements SimonRemote" (ein Marker-Interface ohne Methoden, ähnlich wie "Serializeable") drin hat.
Gibt es eine Möglichkeit ein beliebiges Objekt (lässt sich anhand eines "implements SimonRemote" identifizieren) zur Laufzeit von einer bestimmten Klasse erben zu lassen, die "finalize()" passend implementiert?
Ich hoffe ich konnte das ganze verständlich formulieren ;-)
Bin gespannt auf Eure Ideen/Vorschläge.
Gruß
Alex
für meine SIMON Bibliothek (siehe Signatur), bräuchte ich folgendes Feature (oder eben etwas vergleichbares):
Ähnlich wie bei RMI habe ich auf Client-Seite, meiner Client-Server-Anwendung "Remote Objekte" die für den Client den Server darstellen. Diese Remoteobjekte sind via Proxy und einer Socketverbindung mit dem Server "verbunden".
So. Nun möchte ich, dass, wenn der GC des Clients alle "Remote Objekte" aufgeräumt hat, die Socketverbindung getrennt wird. Nach ein wenig googeln bin ich auf die "finalize" Methode von "Object" gestoßen. Diese müsste ich in meinem RemoteObjekt einfach überschreiben und damit Rückmeldung an SIMON geben dass diese Instanz nun nicht mehr gebraucht wird. Ist auch sonst keine mehr "in gebrauch", wird die Verbindung getrennt.
Soweit so gut. Nur will ich den Entwickler nicht zwingen von einer "speziellen" Simon-Basisklasse zu erben, die "finalize()" für Simon implementiert hat. Bisher reicht es aus, wenn die Implementierung des Remoteobjekts irgendwo ein "implements SimonRemote" (ein Marker-Interface ohne Methoden, ähnlich wie "Serializeable") drin hat.
Gibt es eine Möglichkeit ein beliebiges Objekt (lässt sich anhand eines "implements SimonRemote" identifizieren) zur Laufzeit von einer bestimmten Klasse erben zu lassen, die "finalize()" passend implementiert?
Ich hoffe ich konnte das ganze verständlich formulieren ;-)
Bin gespannt auf Eure Ideen/Vorschläge.
Gruß
Alex