0

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

当我尝试运行客户端时,它失败了。我的政策文件授予一切atm。内容如下:

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)

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

干杯。

4

1 回答 1

0

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

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

于 2010-09-09T23:58:16.827 回答