Сохранение состояния корпоративного приложения на сервере 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/, а затем сделать это расположение настраиваемым.
Вы можете прочитать больше здесь: