RMI Client abmelden?

Status
Nicht offen für weitere Antworten.

Tallan

Bekanntes Mitglied
Hallo Zusammen,

ich habe eine generelle Frage zu RMI

Ich habe einen Client der dem Server ein Remote Object zur verfügung stellt.

Java:
public class ClientInterfaceImpl extends UnicastRemoteObject implements ClientInterface
{
	

	public ClientInterfaceImpl(int PORT) throws RemoteException
	{
        super(PORT,
                new SslRMIClientSocketFactory(),
                new SslRMIServerSocketFactory());
	}

....
}


public interface ClientInterface extends Remote
{
..
}



// Der Server wird wie folgt eingebunden

serverInterface = (ServerInterface)registry.lookup("Server");

ClientInterfaceImpl wird als InterfaceObjet dem Server übergeben um ein callBackObject zu realisieren.

Meine Frage wäre jetzt :
Auf was muß ich achten wenn ich den Client richtig beenden möchte.
Muss die Verbindung explizit gelöst werden?
Was passiert mit Objekten die auf dem Server noch referenziert sind?
 
T

tuxedo

Gast
Bei RMI gibts den DGC -> Distributed Garbage Collector. RMi kümmer sich selbstständig um das abräumen von nicht mehr gebrauchten Remote-Objekten.

Das mag auf den ersten Blick einfacher wirken als irgendwo auch noch "disconnect()" oder "release()" aufrufen zu müssen. Aber in manchen Konstellationen bringt es mehr verwirrung wie Vorteile.

Ein RMI-Server läuft i.d.R. solange, wie das Remote-Objekt in der Registry gebunden ist.

Schau mal nach ob du zur "bind()" Methode auch ein "unbind()" findest. Das sollte dich weiterbringen.

- Alex
 

Tallan

Bekanntes Mitglied
Bei RMI gibts den DGC -> Distributed Garbage Collector. RMi kümmer sich selbstständig um das abräumen von nicht mehr gebrauchten Remote-Objekten.

Das mag auf den ersten Blick einfacher wirken als irgendwo auch noch "disconnect()" oder "release()" aufrufen zu müssen. Aber in manchen Konstellationen bringt es mehr verwirrung wie Vorteile.

Ein RMI-Server läuft i.d.R. solange, wie das Remote-Objekt in der Registry gebunden ist.

Schau mal nach ob du zur "bind()" Methode auch ein "unbind()" findest. Das sollte dich weiterbringen.

- Alex


bind und unbind beziehen sich ja auf den server, den möchte ich garnicht beenden.
Es geht mir nur darum den Client "sauber" zu beenden so das der Server nicht auf dauer immer mehr unnötige Objekte ansammelt.
Was die Sessionverwaltung und CallbackObjekte angeht habe ich mich bereits darum gekümmert das diese "einträge" vom Server verschwinden, es geht jetzt eigentlich nur darum ob die Verbindung noch gesondert gelöst werden muß aber wenn das der DGC erledigt sollte das damit ja erledigt sein.
 
T

tuxedo

Gast
Du verstehst nicht: Wenn der Client via RMI-Servertechnik auch ein Remote-Objekt anbietet (die Sache hatten wir ja shcon diskutiert), dann müsstest du, wenn der Client sich beenden soll, auch dieses Remote-Objekt aus der eigenen Registry entfernen. Und das geht via unbind().

Wenn du auf dem Client keinen RMi-Server startest, dann gibts nix weiter zu beachten außer dass Remote-Objekte in keiner Liste mehr vor sich hingammeln und vom GC nicht abgeräumt werden können. Einen "Verbindung zum Server trennen" Befehl gibt es nicht.

- Alex
 

Tallan

Bekanntes Mitglied
Du verstehst nicht: Wenn der Client via RMI-Servertechnik auch ein Remote-Objekt anbietet (die Sache hatten wir ja shcon diskutiert), dann müsstest du, wenn der Client sich beenden soll, auch dieses Remote-Objekt aus der eigenen Registry entfernen. Und das geht via unbind().

