構(gòu)建一個(gè)SPI以將事件推送到Kafka中,以在Keycloak 6.0.1中部署為EAR,它使用WildFly Server,打包在基于.jboss/keycloak:6.0.1我遇到了:Kafka Producer - org.apache.kafka.common.serialization.StringSerializer 找不到所以我應(yīng)用了建議的設(shè)置解決方案Thread.currentThread().setContextClassLoader(null);。這似乎適用于我在端口 9092 上的本地 Kafka,無需身份驗(yàn)證。一旦我按照此處所述進(jìn)行身份驗(yàn)證:String jaasTemplate = "org.apache.kafka.common.security.scram.ScramLoginModule required username=\"%s\" password=\"%s\";";String jaasCfg = String.format(jaasTemplate, username, password);Properties props = new Properties();props.put("sasl.jaas.config", jaasCfg);// ...Thread.currentThread().setContextClassLoader(null);KafkaProducer<String, String> producer = new KafkaProducer<>(props);我遇到了錯(cuò)誤:org.apache.kafka.common.KafkaException: javax.security.auth.login.LoginException: unable to find LoginModule class: org.apache.kafka.common.security.scram.ScramLoginModule? ? at org.apache.kafka.common.network.SaslChannelBuilder.configure(SaslChannelBuilder.java:160)? ? at org.apache.kafka.common.network.ChannelBuilders.create(ChannelBuilders.java:146)? ? at org.apache.kafka.common.network.ChannelBuilders.clientChannelBuilder(ChannelBuilders.java:67)? ? at org.apache.kafka.clients.ClientUtils.createChannelBuilder(ClientUtils.java:99)? ? at org.apache.kafka.clients.producer.KafkaProducer.newSender(KafkaProducer.java:441)? ? at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:422)我懷疑這是由于將 ClassLoader 設(shè)置為 引起的null,但我不確定。JAAS 字符串提到了這個(gè)org.apache.kafka.common.security.scram.ScramLoginModule。我嘗試不使用 JAAS,而是使用簡(jiǎn)單的用戶名 + 密碼,如下所示:Properties props = new Properties();props.put("sasl.username", username);props.put("sasl.password", password);// ...Thread.currentThread().setContextClassLoader(null);KafkaProducer<String, String> producer = new KafkaProducer<>(props);我怎樣才能找到它org.apache.kafka.common.security.scram.ScramLoginModule?謝謝!
1 回答

千巷貓影
TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊
警告:丑陋的駭客!
在創(chuàng)建 KafkaProducer 之前,設(shè)置如下所示的上下文類加載器:
Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
添加回答
舉報(bào)
0/150
提交
取消