在 Keycloak 中使用第三方库
Use third party libraries in Keycloak
我想为我的 keycloak 模块使用 kafka-clients,以便将每个登录事件发布到其中。
问题出在部署过程中:我将 "module way" 用于打包在 jar 中的自定义 keycloak 提供程序,将 kafka-clients 声明为模块依赖项。由于它不存在,我还手动创建了一个 kafka-clients 模块。不过,由于未找到 class,我在启动时遇到问题:
java.lang.ClassNotFoundException: javax.net.ssl.KeyManagerFactory from [Module "org.apache.kafka.kafka-clients"
可能缺少其他依赖项。无论如何,我不想手动处理所有依赖问题。
所以我的问题是:部署自定义密钥斗篷 SPI 提供程序的最佳方法是什么,需要第三方依赖项?
我应该构建一个 EAR 吗?一个 WAR ?一个 JAR 就够了吗?
如果你添加 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 目录中。
我想为我的 keycloak 模块使用 kafka-clients,以便将每个登录事件发布到其中。
问题出在部署过程中:我将 "module way" 用于打包在 jar 中的自定义 keycloak 提供程序,将 kafka-clients 声明为模块依赖项。由于它不存在,我还手动创建了一个 kafka-clients 模块。不过,由于未找到 class,我在启动时遇到问题:
java.lang.ClassNotFoundException: javax.net.ssl.KeyManagerFactory from [Module "org.apache.kafka.kafka-clients"
可能缺少其他依赖项。无论如何,我不想手动处理所有依赖问题。
所以我的问题是:部署自定义密钥斗篷 SPI 提供程序的最佳方法是什么,需要第三方依赖项?
我应该构建一个 EAR 吗?一个 WAR ?一个 JAR 就够了吗?
如果你添加 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 目录中。