将xml文件存储在资源文件夹(WAR)中,从代码中读取

时间:2010-06-04 09:36:29

标签: java resources external war

我的'src / main / recources'文件夹中有不同的XML文件,我想从我的网络应用程序中读取它们。

File f = new File("file1.xml");
f.getAbsolutePath();

代码在WebService中调用,当我查看Tomcat-server-output时,会打印出'C:\ Users \ Administrator'。我目前的解决方案是将'file1.xml'文档放在WAR之外的'C:\' - 文件夹中,但这样我的WAR不可转让。

我也试过

    <bean name="webService">
        <property name="document">
         <value>classpath:file1.xml</value>
        </property>
    </bean>

但是只打印出“classpath:file.xml”而不解析它。

此致 皮特

3 个答案:

答案 0 :(得分:5)

如果您使用的是标准的maven2 war包装,则会将file1.xml复制到warfile中的WEB-INF / classes目录中。

您可以通过类路径访问此文件。

URL resourceUrl = URL.class.getResource("/WEB-INF/classes/file1.xml");
File resourceFile = new File(resourceUrl.toURI());

答案 1 :(得分:0)

如果您将文件放在WEB-INF(或WEB-INF本身)下的目录中,那么您可以使用ServletContext的{​​{1}}方法读取它:

getResourceAsStream

答案 2 :(得分:0)

您可以将路径信息放在路径/ WEB-INF / classes中的属性文件中,并在运行时在应用程序中加载此信息。

要使此路径属性具有不同的值,您可以使用maven配置文件或任何其他构建工具的选项 - 以便不同的环境导致WAR文件具有适合该环境的路径的正确属性值。