Help with Spring on Jboss: autowire JavaDelegate fails

Hello,
I’m new to Camunda. [Sorry, if this is repetitive or answered elsewhere. I’ve searched a lot and tried a number of examples, but I have not been able to get this to work.]

I’m trying to create a Camunda BPMN process on Jboss EAP 6.4 that uses a shared process engine and uses Spring for dependency injection.

I started with Camunda spring example from Github (link) that shows how to use spring java based config. This example worked fine for me on Tomcat, but I can’t get it to work on Jboss. The only thing I changed in the example is to change the SpringProcessApplication to a ServletProcessApplication as the SpringProcessApplication does not seem to work on Jboss (link).

The server log messages seem to indicate that the spring java config is working and the bean is known:

09:42:32,595 INFO [org.springframework.beans.factory.support.DefaultListableBeanFactory] (ServerService Thread Pool – 159) Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@8e987a5: defining beans [org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.context.annotation.internalPersistenceAnnotationProcessor,camundaConfig,camundaSpringConfig,camundaApplicationInitializer,org.springframework.context.annotation.ConfigurationClassPostProcessor.importAwareProcessor,processApplication,processEngineService,repositoryService,runtimeService,historyService,identityService,taskService,managementService,authorizationService,processEngine,getStarter,calculateInterestService]; root of factory hierarchy

However, when the Camunda ProcessEngine attempts to start the BPMN it cannot find the bean. The following is from the server log:

09:42:32,678 WARN [org.camunda.bpm.application] (ServerService Thread Pool – 159) ENGINE-07008 Process Application ‘spring-java-based-config-1.0.0-SNAPSHOT’: No ELResolver provided by ProcessApplicationElResolver org.camunda.bpm.engine.spring.application.SpringProcessApplicationElResolver
09:42:32,678 DEBUG [org.camunda.bpm.application] (ServerService Thread Pool – 159) ENGINE-07007 ElResolvers found for Process Application spring-java-based-config-1.0.0-SNAPSHOT
09:42:32,678 ERROR [org.camunda.bpm.engine.context] (ServerService Thread Pool – 159) ENGINE-16006 BPMN Stack Trace:
ServiceTask_1 (activity-execute, ProcessInstance[8824de71-227e-11e6-aafb-a0cec8039b0e], pa=spring-java-based-config-1.0.0-SNAPSHOT)
ServiceTask_1
^
|
StartEvent_1

09:42:32,678 DEBUG [org.camunda.bpm.engine.cmd] (ServerService Thread Pool – 159) ENGINE-13011 closing existing command context
09:42:32,678 ERROR [org.camunda.bpm.engine.context] (ServerService Thread Pool – 159) ENGINE-16004 Exception while closing command context: Unknown property used in expression: ${calculateInterestService}. Cause: Cannot resolve identifier ‘calculateInterestService’: org.camunda.bpm.engine.ProcessEngineException: Unknown property used in expression: ${calculateInterestService}. Cause: Cannot resolve identifier ‘calculateInterestService’

It seems like the ProcessEngine is unable to locate the Spring WebApplicationContext and as a result it can’t find the spring bean.

Any guidance or pointers to working examples would be greatly appreciated.

Thanks,
Bill

Hi Bill,

Could you please provide a complete server log with the full lifecycle of the process application (deployment, registration with the shared process engine, exception, undeployment)?

Cheers,
Christian

Thanks Christian, sure, attached. (It is just a text file, but has an .xml suffix)

jboss-server-log-spring-issue.xml (198.7 KB)

Hello!

I am having similar problems.
@Autowired
Environment env;

annotations are not processed.

In manual there is line:
The Spring process application is currently not supported on JBoss AS 7/Wildfly 8

https://docs.camunda.org/manual/7.7/user-guide/process-applications/the-process-application-class/#the-ejbprocessapplication

Does it means I must use Tomcat if I want to deploy process application as Spring (Boot) application?