无法使RMI安全策略正常工作

时间:2010-09-09 13:47:06

标签: java rmi security-policy

我无法让RMI安全策略正常运行。我在服务器和客户端上都有一个.policy文件,每个文件都运行一个SecurityManager。

当我尝试运行客户端失败时。我的政策文件授予所有内容。见内容:

grant { permission java.security.AllPermission };

我的JAR文件的根目录中有文件client.policy(我尝试使用jar外的策略文件运行它)。然后我用这个运行客户端:

java -jar PagePlanner.jar -Djava.security.policy=client.policy -Djava.rmi.codebase=http://192.168.0.88:2077/home/me/NetbeansProjects/PageServer/dist/PageServer.jar -Djava.security.debug=access

指定我的策略文件和代码库的路径。我不确定其中任何一个是否正确。我也尝试设置调试开关,因为我在某处读到它应该给我关于什么是错误的额外信息,但它似乎没有区别。当我运行客户端时输出:

Exception in thread "main" java.security.AccessControlException: access denied (java.awt.AWTPermission setWindowAlwaysOnTop)
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
    at java.security.AccessController.checkPermission(AccessController.java:546)
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
    at java.awt.Window.setAlwaysOnTop(Window.java:2038)
    at gui.LoginForm.<init>(LoginForm.java:59)
    at main.Main.main(Main.java:21)

客户端从哪个位置挂起。我在这里做错了什么想法?服务器端的策略设置几乎相同。如果有帮助,我可以发布详细信息。

干杯。

1 个答案:

答案 0 :(得分:0)

使用-Djava.security.debug = access运行客户端,失败。很可能你的.policy文件找不到。

除非客户端有自己的抽象类/接口实现,服务器不知道它们,否则不需要在客户端设置代码库。代码库通常只在服务器上设置,以便注释下载到客户端和注册表的类。