从服务器位置读取属性文件

时间:2015-02-24 10:20:25

标签: java io websphere-liberty

如何从服务器上的某个位置读取文件?

我可以使用:

成功读取/ WEB_INF / classes
InputStream systemParamInputStream = getClass().getClassLoader().getResourceAsStream("ldap.properties");

但是,我想将此文件放在服务器上的某个位置,以便在应用程序在生产环境中生效时由支持人员配置。

我的自由配置文件server.xml位于此处:C:\ eclipse \ runtime \ usr \ servers \ tmpServer。 这很好,就像那里的任何其他位置一样。

3 个答案:

答案 0 :(得分:1)

我正在使用java.util.Properties:

Properties props = new Properties();
props.load(new FileReader("path to your file"));

答案 1 :(得分:1)

“WEB-INF / classes”是类路径的一部分 您可以通过向服务器的类路径添加另一个文件夹来继续读取文件。在该文件夹中,您将拥有配置文件。

但你也可以像这样直接访问文件:

InputStream systemParamInputStream=new FileInputStream(filePath);

诀窍是找到一种配置文件filePath的简洁方法,因为硬编码并不好。这是一个选项:

new FileInputStream(System.getProperty("filePath","C:\\eclipse\\runtime\\usr\\servers\\tmpServer"));

然后您将filePath作为程序参数-DfilePath=c:\\

发送

答案 2 :(得分:1)

This thread显示了不同的做法。

我成功尝试的是在server.xml中将文件夹指定为库,以便它可以在类路径中使用:

<library id="configResources">
    <folder="${server.config.dir}/config" />
</library>

<application location="foo.war">
    <classloader privateLibraryRef="configResources" />
</application>

关于这种方法的两个小警告:

  1. 需要8.5.5
  2. 由于使用了server.xml元素(folder),可能会导致Eclipse中出现cvc-complex-type.2.4.a: Invalid content was found starting with element 'folder'. One of '{fileset}' is expected. XML验证错误。我尝试使用fileset而不是让它工作。