Apache nifi 如何从依赖项使用控制器服务api
我有一个自定义控制器服务,我想与Apache nifi 如何从依赖项使用控制器服务api,apache-nifi,Apache Nifi,我有一个自定义控制器服务,我想与ConnectWebSocket处理器一起使用。控制器服务依赖于nifi websocket服务api,不需要自定义api(我的客户控制器服务api文件夹为空)。我已经为控制器服务编写了一个测试,它正在通过 但是,我无法选择控制器服务,因为ConnectWebSocket仅接受来自nifi websocket服务api nar的控制器服务api 我希望避免重新编码整个ConnectWebSocket处理器。所以我的问题是: 是否可以配置依赖项,以便我的自定义控制
ConnectWebSocket
处理器一起使用。控制器服务依赖于nifi websocket服务api,不需要自定义api(我的客户控制器服务api文件夹为空)。我已经为控制器服务编写了一个测试,它正在通过
但是,我无法选择控制器服务,因为ConnectWebSocket
仅接受来自nifi websocket服务api nar
的控制器服务api
我希望避免重新编码整个ConnectWebSocket
处理器。所以我的问题是:
是否可以配置依赖项,以便我的自定义控制器服务使用来自nifi websocket服务api nar
的api
控制器服务的pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.mydomain</groupId>
<artifactId>nifi-controllerservice-bundle</artifactId>
<version>1.9.2</version>
</parent>
<artifactId>nifi-controllerservice</artifactId>
<packaging>jar</packaging>
<dependencies>
<!-- normal dependencies -->
<dependency>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-processor-utils</artifactId>
<version>1.9.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-websocket-services-api</artifactId>
<version>1.9.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-websocket-services-jetty</artifactId>
<version>1.9.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-ssl-context-service-api</artifactId>
<scope>provided</scope>
</dependency>
<!-- Test dependencies -->
</dependencies>
4.0.0
com.mydomain
nifi控制器服务包
1.9.2
nifi控制器服务
罐子
org.apache.nifi
nifi api
假如
org.apache.nifi
nifi处理器utils
1.9.2
编译
org.apache.nifi
nifi websocket服务api
1.9.2
假如
org.apache.nifi
nifi websocket服务码头
1.9.2
假如
org.apache.nifi
nifi ssl上下文服务api
假如
控制器服务的pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.mydomain</groupId>
<artifactId>nifi-controllerservice-bundle</artifactId>
<version>1.9.2</version>
</parent>
<artifactId>nifi-controllerservice-nar</artifactId>
<version>1.9.2</version>
<packaging>nar</packaging>
<properties>
<maven.javadoc.skip>true</maven.javadoc.skip>
<source.skip>true</source.skip>
</properties>
<dependencies>
<dependency>
<groupId>com.mydomain</groupId>
<artifactId>nifi-controllerservice</artifactId>
<version>1.9.2</version>
</dependency>
<dependency>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-websocket-services-jetty</artifactId>
<version>1.9.2</version>
<scope>nar</scope>
</dependency>
</dependencies>
</project>
4.0.0
com.mydomain
nifi控制器服务包
1.9.2
nifi控制器服务nar
1.9.2
纳尔
真的
真的
com.mydomain
nifi控制器服务
1.9.2
org.apache.nifi
nifi api
假如
org.apache.nifi
nifi websocket服务码头
1.9.2
纳尔
根pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-nar-bundles</artifactId>
<version>1.9.2</version>
</parent>
<groupId>com.mydomain</groupId>
<artifactId>nifi-controllerservice-bundle</artifactId>
<version>1.9.2</version>
<packaging>pom</packaging>
<modules>
<module>nifi-comtom</module>
<module>nifi-comtom-nar</module>
</modules>
</project>
4.0.0
org.apache.nifi
nifi-nar束
1.9.2
com.mydomain
nifi控制器服务包
1.9.2
聚甲醛
尼菲通讯
尼菲康姆纳酒店
这应该是处理器和控制器服务工作的标准方式
处理器依赖于来自服务API NAR的接口,控制器服务实现实现了该接口。然后,框架知道该接口的所有实现,该接口允许is提供可能使用的服务
如果没有看到您的项目和POM,很难说问题出在哪里,但很可能是一个依赖性问题。您的项目结构应该有两个Maven模块,一个模块为您的服务impl生成一个jar,让我们调用这个定制服务,然后一个模块打包NAR,让我们调用这个定制服务NAR
定制服务模块应该提供对nifi websocket services api的依赖,这允许它进行编译,但我们不希望捆绑该api,因为在运行时它将来自另一个NAR
自定义服务nar模块在nifi websocket服务api nar上应该具有nar类型的依赖项
这应该是处理器和控制器服务工作的标准方式 处理器依赖于来自服务API NAR的接口,控制器服务实现实现了该接口。然后,框架知道该接口的所有实现,该接口允许is提供可能使用的服务 如果没有看到您的项目和POM,很难说问题出在哪里,但很可能是一个依赖性问题。您的项目结构应该有两个Maven模块,一个模块为您的服务impl生成一个jar,让我们调用这个定制服务,然后一个模块打包NAR,让我们调用这个定制服务NAR 定制服务模块应该提供对nifi websocket services api的依赖,这允许它进行编译,但我们不希望捆绑该api,因为在运行时它将来自另一个NAR 自定义服务nar模块在nifi websocket服务api nar上应该具有nar类型的依赖项
我将pom文件添加到我的问题中。我有您描述的设置依赖项。自定义控制器服务显示在“控制器服务”选项卡中,但它不显示在ConnectWebSocket处理器的控制器服务设置中。POM未按我所述进行设置。。。在控制器服务pom中,nifi websocket服务api必须是提供的范围,而不是编译。。。在控制器服务nar pom中,您需要nifi websocket服务jetty nar上的nar依赖项,删除所有具有nar的依赖项在删除具有nar的其他依赖项后,我从nifi日志中获取java.lang.NoClassDefFoundError:org/apache/nifi/ssl/RestrictedSSLContextService pom看起来正确,RestrictedSSLContext服务来自nifi标准服务api nar,它应该位于您设置的链中。。。控制器服务nar->nifi websocket jetty nar->nifi websocket api nar->nifi标准服务api NARC您可以将异常的堆栈跟踪添加到问题中吗?我将pom文件添加到问题中。我有您描述的设置依赖项。自定义控制器服务显示在“控制器服务”选项卡中,但它不显示在ConnectWebSocket处理器的控制器服务设置中。POM未按我所述进行设置。。。在控制器服务pom中,nifi websocket服务api必须是提供的范围,而不是编译。。。在控制器服务nar pom中,您需要nifi websocket服务jetty nar上的nar依赖项,删除所有具有nar的依赖项在删除具有nar的其他依赖项后,我会从nifi日志中获得java.lang.NoClassDefFoundError:org/apache/nifi/ssl/RestrictedSSLContextService pom看起来正确,Restricte