在哪里放置java applet策略文件?

时间:2010-04-10 09:36:59

标签: java applet policy

我正在开发一个人工智能项目,这是一个逻辑游戏,目标是两个用户连接到网络上充当管理员的服务器,然后逐个开始玩。

为了创建连接,我有一个服务器代码,它只是在localhost:8000上监听,并在客户端到达时为其分配团队值。连接后,客户端将在Admin的控制下进行移动。

问题是,当我尝试将我的代码用于浏览器时,它会失败并出现以下错误:

java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:8000 connect,resolve)

即使我已经创建了自己的策略,首先只授予对我的项目文件夹(file:///home/xxx/projects/-)的代码库的Socket访问权限,但在它无效后我授予所有权限来自所有代码库。我尝试将我的策略文件放在主目录和applet代码所在的同一目录中。

感谢任何提示,谢谢。

5 个答案:

答案 0 :(得分:11)

默认情况下,我认为它会在您的主目录中查找名为.java.policy的文件

您可以检查文件/lib/security/java.security以查看其外观。 检查名为policy.url.n的密钥

答案 1 :(得分:2)

您可以使用此命令行选项

设置安全策略文件的位置
-Djava.security.policy=policyfilepath

使用java命令。

或者您甚至可以使用System.setProperty()程序设置此功能。

答案 2 :(得分:0)

将策略文件放在JRE所在的位置。

例如,我的策略文件位于C:\ Program Files \ Java \ jre1.6.0_01 \ lib \ security

答案 3 :(得分:0)

我强烈建议尊重同源政策。在最好的情况下,安全影响不一定是显而易见的。此外,具有标准权限的applet具有更好的可用性,并且应该更易于维护。

答案 4 :(得分:0)

如果您授予特定JAR(代码库)的权限,则仅在从线程开始到方法调用的整个执行堆栈位于该代码库/保护域中时才有效。

如果您的方法是图书馆,并且您确定安全地访问了该操作,则可以使用Priratedged Block,它基本上可以确保在访问计算中不考虑调用块的堆栈部分。

特权阻止,如下所述:

http://docs.oracle.com/javase/6/docs/technotes/guides/security/doprivileged.html

问候 贝恩德