Могу ли я получить NarClassLoader для загрузки зависимостей из пользовательского процессора вместо пользовательского ControllerService? - PullRequest
0 голосов
/ 08 апреля 2020

Я написал собственный Processor и ControllerService, используя структуру структуры из превосходного примера на https://github.com/bbende/nifi-dependency-example. В дополнение к этому у меня есть третий модуль, содержащий модель моих данных и служебные классы для работы с моделью. И Processor, и ControllerService зависят от модуля модели.

Это прекрасно работает, если Processor и ControllerService имеют одинаковую версию модели. Но если они используют разные версии, у меня возникают проблемы, потому что служебные классы всегда загружаются из ControllerService nar. Могу ли я как-нибудь заставить Processor и ControllerService загружать служебные классы из их «собственной» зависимости?

В ModelUtil. java Я добавил код:

static {
  System.err.println(ModelUtil.class.getClassLoader());
}

Который распечатывает следующее: ... NarClassLoader [./work / nar / extensions / myservice-api-nar-1.0.nar-unpacked]

Я бы ожидал, что вместо одной будут напечатаны две строки , Один, когда Процессор загружает ModelUtil, и один, когда это делает ControllerService.

myservice-api-nar не содержит зависимости от модели, но myservice-api делает.

Спасибо

...