RMI: Registry.bind oder Naming.bind?

Status
Nicht offen für weitere Antworten.
M

Moltar

Gast
Hallo,
ich arbeite mich derzeit in die Problematik von RMI ein und bin auf meinen Wegen durch das WWW auf zwei verschiedene Lösungen gestoßen, den Server an der Registry anzumelden.

LocateRegistry.getRegistry().bind("SERVER", server);
bzw.
Naming.bind("SERVER", server);

Wenn ich beide nacheinander ausführe erhalte ich eine AlreadyBoundException. Sie scheinen also das gleiche zu tun.

Nun meine Fragen:
- Wo ist der Unterschied (wenn es einen gibt?).
- Welche Lösung ist besser / sicherer / zuverlässiger etc.?

Vielen Dank schonmal an alle, die sich die Mühe machen, sich mit den Fragen zu befassen.

MfG Moltar
 

L-ectron-X

Gesperrter Benutzer
Der Unterschied geht aus der API-Doc hervor.
API-Doc von java.rmi.Naming#bind() hat gesagt.:
public static void bind(String name,
Remote obj)
throws AlreadyBoundException,
MalformedURLException,
RemoteException

Binds the specified name to a remote object.

Parameters:
name - a name in URL format (without the scheme component)
obj - a reference for the remote object (usually a stub)
Throws:
AlreadyBoundException - if name is already bound
MalformedURLException - if the name is not an appropriately formatted URL
RemoteException - if registry could not be contacted
AccessException - if this operation is not permitted (if originating from a non-local host, for example)
Since:
JDK1.1

API-Doc von java.rmi.registry.Registry#bind() hat gesagt.:
public void bind(String name,
Remote obj)
throws RemoteException,
AlreadyBoundException,
AccessException

Binds a remote reference to the specified name in this registry.

Parameters:
name - the name to associate with the remote reference
obj - a reference to a remote object (usually a stub)
Throws:
AlreadyBoundException - if name is already bound
RemoteException - if remote communication with the registry failed; if exception is a ServerException containing an AccessException, then the registry denies the caller access to perform this operation (if originating from a non-local host, for example)
AccessException - if this registry is local and it denies the caller access to perform this operation
NullPointerException - if name is null, or if obj is null
 
M

Moltar

Gast
Ok, danke.
Wenn ich eine Client-Server RMI Anwendung habe und möchte, dass die Servermethoden remote aufgerufen werden können, welche Lösung ist dann die richtigere?

Das eine bindet den Namen an das Objekt, das andere eine Referenz an den Namen. Das ist doch eigentlich nur eine unterschiedliche Betrachtungsweise des selben Vorgangs, oder nicht? (abgesehen davon, dass es einmal eine Referenz und einmal ein Objekt ist).

Beide erwarten eigentlich ein remote-Objekt bzw eine remote-Referenz. Da ich aber die Registry auf dem gleichen Rechner habe wie der server läuft (also aus registrysicht müsste der server dann doch ein lokales objekt sein, oder?) stellt sich mir die Frage: ist das überhaupt die richtige Herangehensweise für mein Problem?

Danke.
Moltar
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben