在Keycloak中使用第三方库

时间:2018-07-19 14:16:42

标签: apache-kafka keycloak

我想将kafka-clients用于我的keycloak模块,以便将每个登录事件发布到其中。

问题出在部署过程中:我对打包在jar中的自定义密钥斗篷提供程序使用了“模块方式”,将kafka-clients声明为模块依赖项。由于它不存在,我还手动创建了一个kafka-clients模块。不过,由于类未找到,我在启动时遇到了问题:

java.lang.ClassNotFoundException: javax.net.ssl.KeyManagerFactory from [Module "org.apache.kafka.kafka-clients"

也许其他依赖项丢失了。无论如何,我不想手动处理所有依赖项麻烦。

所以我的问题是:部署需要第三方依赖性的自定义密钥斗篷SPI提供程序的最佳方法是什么?

我应该建立一个EAR吗?战争? JAR够了吗?

1 个答案:

答案 0 :(得分:1)

如果您向其中添加kafka-clients依赖项,那么JAR就足够了。

您可以查看keycloak-metrics-spi如何将prometeus依赖项捆绑在其自己的jar中(使用gradle)

configurations {
    bundleLib
}

dependencies {
    bundleLib group: 'io.prometheus', name: 'simpleclient_common', version: prometheusVersion
    bundleLib group: 'io.prometheus', name: 'simpleclient_hotspot', version: prometheusVersion
    configurations.compile.extendsFrom(configurations.bundleLib)
}

jar {
    from {
        configurations.bundleLib.collect { it.isDirectory() ? it : zipTree(it) }
    }
}

EAR也可以工作(并允许您进行热部署),只需要将kafka-clients添加到归档文件的lib目录中即可。