我正在寻找一个 java 参数(或者可能是一些不同的方法)来允许我指定一个 JVM 使用的文件作为 java.security 文件,而不是使用在 JDK 中找到的那个(在JRE 库)。
为了给您提供更多背景信息,我正在使用由其他人设置的 WebLogic 服务器,该服务器在同一个 JDK 上运行两个(或更多)不同的 JVM。我们现在遇到了一个问题,我在一个 JVM 上所做的工作需要一个与另一个 JVM 当前正在使用的文件不同的 java.security 文件。我希望有一种方法可以让我将我的 JVM 指向一个新的 java.security 文件,而不必将它指向一个全新的 JDK(由于空间限制,我们希望避免上传特定于每个 JVM 的 JDK ).
我意识到服务器的设置并不理想,但是完全重新安排现有设置是不可行的,而且我也无能为力。因此,我希望有人可能有一个创造性的解决方案,允许多个 JVM 在同一个 JDK 上运行,但具有不同的安全配置。
我一直在努力寻找解决方案,但我的 Google-Foo 似乎没有我希望的那么强大。在此希望你们中的一位能得到答案!
非常感谢。
编辑
抱歉,我的原始帖子可能不清楚,但我对指定 java.security 文件很感兴趣,它通常也称为 Java 主安全属性文件,而不是在中找到的 java.policy 文件同一个目录。
我的解决方案
我将我的解决方案贴在这里,以供其他可能遇到类似情况的人引用。
因为我似乎找不到在启动时指定的参数,所以我决定放弃 java.security 属性文件。可以使用安全类 (java.security.Security) 在代码中设置属性和提供程序(通常在文件中配置)。因此,至少在此期间,我计划编写一个类,该类将在启动后设置我的 JVM 特定安全配置(基本上覆盖文件为其他 JVM 提供的默认配置)。虽然此解决方案的明显缺点是它不会外部化此 JVM 的安全配置,但该解决方案确实为我提供了一种设置 JVM 特定属性和提供程序的方法,而不会影响运行在同一 JDK 上的其他 JVM 的配置。
我感谢其他人给予的时间和考虑。谢谢=)
最佳答案
查看 OpenJDK source ,您不能更改 java.security
文件的加载。但是,该文件有一个名为 security.overridePropertiesFile
的属性,如果设置为 true
(就像我当前的普通安装一样),您可以加载额外的安全性通过名为 java.security.properties
的系统属性指定的属性文件。另请注意,命令行语法遵循与策略文件类似的模式,其中 =
指定附加配置,==
指定完整的替换配置。
关于为 JVM 指定 Java.Security 文件的 Java 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4521119/