Deploy на Tomcat

Добрый день, получаю ошибку при деплое war на tomcat.
Jmix version: 2.2.1
Jmix Studio plugin version: 2.2.1-233
IntelliJ version: IntelliJ IDEA 2023.3.6 (Community Edition)
Apache Tomcat/10.1.24
Кейс,

  • Создаю новое проект, Full Stack приложение,
  • Переопределяю DataStore на СУБД
  • Запускаю локально. Работает.
  • Выполняю шаги Базовое развертывание :: Документация Jmix
    основной класс приложения расширяет extends SpringBootServletInitializer, плагин war в раздел plugins файла build.gradle,
  • Делаю build bootWar
  • размещаю war на Tomcat и xml в tomcat/conf/Catalina/localhost/
    Получаю ошибку

2024-07-31T16:32:19.463+05:00 INFO 3986182 — [o-8080-exec-104] .s.b.a.l.ConditionEvaluationReportLogger :

Error starting ApplicationContext. To display the condition evaluation report re-run your application with ‘debug’ enabled.
2024-07-31T16:32:19.487+05:00 ERROR 3986182 — [o-8080-exec-104] o.s.boot.SpringApplication : Application run failed

org.springframework.jmx.export.UnableToRegisterMBeanException: Unable to register MBean [io.jmix.flowui.upload.TemporaryStorageManagementFacade@36a283f7] with key 'flowui_TemporaryStorageManagementFacade’
at org.springframework.jmx.export.MBeanExporter.registerBeanNameOrInstance(MBeanExporter.java:641) ~[spring-context-6.1.3.jar:6.1.3]
at org.springframework.jmx.export.MBeanExporter.lambda$registerBeans$2(MBeanExporter.java:568) ~[spring-context-6.1.3.jar:6.1.3]

at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) ~[tomcat-util.jar:10.1.24]
at java.base/java.lang.Thread.run(Thread.java:840) ~[na:na]
Caused by: javax.management.InstanceAlreadyExistsException: jmix.flowui:type=TemporaryStorage
** at java.management/com.sun.jmx.mbeanserver.Repository.addMBean(Repository.java:436) ~**[na:na]
at java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerWithRepository(DefaultMBeanServerInterceptor.java:1865) ~[na:na]
at java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerDynamicMBean(DefaultMBeanServerInterceptor.java:960) ~[na:na]
at java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerObject(DefaultMBeanServerInterceptor.java:895) ~[na:na]
at java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerMBean(DefaultMBeanServerInterceptor.java:320) ~[na:na]
at java.management/com.sun.jmx.mbeanserver.JmxMBeanServer.registerMBean(JmxMBeanServer.java:523) ~[na:na]
at org.springframework.jmx.support.MBeanRegistrationSupport.doRegister(MBeanRegistrationSupport.java:138) ~[spring-context-6.1.3.jar:6.1.3]
at org.springframework.jmx.export.MBeanExporter.registerBeanInstance(MBeanExporter.java:695) ~[spring-context-6.1.3.jar:6.1.3]
at org.springframework.jmx.export.MBeanExporter.registerBeanNameOrInstance(MBeanExporter.java:631) ~[spring-context-6.1.3.jar:6.1.3]
… 52 common frames omitted

Добрый день!

Скорее всего в tomcat лежит ещё одно Jmix приложение, поэтому он не может зарегистрировать MBean.

Такую же проблему только с другим бином решили здесь: Deployment error [flowUI] - Support - Jmix

Тут есть два решения:

  1. Использовать другой domain для приложения:
    spring.jmx.default-domain=myDomain
    
  2. Либо совсем отключить JMX, если в приложении он не нужен:
    spring.jmx.enabled=false
    

Роман, спасибо, эту ошибку получилось убрать, появилась другая, пока локализую.
П.С. Если о данной проблеме известно с 22ого года почему не добавить об этом информацию в документация, а лучше что бы параметр по умолчанию уже был в application.prop

1 симпатия

Задача на документацию уже есть Document the case when two Jmix WAR files deploying to Tomcat · Issue #558 · jmix-framework/jmix-docs · GitHub

С одной стороны для war деплоя пригодится, а с другой для jar это свойство не нужно. Перегружать application.properties не обязательными свойствами тоже не хотелось бы.