没有SecurityManager的Java RMI

And*_*ger 5 java security rmi

我有一些旧代码不使用SecurityManager但使用RMI.从我所看到的RMI需要一个安全管理器,但代码似乎工作并在同一台机器和两台机器之间运行良好.我已经在1.5上测试了这个东西,但是在1.6上没有.

我找不到任何资源来讨论何时需要SecurityManager以及何时不需要SecurityManager,或者该需求是否随Java Versions更改.

我将更新代码使用一个,我只是想了解它背后的细节.

感谢您的任何反馈!

axt*_*avt 7

仅当RMI从远程计算机下载代码时才需要安全管理器.如果客户端和服务器都使用相同的类,则不需要它.

来自RMI教程:

安全管理器确定下载的代码是否可以访问本地文件系统,还是可以执行任何其他特权操作.

如果RMI程序未安装安全管理器,则RMI不会下载作为参数接收的对象的类(除本地类路径之外)或返回远程方法调用的值.此限制可确保下载的代码执行的操作受安全策略的约束.