Сохранение состояния корпоративного приложения на сервере Java EE (например, для индекса lucene)

Мне нужно создать индекс Lucene при запуске приложения Java EE, но я не хочу сам определять местоположение индекса в файловой системе. Как приложения обычно хранят любые файлы, созданные во время работы, есть ли какое-либо хранилище, предоставляемое механизмом для каждого приложения, и т. Д., Которое я могу использовать.

3 ответа

Решение

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

По умолчанию классы в java.io пакет разрешает относительные пути к текущему рабочему каталогу - то есть к месту в файловой системе, откуда java Команда была вызвана - что вы можете получить с помощью user.dir системное свойство:

String curDir = System.getProperty("user.dir"); 

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

new File(System.getProperty("my.directory" + File.separator + "xxx");

Где недвижимость my.directory будет установлен в скрипте запуска сервера приложений, например, при условии, что JBoss установлен под /opt, с помощью -Dmy.directory=/var/opt/jboss/<somedir> быть FHS-совместимым.

Просто имейте в виду, что:

  • Запись в ФС не идеальна для переносимости приложений. Предпочитаю запись в базу данных, если это возможно
  • С помощью java.io от EJBs в теории запрещено.

Обычно вы создаете индекс Lucene на серверах приложений, таких как JBoss и Tomcat, в текущем каталоге (.), Папка индекса создается в папке bin, что вовсе не является хорошей идеей.

Вы можете либо сохранить ваши индексные файлы в базе данных (или практически на любом другом устройстве хранения) с помощью Compass, либо сохранить их по пути в файловой системе.

Насколько я знаю, в контейнерах Java EE нет специального хранилища для каждого приложения.

Я бы сказал, что лучший способ - сохранить данные по пути по умолчанию в файловой системе, например /var/lib/your_application/, а затем сделать это расположение настраиваемым.

Вы можете прочитать больше здесь:

http://www.pathname.com/fhs/pub/fhs-2.3.html

Другие вопросы по тегам