Хранить XML-файлы в папке ресурсов (WAR), читать из кода - PullRequest
5 голосов
/ 04 июня 2010

У меня есть разные XML-файлы в моей папке 'src / main / recources', и я хотел бы прочитать их из моего веб-приложения.

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

Код вызывается внутри WebServiceэто выводит «C: \ Users \ Administrator», когда я заглядываю внутрь Tomcat-server-output.Мое текущее решение состоит в том, чтобы поместить файлы file1.xml за пределы WAR, в папку C: \, но таким образом моя WAR не подлежит передаче.

Я также пытался

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

Но это просто выводит "classpath: file.xml" без его анализа.

С уважением, Пит

Ответы [ 3 ]

5 голосов
/ 04 июня 2010

Если вы используете стандартную военную упаковку maven2, ваш file1.xml копируется в каталог WEB-INF / classes в вашем warfile.

Вы можете получить доступ к этому файлу через classpath.

URL resourceUrl = URL.class.getResource("/WEB-INF/classes/file1.xml");
File resourceFile = new File(resourceUrl.toURI());
0 голосов
/ 04 июня 2010

Вы можете поместить информацию о пути в файл свойств, который находится в пути / WEB-INF / classes - и загрузить эту информацию в приложение во время выполнения.

Чтобы иметь другое значение для этого свойства пути, вы можете использовать опцию профилей maven или любой другой инструмент построения - так, чтобы в другой среде файл WAR имел правильное значение свойств для пути, подходящего для этой среды.

0 голосов
/ 04 июня 2010

Если вы поместите файл в каталог под WEB-INF (или внутри самого WEB-INF), то вы можете прочитать его, используя метод ServletContext getResourceAsStream:

try {
  InputStream is = context.getResourceAsStream("/WEB-INF/file1.xml");
  ...
} catch (IOException e) {
  ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...