我想将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够了吗?
答案 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目录中即可。