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

Reading properties file from server location

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

我可以使用以下方法从 /WEB_INF/classes 成功读取:

InputStream systemParamInputStream = getClass().getClassLoader().getResourceAsStream("ldap.properties");

但是,我希望将此文件放在服务器上的某个位置,以便支持人员在应用程序投入生产时对其进行配置。

我的自由配置文件 server.xml 位于:C:\eclipse\runtime\usr\servers\tmpServer。 这很好,因为那里的任何其他地方确实如此。

我正在使用 java.util.Properties:

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

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

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

InputStream systemParamInputStream=new FileInputStream(filePath);

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

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

你会发送 filePath 作为程序参数 -DfilePath=c:\

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. 由于使用 folder 元素 (cvc-complex-type.2.4.a: Invalid content was found starting with element 'folder'. One of '{fileset}' is expected.),可能会在 Eclipse 中导致 server.xml XML 验证错误。我尝试使用 fileset,但无法正常工作。