java - 将 Spring 事件侦听器添加到 Camunda BPM Run Docker
问题描述
我想做一些由 Camunda 流程实例状态更改触发的工作,因此为 Camunda 编写了一个 Spring 注释驱动的事件侦听器。
我已经将它打包成一个 JAR 文件:code 并且pom.xml
在 Gist here上。
我编写了一个 Dockerfile,它扩展camunda/camunda-bpm-platform:run-7.14.0
并将生成的 JAR 插入/camunda/configuration/userlib
.
这绝对是在 Spring 引导加载程序路径中,根据ps
:
10 camunda 0:31 java -Dloader.path=/camunda/internal/webapps/,/camunda/internal/rest/,/camunda/configuration/userlib/,/camunda/configuration/keystore/ -Dcamunda.deploymentDir=/camunda/configuration/resources -jar /camunda/internal/camunda-bpm-run-core.jar --spring.config.location=file:/camunda/configuration/default.yml
检查日志,Camunda 肯定会启动 Spring 事件:
o.c.b.s.b.s.event.EventPublisherPlugin : EVENTING-001: Initialized Camunda Spring Boot Eventing Engine Plugin.
o.c.b.s.b.s.event.EventPublisherPlugin : EVENTING-003: Task events will be published as Spring Events.
o.c.b.s.b.s.event.EventPublisherPlugin : EVENTING-005: Execution events will be published as Spring Events.
o.c.b.s.b.s.event.EventPublisherPlugin : EVENTING-007: History events will be published as Spring events.
但我没有看到我的任何日志消息。
这让我怀疑仅仅在加载器上放置一个 JAR 并不足以让 Spring Boot 找到侦听器 - 但我不知道我还缺少什么。
任何帮助将非常感激。谢谢!
解决方案
好的,我意识到我在这里做错了。我错误地假设类路径上的任何 JAR 文件都会自动初始化它们的类,这反过来意味着 Spring 会注意到@Component
and@EventListener
注释,然后......做一些魔术来添加监听器。这不是真的。
我现在明白正确的做法是使用 Camunda Initializr 构建一个包含我的侦听器的全新Spring Boot 应用程序,然后围绕它滚动一个 Docker。所以这就是我现在前进的道路。
推荐阅读
- postgresql - Liquibase RollBack 针对 Dockerized Postgresql?
- c++ - 字符串实体的对象向量搜索
- apache-nifi - 在 Apache Nifi 中从多个 URL 接收数据的最佳方法是什么?
- mysql - 左连接不返回 Null 值
- .net - 如何在表单及其嵌套面板中找到标签控件?
- javascript - 循环 d3 转换有限次
- node.js - 关键字导入为 bcrypt 包返回 undefiend
- javascript - document.getElementById onclick 也触发函数 2 / 表单 2
- python - Dynamic tree from parent-child relation in python, with data associated to nodes
- python - Screen manager: screen change does not work