У меня есть различные 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
Если вы используете стандартный пакет maven2 war, ваш файл file1.xml копируется в каталог WEB-INF / classes внутри вашего файла war.
Вы можете получить доступ к этому файлу через путь к классам.
URL resourceUrl = URL.class.getResource("/WEB-INF/classes/file1.xml");
File resourceFile = new File(resourceUrl.toURI());
Если вы поместите файл в каталог под WEB-INF (или внутри самого WEB-INF), вы можете прочитать его, используя метод ServletContext
getResourceAsStream
:
try {
InputStream is = context.getResourceAsStream("/WEB-INF/file1.xml");
...
} catch (IOException e) {
...
}
Вы можете поместить информацию о пути в файл свойств, который находится в пути / WEB-INF / classes - и загрузить эту информацию в приложение во время выполнения.
Чтобы иметь другое значение для этого свойства пути, вы можете использовать опцию профилей maven или любой другой инструмент сборки - так, чтобы другая среда приводила к тому, что файл WAR имел правильное значение свойств для пути, подходящего для этой среды.