Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.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/2/shell/5.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属性文件_Java_Shell_Properties - Fatal编程技术网

在应用程序启动时参数化Java属性文件

在应用程序启动时参数化Java属性文件,java,shell,properties,Java,Shell,Properties,我继承的应用程序由一个属性文件配置,该文件通过shell脚本中的-D选项传入: *-Dcom.gtnet.systemProperties.override.url=文件:/usr1/app/gtx/config/override.properties_$INST* 我们运行这个应用程序的多个并发实例,目前每个实例都有一个单独的属性文件。每个文件的唯一区别是日志文件的名称。因此,我们最终得到了分布在多个服务器上的多个几乎相同的文件 我的问题是,是否有任何方法可以参数化或扩展属性文件,使我们只需传

我继承的应用程序由一个属性文件配置,该文件通过shell脚本中的-D选项传入:

*-Dcom.gtnet.systemProperties.override.url=文件:/usr1/app/gtx/config/override.properties_$INST*

我们运行这个应用程序的多个并发实例,目前每个实例都有一个单独的属性文件。每个文件的唯一区别是日志文件的名称。因此,我们最终得到了分布在多个服务器上的多个几乎相同的文件

我的问题是,是否有任何方法可以参数化或扩展属性文件,使我们只需传入实例的名称并在文件中使用它?因此,每个服务器只有一个文件。我们没有修改应用程序代码的选项,我们需要在应用程序启动时传入文件。

内置既不支持
#包含
也不支持变量替换

如果您碰巧知道应用程序没有使用
Properties.load
,而是它自己的逻辑,那么您可以查看is是否这样做。。。但是,除非现有支持,否则您必须修改应用程序代码


既然您提到修改应用程序代码不是一个选项。。。您应该考虑使用属性文件生成器,并管理用于生成属性文件的模板。因此,您仍然有一堆完全扩展的属性文件,但它们将使用一个模板文件(可能是一个参数值文件)和属性文件生成器来控制。

Java不支持此功能。如果你真的无法更改应用程序,你可以使用启动器将其包装起来,该启动器将读取参数化属性文件,解析参数,并写出一个临时属性文件,其中包含已解析的参数;然后使用该临时文件调用应用程序。

您不能使用系统属性吗?就像在linux中一样,导出INST=1
,并将其与您在其中使用的命令-Dcom.gtnet.systemProperties.override.url=文件:/usr1/app/gtx/config/override.properties_$INST*