Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java参数指定JVM的Java.Security文件_Java_Security_Jvm_Weblogic - Fatal编程技术网

Java参数指定JVM的Java.Security文件

Java参数指定JVM的Java.Security文件,java,security,jvm,weblogic,Java,Security,Jvm,Weblogic,我正在寻找一个java参数(或者一些不同的方法)来允许我将JVM使用的文件指定为java.security文件,而不是使用JDK中的文件(在JRE库中) 为了让您了解更多的上下文,我正在使用一个WebLogic服务器,它是由其他人设置的,并且在同一个JDK上运行两个(或更多)不同的JVM。我们现在遇到了一个问题,我在一个JVM上所做的工作需要一个与另一个JVM当前使用的不同的java.security文件。我希望有一种方法可以让我的JVM指向一个新的java.security文件,而不必指向一个

我正在寻找一个java参数(或者一些不同的方法)来允许我将JVM使用的文件指定为java.security文件,而不是使用JDK中的文件(在JRE库中)

为了让您了解更多的上下文,我正在使用一个WebLogic服务器,它是由其他人设置的,并且在同一个JDK上运行两个(或更多)不同的JVM。我们现在遇到了一个问题,我在一个JVM上所做的工作需要一个与另一个JVM当前使用的不同的java.security文件。我希望有一种方法可以让我的JVM指向一个新的java.security文件,而不必指向一个全新的JDK(由于空间限制,我们希望避免上传特定于每个JVM的JDK)

我意识到服务器的设置并不理想,但是完全重新安排现有的设置是不可行的,我也不能这样做。因此,我希望有人能有一个创造性的解决方案,允许多个JVM运行在同一个JDK上,但具有不同的安全配置

我一直在努力寻找解决方案,但我的谷歌Foo似乎没有我希望的那么强大。希望你们中的一个能找到答案

非常感谢

编辑
很抱歉,也许我的原始帖子不清楚,但我感兴趣的是指定java.security文件,通常也称为java主安全属性文件,而不是同一目录中的java.policy文件

我的解决方案

我将在这里发布我的解决方案,仅供其他可能陷入类似情况的人参考

由于我似乎找不到在启动时指定的参数,我决定放弃java.security属性文件。可以使用安全类(java.Security.Security)在代码中设置属性和提供程序(通常在文件中配置)。因此,至少在此期间,我计划编写一个类,在启动后设置JVM特定的安全配置(基本上覆盖文件为其他JVM提供的默认配置)。虽然此解决方案的明显缺点是没有将此JVM的安全配置外部化,但该解决方案确实为我提供了一种设置JVM特定属性和提供程序的方法,而不会影响运行相同JDK的其他JVM的配置


我感谢他人给予我的时间和考虑。谢谢=)

也许你的答案会对你有所帮助;基本上,它说您需要指定自己的策略文件,最后的调用应该如下所示:

java -Djava.security.manager -Djava.security.policy=/some/path/my.policy

查看,您无法更改
java.security
文件的加载。但是,该文件有一个名为
security.overridePropertiesFile
的属性,如果将该属性设置为
true
(在我当前的普通安装中),则允许您加载通过名为
java.security.properties
的系统属性指定的附加安全属性文件。还要注意,命令行语法遵循与策略文件类似的模式,其中
=
指定附加配置,而
=
指定完整的替换配置

您只需设置系统属性-Djava.security.properties=****即可指定要加载的安全属性,但在使用此方法之前,必须先设置属性security.overrideProperties file=true。

谢谢您,Sanjay。这似乎是一个很好的开始,但如果我错了,纠正我的方法是指定一个.policy文件?有没有一种方法可以将其应用于.security文件(即配置安全提供程序的主属性文件等)?james,找到这个文件的源代码的方法!今天,当我有机会的时候,我会尝试这个方法,让每个人都知道结果。尝试这个方法不会带来任何结果的改变。JVM似乎没有覆盖或附加到安全文件中,只是使用默认文件。这似乎在本文中有所介绍:不确定早期版本,但如果您查看java 8中java.security文件顶部的注释,一切都很清楚:
-Djava.security.properties=
附加到主安全属性文件。如果两个属性文件都为同一个键指定了值,则会选择命令行属性文件中的值,因为它是最后加载的值。此外,如果您指定
-Djava.security.properties==
(2等于),则该属性文件将完全覆盖主安全属性文件。
-Djava.security.debug=properties以这种方式对覆盖文件的加载进行故障排除时,也可能很方便