Развертывание Wildfly во временную папку

Я столкнулся с небольшой странной проблемой при развертывании веб-службы в файл WAR.

Если я разверну приложение через IDE Netbeans, оно будет находиться в каталоге \ standalone \ deployments.

Однако, если я развертываю файл войны из консоли администратора, он всегда развертывается в каталоге \ standalone \ tmp.

Пожалуйста, помогите по этому вопросу. Развертывание должно происходить только в каталоге \ standalone \ deployments.


person Ajay Sharma    schedule 23.12.2016    source источник


Ответы (1)


Развертывание должно проходить только в каталоге \ standalone \ deployments

Вы совершенно не правы.

Это не проблема. Что есть, то есть.

  • Папка standalone / deployment стоит там только для функциональности «горячего развертывания», доступной только в автономном режиме. Итак, Netbeans использует его. Вы можете сделать то же самое, просто сохранив EAR или WAR в автономном режиме / развертывании, и сервер выберет его. (интервал сканирования по умолчанию 5 сек.)
  • но консоль администратора или интерфейс командной строки - это единственный (и стандартный) способ развертывания приложения в домене. В режиме домена папка развертывания не используется и сканер развертывания отсутствует. Затем, когда вы используете консоль, это происходит обычным образом - развертывается как в домене, независимо от того, является ли он доменом или автономным сервером.

Обновлено / продолжение:

Как правило, лучше хранить файл (ы) .properties вне развертывания в отдельном месте. Их основная идея - иметь возможность изменять свойства без перекомпоновки и повторного развертывания приложения. Обычно свойства различаются в разных средах (DEV / UAT / PROD)

Итак, есть 2 самых популярных решения:

  • хранить свойства в другом месте, добавить это место в путь к классам и получить к ним доступ через механизм ClassLoader.getResourceAsStream()

  • сохранить свойства в другом месте, передать это местоположение через системную (или -D) переменную и получить к ним доступ как к файлу. для JBoss вы можете разместить свои .properties в каталоге конфигурации. уже есть переменная JBoss. Вид jboss.config.dir (или такой, вы можете найти его в консоли администратора, у меня сейчас нет JBoss).

Но, конечно, когда-то все еще требовался доступ к ресурсам внутри WAR / EAR - в этой ситуации это почти то же самое, что и первое решение выше.

Просто убедитесь, что ваши файлы .properties доступны через ClassLoader (в пути к классам) и используйте их из ClassLoader.getResourceAsStream (или, если вы используете Spring, укажите его как «classpath:», а не как «file:».

person Vadim    schedule 23.12.2016
comment
Большое вам спасибо. Это работает, но у меня есть файл .properties в папке ресурсов проекта. После развертывания выдает ошибку FileNotFoundException, которая не возникает при горячем развертывании. Также, когда решение будет передано клиенту, такой подход будет неприемлемым. Не могли бы вы рассказать, как этого можно достичь с помощью развертывания консоли администратора. - person Ajay Sharma; 27.12.2016