【问题标题】:xml properties file location in web java appWeb Java应用程序中的xml属性文件位置
【发布时间】:2011-04-11 21:30:39
【问题描述】:

我在 java 中有一个 web 应用程序,在一个 servlet 中我需要从 xml 文件加载属性。

代码是

XMLReader reader = XMLReaderFactory.createXMLReader();
...       
FileInputStream fis = new FileInputStream("myconf.xml");
reader.parse(new InputSource(fis));

我的问题是:myconf.xml 文件应该放在war 文件的什么位置以便servlet 可以找到它?

谢谢

【问题讨论】:

    标签: java xml file servlets properties


    【解决方案1】:

    不要将FileInputStream 与相对路径一起使用。您将依赖于您完全无法从 Java 代码内部控制的当前工作目录。而是将文件放在类路径中并使用ClassLoader#getResourceAsStream()

    ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
    InputStream input = classLoader.getResourceAsStream("/myconf.xml");
    

    此示例要求文件位于类路径的根目录中。从 IDE 的角度来看,这可以是 src 文件夹的根目录或 /WEB-INF/classes 文件夹的根目录。您甚至可以将它放在外部其他地方,并将其(绝对!)路径添加到服务器配置中某处的运行时类路径。

    另见:

    【讨论】:

    • 这里还要注意ClassLoader的获取方式。这是正确的方法。我经常看到的错误方式是这样的:this.getClass().getClassLoader()。
    • 在多个分层类加载器起作用的(Web)应用程序中,这确实是首选方式。您不应依赖当前所在类的类加载器。在具有单个类加载器的“简单”(桌面)应用程序中,它不会造成损害。
    猜你喜欢
    • 2013-06-20
    • 1970-01-01
    • 2015-01-18
    • 1970-01-01
    • 2010-10-04
    • 2014-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多