普通的NiFi表达语言没有得到解决

Kan*_*thy 0 apache-nifi

我试图使用NiFi表达式语言中包含文件路径的环境变量.当我只${MY_VAR}为文件名提供环境变量时,它没有得到解决.

但是如果在之前有空格或其他字符NiFi EL,则会对其进行评估,但这会产生无效的文件名.如何在没有任何额外字符的情况下解决此问题

因此,根据观察,当整个内容只是一个EL它没有得到评估否则,它是.

PS:我正在尝试在Truststore Filename字段中默认提供文件名StandardSSLContextService

And*_*ndy 5

您正在遇到Apache NiFi中的错误.正如Bryan所指出的,信任库位置字段并不是为了支持表达式语言.问题是从一个不正确的线所产生StandardSSLContextService:183,其中的.evaluateExpressionAttributes()方法是在自定义文件验证器被调用,尽管注释几行上述解释这个自定义的验证整个原因是因为默认支持EL.

我运行了一个远程调试器,并且能够${TRUSTSTORE_LOCATION}使用环境变量进行评估TRUSTSTORE_LOCATION(必须在启动NiFi之前设置该变量,因为VariableRegistry.ENVIRONMENT_SYSTEM_REGISTRY它仅在NotificationServiceManager调用时创建RunNiFi:270).我能够正确地观察它将环境变量评估为文件路径,但是它被连接到当前运行的目录(.../nifi-assembly/target/nifi-1.4.0-SNAPSHOT-bin/nifi-1.4.0-SNAPSHOT/TRUSTSTORE_LOCATION)而不是被视为绝对/相对路径,因为属性描述符不知道这是由于EL评估.

我已提交NIFI-4274来记录此错误.解决方法是在NiFi中使用硬编码的信任库位置,并在文件系统上使用符号链接指向实际文件位置,如果您在配置时不知道它.