Wenn du auf dem Client keinen RMi-Server startest, dann gibts nix weiter zu beachten außer dass Remote-Objekte in keiner Liste mehr vor sich hingammeln und vom GC nicht abgeräumt werden können. Einen "Verbindung zum Server trennen" Befehl gibt es nicht.

- Alex

Ich starte auf dem Client keinen "Server" mehr, ich übergebe dem Server ein CallbackObjekt welches von UniCastRemoteObj erbt und überge diesem die Portnummer

Java:
public class ClientInterfaceImpl extends UnicastRemoteObject implements ClientInterface
{
    
 
    public ClientInterfaceImpl(int PORT) throws RemoteException
    {
        super(PORT,
                new SslRMIClientSocketFactory(),
                new SslRMIServerSocketFactory());
    }
...

Damit wird kein selbst implementierter Server auf der Client-Seite für den RMI Call vom Server auf den Client benötigt. ( Wird wohl von der VM selbst gehandelt )
 
T

tuxedo

Gast
D.h. du hast rausgefunden wie man RMi-Callback-Objekten vorab einen Port verpasst?
Wäre ja schonmal ein Anfang :)

Aber auch in diesem Fall reicht es sicherzustellen, dass keiner mehr eine Referenz auf ein Remote-Objekt (seit es nun Server.Objekt oder Callback) hat. Der DGC und GC räumen dann auf und trennen ggf. die Verbindung.

- Alex
 

Tallan

Bekanntes Mitglied
D.h. du hast rausgefunden wie man RMi-Callback-Objekten vorab einen Port verpasst?
Wäre ja schonmal ein Anfang :)

Aber auch in diesem Fall reicht es sicherzustellen, dass keiner mehr eine Referenz auf ein Remote-Objekt (seit es nun Server.Objekt oder Callback) hat. Der DGC und GC räumen dann auf und trennen ggf. die Verbindung.

- Alex

Jap, bidirektion ist damit zwar nicht möglich aber immerhin etwas.
Um mich mit dem Thema etwas zu beschäftigen habe ich am Wochende mal die Beispiele mit RMI und Firewall mal durchgetestet.
 
T

tuxedo

Gast
jetzt wo ich die ApiDoc mal genaue lese (bin nie auf die Idee gekommen die von UnicastRemoteObject zu studieren) wird mir einiges klar:

http://java.sun.com/j2se/1.4.2/docs/api/java/rmi/server/UnicastRemoteObject.html#UnicastRemoteObject%28int%29 hat gesagt.:
protected UnicastRemoteObject(int port)
throws RemoteException

Creates and exports a new UnicastRemoteObject object using the particular supplied port.

Parameters:
port - the port number on which the remote object receives calls (if port is zero, an anonymous port is chosen)

