Хранение файла настроек в веб-приложении - PullRequest
1 голос
/ 22 августа 2010

Есть ли какие-либо рекомендации о том, как сохранить файл настроек / конфигурации уровня приложения в проекте J2EE? У меня есть веб-проект, который имеет зависимости, которые должны записывать в журналы, и локальный файл настроек. Есть ли способ сохранить файл настроек в локальном каталоге и сделать его доступным для записи?

[Некоторые из зависимостей: hibernate и gridgain, поэтому они создают много журналов]

Я бы не стал жестко кодировать расположение файла настроек.

Ответы [ 4 ]

5 голосов
/ 22 августа 2010

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

Помещение их внутрь /WEB-INF важно, поэтому файлы не «доступны» браузеру.


Другим способом может быть добавление параметра в конфигурацию web.xml, где вы указываете расположение ваших файлов конфигурации, чтобы они не находились в каталоге webapps. Вы можете сделать это, добавив context-param. Например:

<context-param>
    <param-name>configuration</param-name>
    <param-value>/var/myapp/config</param-value>
</context-param>

Это значение будет отображаться для вашего веб-приложения в качестве параметра инициализации контекста сервлета с именем configuration . Затем вы можете использовать его как базовый путь для чтения ваших файлов конфигурации (получите значение, вызвав метод getInitParameter из ServletContext).

Но это будет работать только для конфигурационных файлов, которые не нужны в classpath.

2 голосов
/ 22 августа 2010

Просто добавьте путь к файлам конфигурации в classpath веб-приложения . Это общий подход, и многие API также предназначены для загрузки конфигурации из пути к классам. Если вы загружаете эти файлы вручную, вы можете использовать ClassLoader#getResourceAsStream(), чтобы получить InputStream ресурса classpath.

Во-первых, создайте фиксированный путь где-нибудь за пределами каталога веб-приложения, чтобы добавить файлы конфигурации, например, /var/webapp/config. Затем настройте сервлет-контейнер для включения этого пути в путь к классам. В случае Tomcat вы можете указать его в свойстве shared.loader или common.loader файла /conf/catalina.properties.

0 голосов
/ 31 августа 2018

Хранение настроек в базе данных лучше, поскольку приложение должно поддерживать кластеризацию

0 голосов
/ 22 августа 2010

Согласовано со Soundlink.

Вы также можете сохранить свои настройки в базе данных . Когда ваш сервлет запускается, данные настроек должны быть загружены из базы данных.

  • Pro: не нужно поддерживать файлы конфигурации, которые не являются Java EE стандарт.
  • con: работает после запуска сервлета до.
...