属性文件在.WAR文件之外

时间:2013-04-02 21:24:05

标签: java

我需要能够读取属于我的战争之外的属性文件。我的问题是需要一个解决方案,允许我告诉我的war文件我的属性文件所在的位置。这可以通过bashrc变量和windows env变量来完成吗?

我需要这样做,因为我需要能够将属性文件放在可能远离war文件的不同位置。

我正在努力想出一个解决方案。

3 个答案:

答案 0 :(得分:1)

这将取决于属性文件的用途。有些库可以在命令行上设置它,而其他库则允许您在代码中显式加载它们。

如果是后者,System.getProperties()可以证明是有用的,因为它允许您使用'-D'标志读取传递给JVM的属性。例如

java -jar -Dfilelocation="yourfilelocation" yourapp.jar

将使用字符串'yourfilelocation'填充系统属性'filelocation'。然后可以在您的代码中使用它来加载属性文件(或者您想用它做什么)。

由于您在某种应用程序服务器中运行,因此有不同的方法可以实现此目的。对于jetty,您可以将它们放在start.ini中(或者只是在启动jetty时在命令行上传递它们)

其中tomcat使用名为JAVA_OPTS的环境变量,所以

JAVA_OPTS='-Dfilelocation=yourfilelocation' start.sh

在启动tomcat时设置系统属性。

答案 1 :(得分:0)

一种方法是通过传递java参数或设置环境varialble来提供特定位置,并从app中读取它以确定位置

并作为后备(默认)应用程序应宣布查看

${user.home}/appname/some.peroperties

答案 2 :(得分:0)

您可以定义可能的目录列表......并尝试阅读每个目录......

我有一个解决方案,使用默认目录结构读取文件系统中的属性文件。

例如:c:\ properties \ code-suit \ prd \ application.properties

其中: code-suit是由应用程序名称定义的变量; prd是我将使用的环境

祝你好运