5.3. 注册供应商实现
提供程序通过将 JAR 文件复制到 providers
目录中来注册到服务器。
如果您的供应商需要尚未由 Keycloak 提供的其他依赖项,请将它们复制到 供应商
目录中。
在注册新供应商或依赖项 Keycloak 后,需要使用非优化的启动或 kc.[sh|bat] build
命令重新构建。
提供程序 JAR 不会在隔离的类加载器中加载,因此不要在提供程序 JAR 中包含与内置资源或类冲突的资源或类。特别是包含 application.properties 文件或覆盖 commons-lang3 依赖项,如果删除了供应商 JAR,则会导致 auto-build 失败。如果您包含冲突的类,您可能会在服务器开始日志中看到分割软件包警告。不幸的是,并非所有内置的 lib jar 都由分割软件包警告逻辑检查,因此您需要在捆绑或包含传输依赖项前检查 lib 目录 JAR。如果存在冲突,可以通过删除或重新打包现有类来解决。
如果您有冲突的资源文件,则不会发出警告。您应该确保 JAR 的资源文件具有包含该提供程序唯一内容的路径名称,或者您可以检查 "install root"/lib/lib/main
目录下的 JAR 内容中是否存在 some.file
,如下所示:
find . -type f -name "*.jar" -exec unzip -l {} \; | grep some.file
find . -type f -name "*.jar" -exec unzip -l {} \; | grep some.file
如果发现服务器因为与已删除供应商 JAR 相关的 NoSuchFileException
错误而启动,则运行:
./kc.sh -Dquarkus.launch.rebuild=true
./kc.sh -Dquarkus.launch.rebuild=true
这将强制 Quarkus 重建类加载相关索引文件。从那里,您应能够执行非优化的启动或构建,而无需例外。
5.3.1. 禁用供应商
您可以通过将 provider 的 enabled 属性设置为 false 来禁用供应商。例如,要禁用 Infinispan 用户缓存提供程序,请使用:
bin/kc.[sh|bat] build --spi-user-cache-infinispan-enabled=false
bin/kc.[sh|bat] build --spi-user-cache-infinispan-enabled=false