Где веб-приложение Java должно хранить свои данные?

Мое веб-приложение Java (myapp.war) ist, развернутый путем размещения его в webapps direcotry на Tomcat на Ubuntu 10.04.

Это приложение должно сохранить некоторые данные в файлах. Но пользователь, который выполняет Tomcat (tomcat6) не имеет никакого доступа для записи к корневому каталогу /usr/share/tomcat6/ и никакой доступ для записи к текущей работе direcotry /var/lib/tomcat6/, так как оба принадлежат root.

Таким образом, где веб-приложение должно хранить свои данные? Я надеюсь, что это не извлеченный архив в веб-приложениях direcotry. Этот мог быть удален очень легко случайно. И Tomcat может быть настроен, для не извлечения .war файлов. Затем был бы не извлеченный direcotry.

Возможно, /var/lib/tomcat6/ должен принадлежать пользователю tomcat6 муравей это - ошибка в Ubuntu?

18
задан Pascal Thivent 3 July 2010 в 18:40
поделиться

5 ответов

Я нашел решение на Launchpad. / var / lib / tomcat6 / webapps / доступен для записи. Это означает, что работает следующее:

File myFile = new File("webapps/myfile.txt");
2
ответ дан 30 November 2019 в 09:30
поделиться

Если файлы не должны сохраняться дольше, чем жизненный цикл контекста сервлета, контейнер сервлета предоставляет частный временный каталог для каждого контекста сервлета, указанного атрибутом javax.servlet.context.tempdir .

См. Спецификация сервлета 2.3 , глава 3 Контекст сервлета

3.7.1 Временная работа Справочники

Удобство временного каталог хранения требуется для каждого контекст сервлета. Контейнеры сервлетов должен предоставить частный временный каталог для контекста сервлета и сделать его доступным через javax.servlet.context.tempdircontext атрибут. Объект, связанный с атрибут должен иметь введите java.io.File

4
ответ дан 30 November 2019 в 09:30
поделиться

Я не видел никаких конкретных указаний о том, где вы должны хранить такие данные локально - вероятно, потому, что обычно вы храните такие данные в базе данных.

Когда мне нужно хранить такие быстрые и грязные данные, я храню их в файловой системе, специально предназначенной для этих данных, чтобы изолировать их от других областей, где они могут попасть в другие действия. До сих пор у меня не было никаких проблем с этим подходом. Кроме того, если данные важны, убедитесь, что вы храните их там, где есть резервное копирование :)

.
0
ответ дан 30 November 2019 в 09:30
поделиться

Я думаю, это зависит от того, с какими данными вы имеете дело. В большинстве случаев данные попадают в базу данных просто потому, что выполнить CRUD быстро и легко. Если вы хотите сохранить локализованную конфигурацию пользователя и вам все равно, насколько она переносима, возможно, вы можете сохранить ее в user.home , я сделал это для одного из моих проектов, и это отлично работает. С учетом всего сказанного, я действительно не думаю, что в этом есть какая-то лучшая практика, и база данных кажется наиболее очевидным выбором, потому что вы можете выполнять множество различных задач против нее, и большинство из них бесплатны для начала. :)

2
ответ дан 30 November 2019 в 09:30
поделиться

Отвечая на свой вопрос, Витек заявил, что / var / lib / tomcat6 / webapps / доступен для записи - по крайней мере, при установке его версии Ubuntu. В моей системе RHEL 5.2 / var / lib / tomcat даже не существует, поэтому нет подкаталога webapps, доступного для записи или нет, что приводит к моему ответу.

Q: Где веб-приложение Java должно хранить свои данные?
A: Где бы вы ни сконфигурировали его для хранения своих данных.

Сделайте расположение настраиваемым в web.xml как или в файле myApplication.properties.

  • Я могу положить его на свой ящик, где хочу, системные администраторы могут разместить его там, где они хотят, в производственной системе.
  • Вы можете передумать позже.
  • Вам не нужны символические ссылки (которые волшебным образом исчезли для меня раньше, нарушив работу системы).
  • У вас может быть несколько наборов тестовых данных, и просто указать конфигурацию в зависимости от того, какой из них вы хотите.
  • Вы можете положить его везде, где есть место на диске.
  • Вы собираетесь передумать позже.
3
ответ дан 30 November 2019 в 09:30
поделиться
Другие вопросы по тегам:

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