我正在寻找一个java参数(或者可能是一些不同的方法)来允许我指定一个JVM用作java.security文件的文件,而不是使用在JDK中找到的文件(在JRE lib)。
为了给你一些更多的上下文,我正在使用由其他人设置的WebLogic服务器,并且在同一个JDK上运行两个(或更多)不同的JVM。我们现在遇到一个问题,我在一个JVM上所做的工作需要一个不同于另一个JVM当前正在使用的java.security文件。我希望有一种方法可以让我将JVM指向一个新的java.security文件而不必将它指向一个全新的JDK(由于空间限制,我们希望避免上传特定于每个JVM的JDK )。
我意识到服务器的设置并不理想,但完全重新安排现有的设置是不可行的,而不是我能够做的事情。所以,我希望有人可能有一个创造性的解决方案,允许多个JVM运行相同的JDK但具有不同的安全配置。
我一直试图找到解决方案,但似乎我的Google-Foo没有我想象的那么强大。这是希望你们中的一个有答案!
非常感谢。
修改
对不起,也许我原来的帖子不清楚,但我有兴趣指定java.security文件,通常也称为 Java主安全属性文件,而不是java.policy文件。同一目录。
我的解决方案
我会在这里发布我的解决方案,仅供其他可能陷入类似情况的人参考。
由于我似乎无法在启动时找到要指定的参数,因此我决定放弃java.security属性文件。可以使用Security类(java.security.Security)在代码中设置属性和提供程序(通常在文件中配置)。因此,至少在此期间,我计划编写一个类,该类将在启动后设置我的JVM特定安全配置(基本上覆盖该文件为其他JVM提供的默认配置)。虽然此解决方案的明显缺点是不会外化此JVM的安全配置,但该解决方案确实为我提供了一种设置JVM特定属性和提供程序的方法,而不会影响在同一JDK上运行的其他JVM的配置。
我感谢别人给予的时间和考虑。谢谢=)
答案 0 :(得分:11)
查看OpenJDK source,您无法更改java.security
文件的加载。但是,该文件有一个名为security.overridePropertiesFile
的属性,如果设置为true
(因为它在我当前的vanilla安装中),则允许您加载通过系统属性命名的其他安全属性文件java.security.properties
。另请注意,命令行语法遵循与策略文件类似的模式,其中=
指定其他配置,==
指定完整的替换配置。
答案 1 :(得分:7)
也许this thread上接受的答案会帮助你;基本上它表示您需要指定自己的策略文件,最终调用应如下所示:
java -Djava.security.manager -Djava.security.policy=/some/path/my.policy
答案 2 :(得分:4)
您只需设置系统属性-Djava.security.properties = *****以指定要加载的安全属性,但在使用此方法之前,必须设置属性security.overridePropertiesFile = true。 / p>