如何阅读config.properties j2ee

时间:2016-09-01 07:25:39

标签: java java-ee

我需要在config.properties中读取一些配置。 我愿意接受任何有关要求的方式。

我希望它在我的war文件之外,以便它可以轻松更改,而且不需要重建。

我到处搜索但是找不到怎么做,我确定这是java 101,但我无法想象。

我已经尝试了类加载器,但这似乎只是从战争内部加载资源,我无法找到如何将战争加载到我的服务器中的位置从那里读取它。 我也找不到通过命令行参数传递参数作为soap端点的方法,我可以在代码中的任何地方访问它?

我看到了Where to place and how to read configuration resource files in servlet based application? 我想使用文件系统方法,但我不想要配置文件的硬编码路径。

我只想要一些简单易行的东西,我知道有一些东西,但我找不到它。

2 个答案:

答案 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文件 然后在第二种方法中读取外部文件的属性