Сохраните XML-файлы в папке ресурсов (ВОЙНА), читайте из кода

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

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

Код вызывается в WebService, и это распечатывает 'C:\Users\Administrator', когда я смотрю в Выводе сервера Tomcat. Мое текущее решение состоит в том, чтобы поместить ''-документы file1.xml за пределами ВОЙНЫ, в 'C:\ '-папка, но этот путь моя ВОЙНА не передаваем.

Я также попробовал

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

Но это просто распечатывает "classpath:file.xml", не анализируя его.

С уважением, Pete

5
задан JavaPete 4 June 2010 в 09:36
поделиться

3 ответа

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

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

URL resourceUrl = URL.class.getResource("/WEB-INF/classes/file1.xml");
File resourceFile = new File(resourceUrl.toURI());
5
ответ дан 14 December 2019 в 19:01
поделиться

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

try {
  InputStream is = context.getResourceAsStream("/WEB-INF/file1.xml");
  ...
} catch (IOException e) {
  ...
}
0
ответ дан 14 December 2019 в 19:01
поделиться

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

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

0
ответ дан 14 December 2019 в 19:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: