Создание виртуальных хостов в Wildfly/Undertow программно

Я создаю приложение (развернутое в Wildfly), которое должно создавать виртуальные хосты в зависимости от того, как клиенты регистрируются в службе. Например, приложение / служба по умолчанию работает на хосте main.exampledomain.com. Когда клиент A подписывается на услугу, мне нужно создать виртуальный хост A.exampledomain.com, а A.exampledomain.com должен обслуживать точно такой же WAR/Web Content, что и main.exampledomain.com.

Я могу сделать это с помощью конфигурации "хоста" в standalone.xml -> подсистеме, с дополнительной конфигурацией виртуального хоста в jboss-web.xml (для всех WAR-ов, которые должны быть развернуты).

Есть ли программный / динамический способ сделать это? Возможно ли это, и я должен сделать это с API-интерфейсом undertow? ИЛИ Это возможно, и я должен использовать API управления Wildfly?

Я просмотрел некоторые темы, связанные с этим, и нашел только обсуждения и ответы по настройке, но не программным способом сделать это.

Спасибо и наилучшие пожелания, GPN

1 ответ

Решение

Есть два способа сделать то, что вам нужно.

1) Используйте API управления, который может быть вызван через собственный API CLI, REST, Java ManagementClient. Это, безусловно, будет самым простым, поскольку все, что вам нужно будет сделать, это вызвать несколько команд для настройки дополнительных хостов и их конфигурации.

2) Перейдите с пользовательским расширением / ServiceActivator. Таким образом, ваш код будет работать как подсистема внутри WildFly. При таком подходе вы можете внедрить UndertowService (сервис нижнего уровня верхнего уровня) в службу MSC и просто вызывать методы для создания серверов / хостов / слушателей, ... в теме.

Если ваша настройка просто идет и настраивает несколько дополнительных вещей в подсистеме undertow, то, вероятно, самый простой способ управления API. Однако, если вы хотите сделать более глубокую интеграцию и иметь больше власти над тем, что настроено и как я бы поступил с пользовательской подсистемой. Это позволит вам делать еще более интересные вещи, такие как, например, изменение развертывания во время его развертывания или изменение некоторых параметров для запуска приложений и т. Д. И т. Д.

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