Reputation: 15564
I am following this Canmunda-provided Springboot tutorial:
https://github.com/camunda/camunda-bpm-examples/tree/master/spring-boot-starter/example-simple
After installing the project and running
java -jar target/camunda-bpm-spring-boot-starter-example-simple-0.0.1-SNAPSHOT.jar
I get this error at the end of the run output:
2021-07-05 11:37:24.970 INFO 52476 --- [ scheduling-1] org.camunda.bpm.container : ENGINE-08051 Process application mySimpleApplication undeployed
2021-07-05 11:37:24.971 INFO 52476 --- [ scheduling-1] o.s.s.c.ThreadPoolTaskScheduler : Shutting down ExecutorService 'taskScheduler'
2021-07-05 11:37:24.975 INFO 52476 --- [ scheduling-1] org.camunda.bpm.engine : ENGINE-00007 Process Engine default closed
2021-07-05 11:37:24.976 INFO 52476 --- [ scheduling-1] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...
2021-07-05 11:37:24.989 WARN 52476 --- [ scheduling-1] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Interrupted during closing
java.lang.InterruptedException: null
at java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1649) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor.awaitTermination(ThreadPoolExecutor.java:1456) ~[na:na]
at com.zaxxer.hikari.pool.HikariPool.shutdown(HikariPool.java:255) ~[HikariCP-3.4.5.jar!/:na]
at com.zaxxer.hikari.HikariDataSource.close(HikariDataSource.java:351) ~[HikariCP-3.4.5.jar!/:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:567) ~[na:na]
at org.springframework.beans.factory.support.DisposableBeanAdapter.invokeCustomDestroyMethod(DisposableBeanAdapter.java:281) ~[spring-beans-5.3.5.jar!/:5.3.5]
at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:215) ~[spring-beans-5.3.5.jar!/:5.3.5]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:587) ~[spring-beans-5.3.5.jar!/:5.3.5]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:559) ~[spring-beans-5.3.5.jar!/:5.3.5]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1152) ~[spring-beans-5.3.5.jar!/:5.3.5]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:520) ~[spring-beans-5.3.5.jar!/:5.3.5]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1145) ~[spring-beans-5.3.5.jar!/:5.3.5]
at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1106) ~[spring-context-5.3.5.jar!/:5.3.5]
at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1075) ~[spring-context-5.3.5.jar!/:5.3.5]
at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1021) ~[spring-context-5.3.5.jar!/:5.3.5]
at org.springframework.boot.SpringApplication.close(SpringApplication.java:1371) ~[spring-boot-2.4.4.jar!/:2.4.4]
at org.springframework.boot.SpringApplication.exit(SpringApplication.java:1358) ~[spring-boot-2.4.4.jar!/:2.4.4]
at org.camunda.bpm.spring.boot.example.simple.SimpleApplication.exitApplicationWhenProcessIsFinished(SimpleApplication.java:106) ~[classes!/:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:567) ~[na:na]
at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:84) ~[spring-context-5.3.5.jar!/:5.3.5]
at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) ~[spring-context-5.3.5.jar!/:5.3.5]
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[na:na]
at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305) ~[na:na]
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630) ~[na:na]
at java.base/java.lang.Thread.run(Thread.java:831) ~[na:na]
2021-07-05 11:37:25.251 INFO 52476 --- [ scheduling-1] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'camundaTaskExecutor'
What can I do different to make this example run properly?
Upvotes: 0
Views: 850
Reputation: 19164
Simply add -Dorg.camunda.bpm.spring.boot.starter.example.simple.SimpleApplication.exitWhenFinished=false
into the command before -jar
:
java -Dorg.camunda.bpm.spring.boot.starter.example.simple.SimpleApplication.exitWhenFinished=false -jar target/camunda-bpm-spring-boot-starter-example-simple-0.0.1-SNAPSHOT.jar
That flag works because the example-simple
defined it @ https://github.com/camunda/camunda-bpm-examples/blob/e10193855e874abce2eb9e463b47f97954c54d57/spring-boot-starter/example-simple/src/main/java/org/camunda/bpm/spring/boot/example/simple/SimpleApplication.java#L74 and checks the value must be true
before exiting the application @ https://github.com/camunda/camunda-bpm-examples/blob/e10193855e874abce2eb9e463b47f97954c54d57/spring-boot-starter/example-simple/src/main/java/org/camunda/bpm/spring/boot/example/simple/SimpleApplication.java#L104
Or if you want to remove that feature permanently, you just need to remove the exitApplicationWhenProcessIsFinished()
function from SimpleApplication
class.
Upvotes: 1