2016-01-25 4 views
2

Я работаю над проектом Java и имею проблему с развертыванием Wildfly 10. Я не нашел решения в своей документации и был бы рад помочь.JBoss Wildfly - развертывание временных файлов. Как насчет свойств?


Когда я развернуть .WAR, Wildfly создает временную папку для хранения файлов взрывались:

./standalone/tmp/vfs/temp/tempb75b67d7adb84a3d/web.war-47f6d3d54946006d/ 

и, как только я Wildfly остановить с /etc/init.d/wildfly stop, все эти временные файлы мгновенно удалены с диска.

Проблема:

войны содержит по умолчанию .properties файлы, которые должны быть изменены/конфигурируются администратором. Поскольку файлы удаляются при каждом развертывании, в настоящее время это невозможно.

Вопросы:

  • Есть ли способ иметь Wildfly развертывает .WAR на постоянную папку (по аналогии с Apache Tomcat)?
  • Это хорошая практика J2E, чтобы сделать это, учитывая, что клиент хочет развернуть этот .WAR для инфраструктуры облаков Debian, но также иногда и для Windows Server?
  • Какие альтернативы мы должны учитывать для хранения значений .properties?

ответ

4

WildFly поддерживает разрозненные (разнесенные) развертывания. Посмотрите на $JBOSS_HOME/standalone/deployments/README.txt для деталей. В принципе, вы можете просто разархивировать свою WAR в подкаталог и добавить файл маркера для его развертывания.

Однако любая информация о конфигурации, которая зависит от данной среды хоста, не должна помещаться в WAR. WAR - это артефакт времени компиляции, который следует считать неизменным во время выполнения. (Тот факт, что некоторые веб-контейнеры распаковывают WAR и выставляют его внутренности, представляет собой деталь реализации, на которую вы никогда не должны полагаться.)

Вместо этого вы можете определить данные конфигурации через свойства системы, переменные среды, записи JNDI, что угодно.

очень простой подход, который я часто использую с WildFly является -P вариант:

cd $JBOSS_HOME/bin 
./standalone.sh -P myconfig.properties 

где myconfig.properties является простой Java свойства файла. WildFly читает этот файл очень рано на этапе запуска и устанавливает все свойства как свойства системы.

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

app1.jdbc.url = jdbc:postgresql://localhost/app1 
app2.jdbc.url = jdbc:postgresql://localhost/app2 
Смежные вопросы