遇到问题获取RMI安全策略工作
问题描述:
我在遇到RMI安全策略时遇到问题。我在服务器和客户端都有一个.policy文件,每个文件都运行一个SecurityManager。遇到问题获取RMI安全策略工作
当我尝试运行客户端失败。我的政策文件授予一切atm。继承人的内容:
grant { permission java.security.AllPermission };
我在JAR文件的根目录下的文件client.policy(我试过用罐子外的政策文件,运行它太)。然后我运行这个客户端:
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
指定我的策略文件和我的代码库的路径。我不确定这些是否正确。我也试着设置调试开关,因为我读的地方,应该给我说说怎么回事错了额外的信息,但它似乎并没有做出difference.Heres输出,当我运行客户端:
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)
从中指出客户端挂起。任何想法我在这里做错了吗?服务器端的策略设置几乎相同。如果有帮助,我可以发布详情。
干杯。
答
使用-Djava.security.debug =访问失败运行客户端。很可能你的.policy文件没有找到。
顺便说一句,你不需要在客户端设置代码库,除非客户端有自己的抽象类/接口实现,服务器不知道它们。代码库通常只在服务器上设置,以便注释下载到客户端和注册表的类。
出于某种原因-Djava.security.debug =访问,失败没有给我任何输出。不知道为什么,最终我修改了系统范围的策略文件,并暂时放弃了客户端交换机。然后我遇到了几个你似乎已经在其他网站上回答过的问题 - 非常感谢:) – 2010-09-15 11:59:30
EJP是正确的java.security.debug参数值,但语法略有不同。尝试这样:-Djava.security.debug =“访问,失败” – Florin 2011-02-09 15:45:03
@弗洛林:我从来没有使用这些引号。这只会是一个用逗号分隔参数的命令处理器(shell)的问题。大约32年来我没有使用过其中之一;-) – EJP 2011-02-11 06:07:33