具有共享引用的NiFi自定义处理器使用最旧的版本

时间:2018-10-31 20:01:40

标签: java jar shared-libraries apache-nifi

在与Nifi一起工作了几个月之后,发现一个没有意义的依赖模式,希望我能清楚地描述它,以防有人曝光。

我们一直在为几个相关但截然不同的自定义处理器制作原型,这些处理器都使用一些通用的jar库。

例如

处理器A和B使用Library1

ProcessorA与Library1中的一些代码一起开发,先构建Library1,然后再构建ProcessorA以在NiFi服务器上进行测试,一切都很好

ProcessorB也使用Library1中的一些代码进行开发,并且在将ProcessorB构建为可部署的nar之前重建了Library1。

然后,当在NiFi服务器上测试ProcessorB时(包括附加到要逐步执行的过程),我们发现需要更新Library1中的相关代码

但是,尽管对库进行了更新,但是ProcessorB仍执行旧的库代码。一个具体的例子是for循环;在将代码更改为int i = 0后,它仍然会初始化int i = 1。

仅当我对所有处理器(A和B)进行清理/重建后,ProcessorB才开始识别更新的库代码。

这是令人惊讶的,因为每个处理器nar软件包都应该有其自己的库jar副本,但是它的作用就像最早的版本一样。

最后,我的问题是:在nar包之间使用共享代码库时,这是预期的行为吗?还是有更好的做法来构造这些软件包?还是我从Java / Maven领域中缺少了一些智慧?

NiFi是1.8版,但在1.5版中也经历过

许多TIA

0 个答案:

没有答案
相关问题