Hазвертываybt приложения Jmix на сервере WildFly(Jboss)

Очень нужна возможность развертывать приложения Jmix на сервере Jboss. Если возможно, посоветуйте какой сервер можно использовать для одновременного развертывания нескольких приложений на одном сервере. У нас не получилось использовать Tomcat.

Добрый день,

С теоретической точки зрения ваша задача вполне решаема, однако придется переписать много конфигурацией Spring и VAADIN.
Грубо говоря у нас используется Embedded Tomсat (SpringBoot) и на нем крутится VAADIN servlet, потому для решения вашей проблемы вам придется выпилить из Spring Web сам веб через конфигурации.

Если углубиться в этот вопрос, и говорить о чистом VAADIN v24+, то они НЕ советуют использовать спринг бут стартер в связке с WildFly, вместо для JBoss использовать чистый Java EE стартер, потому я тоже не советую делать то, для чего не рассчитывался ни VAADIN, ни Jmix, как минимум потому, что вам самим в будущем придется поддерживать ваш бридж между SpringBoot + Vaadin и WildFly.

С уважением,
Дмитрий

Какой тогда вы посоветуете использовать сервер приложений?
Мы пробовали tomcat - приложения в нем работают будто по очереди. Пока в одном работают - другие висят.
WildFly как вы говорите проблематичен.
Что нам использовать?

Современный вариант

Лучше всего оставаться на embedded tomcat.
Если вас так сильно волнует архитектура - лучше всего почитать документацию Spring Boot.

Не могу взяться советовать как вам лучше делать, но могу сказать что для Spring Boot обычно используют Embedded сервера, например, самые часто используемые - Tomcat( з коробки), Jetty и Netty(Rx).

С учетом что у нас используется Vaadin, самая стандартная схема деплоя - K8s + Application:

  • 1 приложение на 1 Pod
  • Несколько приложений смотрят в 1 LoadBalancer.

Получается стандарные горизонтальные расширения приложения.
Так же делают отдельные performance тесты, после которых делают выводы о вертикальном масштабировании серверов / Pod, хватает ли им ресурсов.

Внешние deployment сервера

Вы можете сделать war файл приложения, который можно положить во внешний Tomcat или Netty. Щас спросил, у нас тестировали такой способ деплоя, он работает:

Alternatively, Spring Boot applications can be packaged as WAR files as well. Follow the instructions in Spring Boot documentation how to do this.

В отличии от JBoss, данные веб сервера не ищут какие то EE - файлы, вероятнее из за которых и падает приложение.

UPD 1:

Только что проверил деплой во внешний томкат:

  1. Проект:
    Jmix version: 2.0.1
    Jmix Studio plugin version: 2.0.1-232
    IntelliJ version: IntelliJ IDEA 2023.2 (Ultimate Edition)
  2. Окружение:
    Tomcat 10 (for Jakarta EE)
    Java JDK 20
  3. Все что я добавил:
    gradle - apply plugin: 'war' и implementation 'org.springframework.boot:spring-boot-starter-tomcat:3.0.0'
    SpringBootApplication - extends SpringBootServletInitializer
  4. Перенес .war в webapps
  5. запустил приложение
  6. все работает

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

1 симпатия