我需要在config.properties中读取一些配置。 我愿意接受任何有关要求的方式。
我希望它在我的war文件之外,以便它可以轻松更改,而且不需要重建。
我到处搜索但是找不到怎么做,我确定这是java 101,但我无法想象。
我已经尝试了类加载器,但这似乎只是从战争内部加载资源,我无法找到如何将战争加载到我的服务器中的位置从那里读取它。 我也找不到通过命令行参数传递参数作为soap端点的方法,我可以在代码中的任何地方访问它?
我看到了Where to place and how to read configuration resource files in servlet based application? 我想使用文件系统方法,但我不想要配置文件的硬编码路径。
我只想要一些简单易行的东西,我知道有一些东西,但我找不到它。
答案 0 :(得分:0)
我希望它在我的war文件之外,以便它可以轻松更改,而且不需要重建。
可能不是您想要的方式,但为了回答这个问题,我们有类似的情况,我们的Web应用程序部署在位于/apps/servers/webserver-1
,/apps/servers/webserver-2
位置的Web服务器中。我们将属性放置在其他位置,例如/apps/my-web-app1/app.properties
和/apps/my-web-app2/app.properties
。
现在关于这个结构的好处是,如果我需要更新任何属性,我只需在相对属性中进行编辑并重新启动我的Web服务器。这样做的缺点是我必须将路径传递给这些属性文件作为我的Web服务器启动脚本的系统参数(在我的例子中,这些是catalina.sh
文件,是的我使用的是tomcats)。
所以我的catalina.sh在某处就像
那样export JAVA_ARGS `-Dpath.to.properties.of.my-web-app2=/apps/my-web-app2/app.properties` ....
要阅读这些属性,我有一个Property Utility函数,可以被每个应用程序的StartupServlets
调用。这个函数的目的是通过读取系统属性path.to.properties.of.my-web-app2
来简单地打开这个文件,并将这些属性放在缓存(在我的例子中是一个HashMap)之类的地方,我可以在整个应用程序中轻松访问它们。 / p>
答案 1 :(得分:0)
使用此功能对您的问题很有帮助。 我认为。 在一个方法abcd
public static String abcd(String one) {
properties = new Properties();
properties.load(<classNmae>.class.getClassLoader().getResourceAsStream("AppResources.properties"));
return properties.getProperty(one);
调用此代码
String fileLocation = abcd("internal property file");
Properties properties = new Properties();
FileInputStream fis = new FileInputStream(fileLocation );
properties.load(fis);
fis.close();
acd = (String)properties.get("acd");
注意: AppResources.properties具有外部文件位置D:/aaa.properties文件 然后在第二种方法中读取外部文件的属性