2010-02-19 10 views
5

Ich habe älteren Code, der keinen SecurityManager verwendet, aber RMI verwendet. Von dem, was ich gelesen habe, benötigt RMI einen Sicherheitsmanager, aber der Code scheint zu funktionieren und läuft auf demselben Rechner und zwischen zwei Rechnern einwandfrei. Ich habe dieses Zeug auf 1.5 getestet, aber nicht auf 1.6.Java RMI ohne SecurityManager

Ich kann keine Ressource finden, die diskutiert, wenn ein SecurityManager erforderlich ist und wenn nicht, oder wenn diese Anforderung mit Java-Versionen geändert wurde.

Ich werde den Code aktualisieren, um einen zu verwenden, ich wollte nur die Details dahinter verstehen.

Danke für jede Rückmeldung!

Antwort

7

Der Sicherheitsmanager wird nur benötigt, wenn RMI den Code von der Remote-Maschine herunterlädt. Wenn sowohl der Client als auch der Server dieselben Klassen verwenden, werden sie nicht benötigt.

Von RMI Tutorial:

Ein Sicherheitsmanager bestimmt, ob heruntergeladenen Code Zugriff auf das lokale Dateisystem oder andere privilegierte Operationen ausführen können.

Wenn ein RMI-Programm keinen Sicherheitsmanager installiert, lädt RMI keine Klassen (außer aus dem lokalen Klassenpfad) für Objekte, die als Argumente oder als Rückgabewerte von Remotemethodenaufrufen empfangen werden. Diese Einschränkung stellt sicher, dass die vom heruntergeladenen Code ausgeführten Vorgänge einer Sicherheitsrichtlinie unterliegen.