Hi,
I’m trying to integrate Flowable 7.1.0 into an existing software running on WildFly. This software uses JakartaEE features and CDI for dependency injection, so using Flowable’s Spring Boot integration was not an option.
I followed the instructions in the documentation to inject a ProcessEngine
, but receive the following exception:
13:27:22,320 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-4) MSC000001: Failed to start service jboss.deployment.unit."xxx.ear".WeldStartService: org.jboss.msc.service.StartException in service jboss.deployment.unit."xxx.ear".WeldStartService: Failed to start service
at org.jboss.msc@1.5.4.Final//org.jboss.msc.service.ServiceControllerImpl$StartTask.execute(ServiceControllerImpl.java:1609)
at org.jboss.msc@1.5.4.Final//org.jboss.msc.service.ServiceControllerImpl$ControllerTask.run(ServiceControllerImpl.java:1438)
at org.jboss.threads@2.4.0.Final//org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
at org.jboss.threads@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1990)
at org.jboss.threads@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486)
at org.jboss.threads@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1377)
at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: org.jboss.weld.exceptions.DeploymentException: Could not find an implementation of the org.flowable.cdi.spi.ProcessEngineLookup service returning a non-null processEngine. Giving up.
I have the following flowable.cfg.xml
in my <module_name>/src/main/resources
folder:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="processEngineConfiguration"
class="org.flowable.cdi.CdiStandaloneProcessEngineConfiguration">
<property name="jdbcUrl" value="jdbc:mysql://xxx.xxx.xxx.xxx:xxxxx/flowable"/>
<property name="jdbcDriver" value="com.mysql.cj.jdbc.Driver"/>
<property name="jdbcUsername" value="flowable"/>
<property name="jdbcPassword" value="abc"/>
<property name="databaseSchemaUpdate" value="true"/>
</bean>
</beans>
Here are my maven dependencies:
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.11.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>5.11.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-junit-jupiter</artifactId>
<version>5.14.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>jakarta.platform</groupId>
<artifactId>jakarta.jakartaee-api</artifactId>
<version>10.0.0</version>
</dependency>
<dependency>
<groupId>org.flowable</groupId>
<artifactId>flowable-engine</artifactId>
<version>7.0.1</version>
</dependency>
<dependency>
<groupId>org.flowable</groupId>
<artifactId>flowable-cdi</artifactId>
<version>7.0.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
</dependencies>
Does anyone have an example project where CDI is up and running or does anyone have idea what prevents the ServiceLoader
from finding the default org.flowable.cdi.impl.LocalProcessEngineLookup
implementation? I also stepped through offending the Flowable
code in the FlowableExtension
class that is part of the flowable-cdi
library, and it just doesn’t return any implementations of the ProcessEngineLookup
interface, thus returning null and crashing. Implementing one myself and then adding a file in META-INF/services
like described in the documentation didn’t work either.
Cheers!