0

我想为我们的客户提供一个安全策略文件——Linux 和 Windows。在 java.security 文件中,我添加了一行指向我们的文件,但由于路径不同,我必须为 Windows 和 Linux 指定不同的文件

policy.url.3=file:/${our.home}/lib/OurSecurity.policy  # Windows
policy.url.3=file:${our.home}/lib/OurSecurity.policy   # Linux

Windows 上需要“file:”之后的第一个“/”,因为变量 our.home 被定义为“C:\foo”。我在策略文件本身也有同样的问题:

grant codeBase "file:/${our.home}/-"   // Windows
grant codeBase "file:${our.home}/-"    // Linux

我特别在寻找一种巧妙的方法来以独立于平台的方式指定 codeBase。顺便说一句,重新定义 our.home 并不是一个真正的选择,因为它需要在 FilePermission 子句中。

4

2 回答 2

1

如果是我,我会接受这样一个事实,即我需要不同的文件并通过删除“/”的脚本从 Windows 版本生成 linux 版本。

但是,如果您真的需要使用同一个文件,您可以通过定义另一个环境变量来表示 Windows 上的“/”并在 linux 上将其留空,从而将一种痛苦换成另一种痛苦。

# our.hack = "/" on windows
# our.hack = "" on linux
policy.url.3=file:${our.hack}${our.home}/lib/OurSecurity.policy

也许 our.hack 不是生产环境中最好的名称,但您明白了。该变量不用于其他任何用途,因此不应干扰应用程序的其余部分。

于 2012-10-12T19:30:04.733 回答
0

为什么要使用相同的策略文件?
JRE 对于 Linux 和 Windows 是不同的,因此您应该遵循这一点并为每次安装保留不同的版本。在这种
情况下 ,IMO 没有维护 2 个文件的问题。 此外,我建议您将关注点集中在 java 更新可能会删除您的策略文件这一事实上。

于 2012-10-12T21:03:02.277 回答