сохранение состояния корпоративного приложения на сервере Java EE (например, для индекса lucene) - PullRequest
2 голосов
/ 13 августа 2010

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

Ответы [ 3 ]

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

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

По умолчанию классы в пакете 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.

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

  • Запись в FS не идеальна для переносимости приложений. Предпочитаю запись в базу данных, если это возможно
  • Использование java.io из EJBs теоретически запрещено .
2 голосов
/ 13 августа 2010

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

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

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

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

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

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

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

...