Ist RMI ja doch nicht sooo doof. Aber bidirektionale Kommunikation ist für Internetanwendungen halt doch geschickter ;-)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Client am Server abmelden Netzwerkprogrammierung 0
hieuhp132 Server wird nicht auf zweiten Anfrage von Client geupdated Netzwerkprogrammierung 3
I Performanteste Kommunikationsmethode zwischen Client u. Server Netzwerkprogrammierung 4
L Socket Automatische Zuweisung von Server und Client Rolle Netzwerkprogrammierung 12
ExceptionOfExpectation Server/Client-Kommunikation Netzwerkprogrammierung 34
M Server-Client-System für Browsergame Netzwerkprogrammierung 5
B Axis2 Webservice mit Client Zertifikat Authentifizierung Netzwerkprogrammierung 3
Yonnig Threads mit Client/Server und GUI (laufend bis button-click) Netzwerkprogrammierung 9
T Jetty mit Client-Zertifikat nur bei spezifischer URL Netzwerkprogrammierung 1
J Einlesen von Servernachrichten von TCP-Client Netzwerkprogrammierung 17
J Client-Server und SOAP Netzwerkprogrammierung 23
L30nS RMI Aufruf einer Client-Methode von einem RMI-Server Netzwerkprogrammierung 3
T String von Client zu Server kommt nicht an Netzwerkprogrammierung 92
D WebSocket Server mit HTML Client und Java Server Netzwerkprogrammierung 5
D Server - Client Informationsaustausch, Möglichkeiten Netzwerkprogrammierung 3
H Socket Chat entwickeln mit Java Server Client Netzwerkprogrammierung 4
X Kann ich einen Client/Server verbindung hinkriegen die mir alle paar Sekunden die aktuellen Daten per Realtime zuschickt ? Netzwerkprogrammierung 9
T Client zu Client Kommunikation Netzwerkprogrammierung 2
D Slf4j - Logging - Client-Server Architektur Netzwerkprogrammierung 3
J client server mit nur einem PC Netzwerkprogrammierung 33
M Socket Nachricht von TCP-Client an Server schicken Netzwerkprogrammierung 12
M Socket Verbindung Matlab(Server) Java(Client) Netzwerkprogrammierung 1
R Socket FATAL EXCEPTION MAIN bei Socket based client/server app Netzwerkprogrammierung 2
G Server-Client IO Problem Netzwerkprogrammierung 6
ruutaiokwu ständig "sender address rejected: improper use of smtp" bei smtp-client Netzwerkprogrammierung 4
J HTTP [Java 9] Neuer HTTP Client - Tutorial Netzwerkprogrammierung 3
A Chatserver/-client - Code stoppt bei readUTF() Netzwerkprogrammierung 7
I Socket Das erste Server-Client Programm Netzwerkprogrammierung 16
L Zugriffprobleme Client - Webservice AspenTechnology Netzwerkprogrammierung 0
A Client Client Übertragung Netzwerkprogrammierung 12
M Socket Server antwortet dem Client nicht Netzwerkprogrammierung 6
K Socket Netty Client wirft Fehler! Netzwerkprogrammierung 3
I Client/Server Kommunikation bei einem Spiel Netzwerkprogrammierung 4
E Objekte versenden, Client-Server Netzwerkprogrammierung 25
C Mini Client-Server-Anwendung funktioniert nicht Netzwerkprogrammierung 8
U Client Soap Verbindung wieder schließen Netzwerkprogrammierung 0
U Socket Client mit hash authentifizieren Netzwerkprogrammierung 3
F HTTP HTTP Rest Client mit TLS1.2 und selbst signiertem Zertifikat Netzwerkprogrammierung 2
P Server als Client nutzen Netzwerkprogrammierung 8
D Socket Run Args Client/Server Socket Netzwerkprogrammierung 1
Cromewell Socket Multithreaded Server und Client Netzwerkprogrammierung 1
Y Client/Server/DB communication Netzwerkprogrammierung 3
JavaWolf165 Socket mit .writeUtf etwas vom Client zum Server schicken Netzwerkprogrammierung 13
J Client - Serversocket Netzwerkprogrammierung 1
P RMI Client Server Programm über Internet Netzwerkprogrammierung 2
brainless Client Server Kommunikation verschlüsseln Netzwerkprogrammierung 13
gamebreiti Socket Server / Client Anwendung Manipulation von Objekten durch Server Netzwerkprogrammierung 9
T Socket Server/Client Kommunikation Netzwerkprogrammierung 8
N Fragen zu Sockets Client Netzwerkprogrammierung 3
F Extasys TCp Client extends Funktion Netzwerkprogrammierung 0
F Server Client Anwendung mit UDP Netzwerkprogrammierung 2
O Client zwischen XML und JSON auswählen lassen Netzwerkprogrammierung 2
A RMI Wo treten Exceptions bei RMI Aufrufen auf? Auf Client oder auf Server? Netzwerkprogrammierung 3
A ByteBuffer - Client/Server Netzwerkprogrammierung 9
A Socket Wie ein einfacher Multithreads Service mit Telnet als Client mit Observable/Observer gelöst.... Netzwerkprogrammierung 0
K C# Server - Android Client Netzwerkprogrammierung 0
T Application Client NullPointerExc Netzwerkprogrammierung 7
V TCP Client funktioniert auf Emulator aber nicht auf Smartphone Netzwerkprogrammierung 5
H Machbarkeitsfrage: TCP/IP Client (z.B. Netty) für Java Web Applcation Netzwerkprogrammierung 1
P MIME-TYPE Erklaerung, Kommunikation zwischen Client und Server Netzwerkprogrammierung 3
H HTTP REST Jersey - PUT-Beispiel von Client senden Netzwerkprogrammierung 0
J Sichere Kommunikation bei Server Client Netzwerkprogrammierung 3
T Frage zu Client-Server Applikation Netzwerkprogrammierung 2
H Socket Client/Server Socket Programmieren Netzwerkprogrammierung 1
M Theoretische Frage zu Server - Client Netzwerkprogrammierung 2
P HTTP Server / Client Netzwerkprogrammierung 1
N FTP FTP Client invalid IPv6 address (Apache Commons Net API) Netzwerkprogrammierung 6
F TCP Client, verbindung aufrecht halten Netzwerkprogrammierung 0
X RMI: Woher kennt der Client das Schnittstellen-Interface? Netzwerkprogrammierung 2
E Thematik Client server Netzwerkprogrammierung 2
D UDP Client empfängt nichts Netzwerkprogrammierung 2
D Client/Server per Crossover Lan Kabel Netzwerkprogrammierung 1
S Client Server Connection Netzwerkprogrammierung 4
V erste Client - Server Anwendung, paar Fragen wie Socketverbindung checken usw. Netzwerkprogrammierung 4
S Client Anwendung mit zentraler SQL-Datenbank Netzwerkprogrammierung 3
N Client Identifikation eines Servers Netzwerkprogrammierung 1
S Sichere Server/Client Architektur Netzwerkprogrammierung 1
D Chat Server/mehre Client Netzwerkprogrammierung 9
I Server+Client Netzwerkprogrammierung 3
F Server/Client Probleme Netzwerkprogrammierung 3
D SSH Client Netzwerkprogrammierung 7
U Socket Instant Messanger (Server Linux, Client Windows) Netzwerkprogrammierung 1
B TCP Client Android Netzwerkprogrammierung 3
Athena Grundsatzfragen zu Client-Server-Architektur / Matchmaking Netzwerkprogrammierung 1
A Problem beim Senden von Client zu Server Netzwerkprogrammierung 10
F Client Server DB Netzwerkprogrammierung 0
A Verständnisfrage Multi-Threaded Client/Server Netzwerkprogrammierung 5
F Tipps zum Thema Server/Client vie SOAP Netzwerkprogrammierung 0
OnDemand Ist Client noch angemeldet? Netzwerkprogrammierung 7
F Socket Java - Server/Client simple Netzwerkprogrammierung 1
D Socket UDP Client reagiert nicht auf spontane Meldungen Netzwerkprogrammierung 5
R Zeitliche Syncronisation Server - Client Netzwerkprogrammierung 0
S Server-Client: Image senden Netzwerkprogrammierung 2
C Multithreading Client / Server erklärt Netzwerkprogrammierung 11
M Client sendet nur, wenn das Socket geschlossen wird Netzwerkprogrammierung 53
P server - client verbindung (anfänger) Netzwerkprogrammierung 8
S Socket (client) verbindet nicht Netzwerkprogrammierung 6
V Templates für Java Client rabbitmq Netzwerkprogrammierung 4
J Client Server - Serialisierung Netzwerkprogrammierung 8
C Client connection per Portforwarding auf einen lokalen Serverport Netzwerkprogrammierung 3

Ähnliche Java Themen

Neue Themen


Oben