У нас есть большое приложение Spring Boot, которое должно иметь интегрированный движок Camunda BPMN. Под интеграцией я подразумеваю, что все приложение и движок находятся внутри одного файла WAR и развернуты в Tomcat. Я получил все, чтобы работать, пока у меня не было двух таких файлов WAR на одном коте. Чтобы избежать конфликтов различных движков камунды, я настроил разные источники данных для каждого из обоих движков. Что происходит сейчас, так это то, что развертывание второго файла войны завершается сбоем со следующим исключением, сообщая мне, что экземпляр уже существует:
Caused by: javax.management.InstanceAlreadyExistsException: org.camunda.bpm.platform.process-engine:type=default
at com.sun.jmx.mbeanserver.Repository.addMBean(Repository.java:437)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerWithRepository(DefaultMBeanServerInterceptor.java:1898)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerDynamicMBean(DefaultMBeanServerInterceptor.java:966)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerObject(DefaultMBeanServerInterceptor.java:900)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerMBean(DefaultMBeanServerInterceptor.java:324)
at com.sun.jmx.mbeanserver.JmxMBeanServer.registerMBean(JmxMBeanServer.java:522)
at org.camunda.bpm.container.impl.jmx.MBeanServiceContainer.startService(MBeanServiceContainer.java:79)
... 65 more
Чтобы избежать этой ошибки, я попытался переименовать движок в приложении. Properties:
camunda.bpm.process-engine-name=demo
Теперь это вызывает еще одно исключение, я не знаю, как исправить:
Caused by: org.camunda.bpm.engine.exception.NullValueException: Cannot deploy process archive 'null' to default process: no such process engine exists: processEngine is null
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_191]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:1.8.0_191]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:1.8.0_191]
at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[?:1.8.0_191]
at org.camunda.bpm.engine.impl.util.EnsureUtil.generateException(EnsureUtil.java:380) ~[camunda-engine-7.10.0.jar:7.10.0]
at org.camunda.bpm.engine.impl.util.EnsureUtil.ensureNotNull(EnsureUtil.java:54) ~[camunda-engine-7.10.0.jar:7.10.0]
at org.camunda.bpm.engine.impl.util.EnsureUtil.ensureNotNull(EnsureUtil.java:49) ~[camunda-engine-7.10.0.jar:7.10.0]
at org.camunda.bpm.container.impl.deployment.DeployProcessArchiveStep.getProcessEngine(DeployProcessArchiveStep.java:217) ~[camunda-engine-7.10.0.jar:7.10.0]
at org.camunda.bpm.container.impl.deployment.DeployProcessArchiveStep.performOperationStep(DeployProcessArchiveStep.java:81) ~[camunda-engine-7.10.0.jar:7.10.0]
at org.camunda.bpm.container.impl.spi.DeploymentOperation.execute(DeploymentOperation.java:119) ~[camunda-engine-7.10.0.jar:7.10.0]
at org.camunda.bpm.container.impl.jmx.MBeanServiceContainer.executeDeploymentOperation(MBeanServiceContainer.java:159) ~[camunda-engine-7.10.0.jar:7.10.0]
at org.camunda.bpm.container.impl.spi.DeploymentOperation$DeploymentOperationBuilder.execute(DeploymentOperation.java:215) ~[camunda-engine-7.10.0.jar:7.10.0]
at org.camunda.bpm.container.impl.RuntimeContainerDelegateImpl.deployProcessApplication(RuntimeContainerDelegateImpl.java:101) ~[camunda-engine-7.10.0.jar:7.10.0]
at org.camunda.bpm.application.AbstractProcessApplication.deploy(AbstractProcessApplication.java:62) ~[camunda-engine-7.10.0.jar:7.10.0]
at org.camunda.bpm.engine.spring.application.SpringProcessApplication.start(SpringProcessApplication.java:109) ~[camunda-engine-spring-7.10.0.jar:7.10.0]
at org.camunda.bpm.engine.spring.application.SpringProcessApplication.afterPropertiesSet(SpringProcessApplication.java:118) ~[camunda-engine-spring-7.10.0.jar:7.10.0]
at org.camunda.bpm.spring.boot.starter.SpringBootProcessApplication.afterPropertiesSet(SpringBootProcessApplication.java:90) ~[camunda-bpm-spring-boot-starter-3.2.0.jar:3.2.0]
at org.camunda.bpm.engine.spring.application.SpringProcessApplication.onApplicationEvent(SpringProcessApplication.java:95) ~[camunda-engine-spring-7.10.0.jar:7.10.0]
... 21 more
Некоторые технические детали. Мы используем:
- Spring Boot 2.1.1
- Встроенный Tomcat 9.0.13
- Camunda BPM Стартер с начальной загрузкой 3.2.0
- MariaDB 10.3.11
- Camundas META-INF /properts.xml пусто
Итак, у меня есть два основных вопроса:
- Как переименовать движок Camunda BMPN с помощью файла application.properties?
- Как я могу запустить два полностью независимых экземпляра движка на одном и том же tomcat, предпочтительно используя только Spring Boot и файл application.properties?
Бонус Вопрос:
- Можно ли настроить два экземпляра механизма для работы на одном и том же источнике данных?