Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: org.apache.kafka.common.config.ConfigException: Invalid value org.springframework.boot.autoconfigure.kafka.SslBundleSslEngineFactory for configuration ssl.engine.factory.class: Class org.springframework.boot.autoconfigure.kafka.SslBundleSslEngineFactory could not be found.] with root cause
org.apache.kafka.common.config.ConfigException: Invalid value org.springframework.boot.autoconfigure.kafka.SslBundleSslEngineFactory for configuration ssl.engine.factory.class: Class org.springframework.boot.autoconfigure.kafka.SslBundleSslEngineFactory could not be found.
at org.apache.kafka.common.config.ConfigDef.parseType(ConfigDef.java:778) ~[na:na]
at org.apache.kafka.common.config.ConfigDef.parseValue(ConfigDef.java:531) ~[na:na]
at org.apache.kafka.common.config.ConfigDef.parse(ConfigDef.java:524) ~[na:na]
at org.apache.kafka.common.config.AbstractConfig.<init>(AbstractConfig.java:114) ~[kafka-producer-sample:na]
at org.apache.kafka.common.config.AbstractConfig.<init>(AbstractConfig.java:134) ~[kafka-producer-sample:na]
at org.apache.kafka.clients.producer.ProducerConfig.<init>(ProducerConfig.java:643) ~[na:na]
at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:295) ~[na:na]
at org.springframework.kafka.core.DefaultKafkaProducerFactory.createRawProducer(DefaultKafkaProducerFactory.java:944) ~[kafka-producer-sample:3.3.3]
at org.springframework.kafka.core.DefaultKafkaProducerFactory.createKafkaProducer(DefaultKafkaProducerFactory.java:826) ~[kafka-producer-sample:3.3.3]
at org.springframework.kafka.core.DefaultKafkaProducerFactory.doCreateProducer(DefaultKafkaProducerFactory.java:793) ~[kafka-producer-sample:3.3.3]
at org.springframework.kafka.core.DefaultKafkaProducerFactory.createProducer(DefaultKafkaProducerFactory.java:768) ~[kafka-producer-sample:3.3.3]
at org.springframework.kafka.core.DefaultKafkaProducerFactory.createProducer(DefaultKafkaProducerFactory.java:762) ~[kafka-producer-sample:3.3.3]
at org.springframework.kafka.core.KafkaTemplate.getTheProducer(KafkaTemplate.java:976) ~[kafka-producer-sample:3.3.3]
at org.springframework.kafka.core.KafkaTemplate.doSend(KafkaTemplate.java:828) ~[kafka-producer-sample:3.3.3]
at org.springframework.kafka.core.KafkaTemplate.observeSend(KafkaTemplate.java:805) ~[kafka-producer-sample:3.3.3]
at org.springframework.kafka.core.KafkaTemplate.send(KafkaTemplate.java:582) ~[kafka-producer-sample:3.3.3]
at com.ks.kafka.sample.service.sender.Sender.send(Sender.java:18) ~[kafka-producer-sample:na]
at com.ks.kafka.sample.service.MessageService.send(MessageService.java:16) ~[kafka-producer-sample:na]
at com.ks.kafka.sample.controller.KafkaController.sendMessage(KafkaController.java:18) ~[kafka-producer-sample:na]
at java.base@17.0.12/java.lang.reflect.Method.invoke(Method.java:568) ~[kafka-producer-sample:na]
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:257) ~[kafka-producer-sample:6.2.3]
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:190) ~[kafka-producer-sample:6.2.3]
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) ~[kafka-producer-sample:6.2.3]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:986) ~[kafka-producer-sample:6.2.3]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:891) ~[kafka-producer-sample:6.2.3]
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[kafka-producer-sample:6.2.3]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1088) ~[kafka-producer-sample:6.2.3]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:978) ~[kafka-producer-sample:6.2.3]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) ~[kafka-producer-sample:6.2.3]
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) ~[kafka-producer-sample:6.2.3]
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) ~[kafka-producer-sample:6.0]
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) ~[kafka-producer-sample:6.2.3]
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) ~[kafka-producer-sample:6.0]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:195) ~[na:na]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[na:na]
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) ~[kafka-producer-sample:10.1.36]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[na:na]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[na:na]
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[kafka-producer-sample:6.2.3]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[kafka-producer-sample:6.2.3]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[na:na]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[na:na]
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[kafka-producer-sample:6.2.3]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[kafka-producer-sample:6.2.3]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[na:na]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[na:na]
at org.springframework.web.filter.ServerHttpObservationFilter.doFilterInternal(ServerHttpObservationFilter.java:114) ~[kafka-producer-sample:6.2.3]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[kafka-producer-sample:6.2.3]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[na:na]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[na:na]
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[kafka-producer-sample:6.2.3]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[kafka-producer-sample:6.2.3]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[na:na]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[na:na]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167) ~[na:na]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) ~[na:na]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:483) ~[kafka-producer-sample:10.1.36]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115) ~[na:na]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) ~[kafka-producer-sample:10.1.36]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) ~[na:na]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344) ~[na:na]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:397) ~[na:na]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[kafka-producer-sample:10.1.36]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:905) ~[na:na]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1743) ~[na:na]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[kafka-producer-sample:10.1.36]
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1190) ~[na:na]
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[na:na]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) ~[na:na]
at java.base@17.0.12/java.lang.Thread.run(Thread.java:842) ~[kafka-producer-sample:na]
at org.graalvm.nativeimage.builder/com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:885) ~[kafka-producer-sample:na]
at org.graalvm.nativeimage.builder/com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:860) ~[kafka-producer-sample:na]
There's a runtime hint missing for org.springframework.boot.autoconfigure.kafka.SslBundleSslEngineFactory
.
Comment From: mhalbritter
Workaround until this is fixed:
class MyHint implements RuntimeHintsRegistrar {
@Override
public void registerHints(RuntimeHints hints, ClassLoader classLoader) {
hints.reflection().registerType(SslBundleSslEngineFactory.class, MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS);
}
}
and @ImportRuntimeHints(MyHint.class)
.
Comment From: patpatpat123
Hello @mhalbritter ,
Just wanted to say thank you for this, you beat me to this. I reached out with the same issue here
https://github.com/reactor/reactor-kafka/issues/418
and here:
https://github.com/spring-projects/spring-boot/issues/44414#issuecomment-2683891855
I was going to send the minimal https://github.com/patpatpat123/issuekafkasslbundle
And saw this post only after.
Again, thank you for doing this. Good day!