spring-boot - 如何正确使用 Camunda / Springboot 示例应用程序
问题描述
我正在关注这个 Canmunda 提供的 Springboot 教程:
https://github.com/camunda/camunda-bpm-examples/tree/master/spring-boot-starter/example-simple
安装项目并运行后
java -jar target/camunda-bpm-spring-boot-starter-example-simple-0.0.1-SNAPSHOT.jar
我在运行输出结束时收到此错误:
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'
我可以做些什么来使这个例子正常运行?
解决方案
只需-Dorg.camunda.bpm.spring.boot.starter.example.simple.SimpleApplication.exitWhenFinished=false
在命令之前添加-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
该标志有效,因为example-simple
定义它@ 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并检查该值必须true
在退出应用程序之前@ https://github.com/camunda/camunda-bpm-examples/blob/e10193855e874abce2eb9e463b47f97954c54d57/spring-boot-starter/示例简单/src/main/java/org/camunda/bpm/spring/boot/example/simple/SimpleApplication.java#L104
或者,如果您想永久删除该功能,您只需exitApplicationWhenProcessIsFinished()
从SimpleApplication
类中删除该功能。
推荐阅读
- php - Laravel/docker-compose/redis - 找不到类“Redis”
- java - 2D 元胞自动机故障
- javascript - 如何正确过滤 JavaScript 中的对象?
- sql-server - 查找给定名称之类的表并针对每个表运行查询
- vue.js - VUE/CLI .env 变量返回未定义
- python - 如何使用 nmcli Python 模块
- python - 并行化模糊字符串比较算法
- vuejs2 - 如何使用 Vuex 商店修复 Buefy b-table 组件中的“计算属性 ... 已分配给但它没有设置器”错误
- python - 使用 Selenium 单击复选框
- javascript - 需要在表单的下拉列表中添加一些值——