2010-02-19 8 views
5

J'ai un ancien code qui n'utilise pas de SecurityManager mais qui utilise RMI. D'après ce que j'ai lu, RMI nécessite un gestionnaire de sécurité, mais le code semble fonctionner et fonctionner correctement sur la même machine et entre deux machines. J'ai testé ce truc sur 1.5, mais pas sur 1.6.Java RMI sans SecurityManager

Je ne trouve aucune ressource qui traite du moment où un SecurityManager est requis et quand il ne l'est pas, ou si cette exigence a changé avec les versions Java.

Je vais mettre à jour le code pour en utiliser un, je voulais juste comprendre les détails qui le sous-tendent.

Merci pour vos commentaires!

Répondre

7

Le gestionnaire de sécurité est nécessaire uniquement dans le cas où RMI télécharge du code à partir de la machine distante. Si le client et le serveur utilisent les mêmes classes, ce n'est pas nécessaire.

De RMI Tutorial:

Un gestionnaire de sécurité détermine si le code téléchargé a accès au système de fichiers local ou peut effectuer d'autres opérations privilégiées.

Si un programme RMI n'installe pas de gestionnaire de sécurité, RMI ne télécharge pas de classes (autres que celles du chemin de classe local) pour les objets reçus en tant qu'arguments ou valeurs de retour d'invocations de méthodes distantes. Cette restriction garantit que les opérations effectuées par le code téléchargé sont soumises à une politique de sécurité.