# RMI: Registry.bind oder Naming.bind?



## Moltar (12. Apr 2007)

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 (13. Apr 2007)

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,
> ...





			
				API-Doc von java.rmi.registry.Registry#bind() hat gesagt.:
			
		

> public void bind(String name,
> Remote obj)
> throws RemoteException,
> AlreadyBoundException,
> ...


----------



## Moltar (13. Apr 2007)

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


----------

