0
我有这样的代码,重视一个JavaServer到rmiregistry,这是在一个PrivilegedAction有没有简单的方法来调查是否真的需要AccessController.doPrivileged()?
//start javaengineserver
AccessController.doPrivileged(new PrivilegedAction()
{
public Object run()
{
try
{
startServer(port, getSession());
} catch (RmiException e)
{
e.printStackTrace();
AWTSwingErrorDialog.show(e, "Error while attaching JavaEngineServer to rmiregistry.exe");
}
return null;
}
});
我发现对doPrivileged
方法的一些其他问题做了,他们都表示,有一些系统管理命令需要额外的像获取环境变量一样的权限。
因此,我看了扔在startServer(port, session)
方法背后的代码,我还没有发现任何看起来需要额外的权限,但有没有办法确认,除了手动测试所有的用法和功能?
谢谢。
非常感谢!实际上,该方法调用RMI注册表的绑定异或重新绑定方法。我试着在没有doPrivileged()方法的情况下启动它,并且一切都似乎正常工作......并且我根据SecurityManager和RMI.bind发现了一些问题,但通过调用具有特权访问的bind方法似乎没有一个问题得到解决。有些东西告诉我它是需要的,但它运行良好,没有它.. – Oli
@Oli - 在封面之下,那些RMI方法可能会做一个serversocket绑定。或者,可能会有与RMI相关的特定权限。无论哪种方式,我认为可能会进行安全检查。如果您没有看到,请检查您使用的沙箱的策略设置。 –
没问题,所以如果策略设置足够紧密,那么操作将会失败,如果没有特权? – Oli