我试图创建一个自定义事件侦听器,遇到了一个问题,当我运行带有keycloak的容器时,没有任何关于部署项目的.jar文件的日志信息。
在使用keycloak运行容器之前,我的操作顺序是:
mvn清洁包-〉构建-t自定义-keycloak。-〉docker-composite up
除了下面的实现之外,我还有一个文件 org. keyclock.events.EventListenerProviderFactory,其中包含我的事件侦听器提供程序工厂实现的目录- SimpleEventListenerProvider。
事件侦听器提供程序实现
@Component
public class SimpleEventListenerProvider implements EventListenerProvider {
@Override
public void onEvent(Event event) {
}
@Override
public void onEvent(AdminEvent adminEvent, boolean b) {
}
@Override
public void close() {
}
}
事件侦听器提供程序工厂实现
@Component
@RequiredArgsConstructor
public class SimpleEventListenerProviderFactory implements EventListenerProviderFactory {
private final SimpleEventListenerProvider provider;
@Override
public EventListenerProvider create(KeycloakSession keycloakSession) {
return provider;
}
@Override
public void init(Config.Scope scope) {
}
@Override
public void postInit(KeycloakSessionFactory keycloakSessionFactory) {
}
@Override
public void close() {
}
@Override
public String getId() {
return "session-restrictor";
}
}
停靠文件
FROM quay.io/keycloak/keycloak:19.0.0
ARG APPLICATION_JAR=target/*.jar
COPY ${APPLICATION_JAR} /opt/keycloak/providers
RUN /opt/keycloak/bin/kc.sh build show-config --metrics-enabled=true
坞站组合
version: "3.8"
services:
postgres:
container_name: postgres
image: postgres:latest
ports:
- '5432:5432'
volumes:
- /home/lib/v1:/var/lib/v1
environment:
POSTGRES_USERNAME: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: data
keycloak:
container_name: keycloak
image: custom-keycloak:latest
volumes:
- /home/lib/keycloak/v1:/var/lib/keycloak/v1
environment:
KEYCLOAK_ADMIN: admin
KEYCLOAK_ADMIN_PASSWORD: admin
KEYCLOAK_MANAGEMENT_PASSWORD: admin
KEYCLOAK_DATABASE_PORT: 5432
KEYCLOAK_DATABASE_HOST: postgres
KEYCLOAK_DATABASE_NAME: data
KEYCLOAK_CREATE_ADMIN_USER: 'true'
KEYCLOAK_DATABASE_USER: postgres
KEYCLOAK_DATABASE_PASSWORD: postgres
entrypoint: ["/opt/keycloak/bin/kc.sh", "start-dev", "--features=preview"]
depends_on:
postgres:
condition: service_started
ports:
- '8080:8080'
restart: unless-stopped
1条答案
按热度按时间7uhlpewt1#
我遇到了同样的问题,不幸的是,configuring providers上的文档非常少,没有提到重要的注意事项,即
src/resources/META-INF
文件夹必须包含SimpleEventListenerProviderFactory
的文本文件。解决方案是创建文件夹
src/resources/META-INF/
并放置一个纯文本文件,如下所示。org.keycloak.events.EventListenerProviderFactory
:不要忘记在运行
kc.sh start
之前使用kc.sh build
再次构建配置这花了我几个小时才弄明白。但现在它终于显示在keycloak管理页面上了。由于缺乏更好的示例,我只能提供my implementation。还要注意xml文件:
jboss-deployment-structure.xml
: