Describe the bug Eureka logs tons of NPE with Java 25, Spring Boot 3.5.6, Spring Cloud 2025.0.0.
Sample
2025-09-19T12:43:53.500Z WARN 1 --- [Zookeepers Service Registry] [omcat-handler-4] o.g.j.server.ServerRuntime$Responder : An exception mapping did not successfully produce and processed a response. Logging the exception propagated to the default exception mapper.
java.lang.NullPointerException: Cannot invoke "com.netflix.eureka.registry.ResponseCache.invalidate(String, String, String)" because "this.responseCache" is null
at com.netflix.eureka.registry.AbstractInstanceRegistry.invalidateCache(AbstractInstanceRegistry.java:1193) ~[eureka-core-2.0.4.jar:2.0.4]
at com.netflix.eureka.registry.AbstractInstanceRegistry.register(AbstractInstanceRegistry.java:276) ~[eureka-core-2.0.4.jar:2.0.4]
at com.netflix.eureka.registry.PeerAwareInstanceRegistryImpl.register(PeerAwareInstanceRegistryImpl.java:411) ~[eureka-core-2.0.4.jar:2.0.4]
at org.springframework.cloud.netflix.eureka.server.InstanceRegistry.register(InstanceRegistry.java:88) ~[spring-cloud-netflix-eureka-server-4.3.0.jar:4.3.0]
at com.netflix.eureka.resources.ApplicationResource.addInstance(ApplicationResource.java:186) ~[eureka-core-2.0.4.jar:2.0.4]
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Unknown Source) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Unknown Source) ~[na:na]
at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) ~[jersey-server-3.1.11.jar:na]
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) ~[jersey-server-3.1.11.jar:na]
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) ~[jersey-server-3.1.11.jar:na]
at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:176) ~[jersey-server-3.1.11.jar:na]
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) ~[jersey-server-3.1.11.jar:na]
at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) ~[jersey-server-3.1.11.jar:na]
at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) ~[jersey-server-3.1.11.jar:na]
at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) ~[jersey-server-3.1.11.jar:na]
at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) ~[jersey-server-3.1.11.jar:na]
at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) ~[jersey-common-3.1.11.jar:na]
at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) ~[jersey-common-3.1.11.jar:na]
at org.glassfish.jersey.internal.Errors.process(Errors.java:292) ~[jersey-common-3.1.11.jar:na]
at org.glassfish.jersey.internal.Errors.process(Errors.java:274) ~[jersey-common-3.1.11.jar:na]
at org.glassfish.jersey.internal.Errors.process(Errors.java:244) ~[jersey-common-3.1.11.jar:na]
at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) ~[jersey-common-3.1.11.jar:na]
at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) ~[jersey-server-3.1.11.jar:na]
at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) ~[jersey-server-3.1.11.jar:na]
at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) ~[jersey-container-servlet-core-3.1.11.jar:na]
at org.glassfish.jersey.servlet.ServletContainer.serviceImpl(ServletContainer.java:378) ~[jersey-container-servlet-core-3.1.11.jar:na]
at org.glassfish.jersey.servlet.ServletContainer.doFilter(ServletContainer.java:554) ~[jersey-container-servlet-core-3.1.11.jar:na]
at org.glassfish.jersey.servlet.ServletContainer.doFilter(ServletContainer.java:494) ~[jersey-container-servlet-core-3.1.11.jar:na]
at org.glassfish.jersey.servlet.ServletContainer.doFilter(ServletContainer.java:431) ~[jersey-container-servlet-core-3.1.11.jar:na]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.springframework.cloud.netflix.eureka.server.EurekaServerAutoConfiguration$1.doFilterInternal(EurekaServerAutoConfiguration.java:304) ~[spring-cloud-netflix-eureka-server-4.3.0.jar:4.3.0]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.2.11.jar:6.2.11]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-6.2.11.jar:6.2.11]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.2.11.jar:6.2.11]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-6.2.11.jar:6.2.11]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.2.11.jar:6.2.11]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.springframework.web.filter.ServerHttpObservationFilter.doFilterInternal(ServerHttpObservationFilter.java:110) ~[spring-web-6.2.11.jar:6.2.11]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.2.11.jar:6.2.11]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-6.2.11.jar:6.2.11]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.2.11.jar:6.2.11]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:483) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:116) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:733) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:398) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1776) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at java.base/java.lang.VirtualThread.run(Unknown Source) ~[na:na]
2025-09-19T12:43:53.510Z ERROR 1 --- [Zookeepers Service Registry] [omcat-handler-4] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [java.lang.NullPointerException: Cannot invoke "com.netflix.eureka.registry.ResponseCache.invalidate(String, String, String)" because "this.responseCache" is null] with root cause
java.lang.NullPointerException: Cannot invoke "com.netflix.eureka.registry.ResponseCache.invalidate(String, String, String)" because "this.responseCache" is null
at com.netflix.eureka.registry.AbstractInstanceRegistry.invalidateCache(AbstractInstanceRegistry.java:1193) ~[eureka-core-2.0.4.jar:2.0.4]
at com.netflix.eureka.registry.AbstractInstanceRegistry.register(AbstractInstanceRegistry.java:276) ~[eureka-core-2.0.4.jar:2.0.4]
at com.netflix.eureka.registry.PeerAwareInstanceRegistryImpl.register(PeerAwareInstanceRegistryImpl.java:411) ~[eureka-core-2.0.4.jar:2.0.4]
at org.springframework.cloud.netflix.eureka.server.InstanceRegistry.register(InstanceRegistry.java:88) ~[spring-cloud-netflix-eureka-server-4.3.0.jar:4.3.0]
at com.netflix.eureka.resources.ApplicationResource.addInstance(ApplicationResource.java:186) ~[eureka-core-2.0.4.jar:2.0.4]
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Unknown Source) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Unknown Source) ~[na:na]
at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) ~[jersey-server-3.1.11.jar:na]
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) ~[jersey-server-3.1.11.jar:na]
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) ~[jersey-server-3.1.11.jar:na]
at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:176) ~[jersey-server-3.1.11.jar:na]
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) ~[jersey-server-3.1.11.jar:na]
at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) ~[jersey-server-3.1.11.jar:na]
at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) ~[jersey-server-3.1.11.jar:na]
at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) ~[jersey-server-3.1.11.jar:na]
at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) ~[jersey-server-3.1.11.jar:na]
at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) ~[jersey-common-3.1.11.jar:na]
at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) ~[jersey-common-3.1.11.jar:na]
at org.glassfish.jersey.internal.Errors.process(Errors.java:292) ~[jersey-common-3.1.11.jar:na]
at org.glassfish.jersey.internal.Errors.process(Errors.java:274) ~[jersey-common-3.1.11.jar:na]
at org.glassfish.jersey.internal.Errors.process(Errors.java:244) ~[jersey-common-3.1.11.jar:na]
at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) ~[jersey-common-3.1.11.jar:na]
at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) ~[jersey-server-3.1.11.jar:na]
at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) ~[jersey-server-3.1.11.jar:na]
at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) ~[jersey-container-servlet-core-3.1.11.jar:na]
at org.glassfish.jersey.servlet.ServletContainer.serviceImpl(ServletContainer.java:378) ~[jersey-container-servlet-core-3.1.11.jar:na]
at org.glassfish.jersey.servlet.ServletContainer.doFilter(ServletContainer.java:554) ~[jersey-container-servlet-core-3.1.11.jar:na]
at org.glassfish.jersey.servlet.ServletContainer.doFilter(ServletContainer.java:494) ~[jersey-container-servlet-core-3.1.11.jar:na]
at org.glassfish.jersey.servlet.ServletContainer.doFilter(ServletContainer.java:431) ~[jersey-container-servlet-core-3.1.11.jar:na]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.springframework.cloud.netflix.eureka.server.EurekaServerAutoConfiguration$1.doFilterInternal(EurekaServerAutoConfiguration.java:304) ~[spring-cloud-netflix-eureka-server-4.3.0.jar:4.3.0]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.2.11.jar:6.2.11]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-6.2.11.jar:6.2.11]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.2.11.jar:6.2.11]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-6.2.11.jar:6.2.11]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.2.11.jar:6.2.11]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.springframework.web.filter.ServerHttpObservationFilter.doFilterInternal(ServerHttpObservationFilter.java:110) ~[spring-web-6.2.11.jar:6.2.11]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.2.11.jar:6.2.11]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-6.2.11.jar:6.2.11]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.2.11.jar:6.2.11]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:483) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:116) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:733) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:398) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1776) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at java.base/java.lang.VirtualThread.run(Unknown Source) ~[na:na]
2025-09-19T13:07:39.964Z ERROR 1 --- [Zookeepers Service Registry] [mcat-handler-33] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [java.lang.NullPointerException: Cannot invoke "com.netflix.eureka.cluster.PeerEurekaNodes.getPeerEurekaNodes()" because "this.peerEurekaNodes" is null] with root cause
java.lang.NullPointerException: Cannot invoke "com.netflix.eureka.cluster.PeerEurekaNodes.getPeerEurekaNodes()" because "this.peerEurekaNodes" is null
at com.netflix.eureka.registry.PeerAwareInstanceRegistryImpl.replicateToPeers(PeerAwareInstanceRegistryImpl.java:635) ~[eureka-core-2.0.4.jar:2.0.4]
at com.netflix.eureka.registry.PeerAwareInstanceRegistryImpl.renew(PeerAwareInstanceRegistryImpl.java:423) ~[eureka-core-2.0.4.jar:2.0.4]
at org.springframework.cloud.netflix.eureka.server.InstanceRegistry.renew(InstanceRegistry.java:103) ~[spring-cloud-netflix-eureka-server-4.3.0.jar:4.3.0]
at com.netflix.eureka.resources.InstanceResource.renewLease(InstanceResource.java:112) ~[eureka-core-2.0.4.jar:2.0.4]
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Unknown Source) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Unknown Source) ~[na:na]
at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) ~[jersey-server-3.1.11.jar:na]
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) ~[jersey-server-3.1.11.jar:na]
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) ~[jersey-server-3.1.11.jar:na]
at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:176) ~[jersey-server-3.1.11.jar:na]
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) ~[jersey-server-3.1.11.jar:na]
at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) ~[jersey-server-3.1.11.jar:na]
at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) ~[jersey-server-3.1.11.jar:na]
at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) ~[jersey-server-3.1.11.jar:na]
at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) ~[jersey-server-3.1.11.jar:na]
at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) ~[jersey-common-3.1.11.jar:na]
at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) ~[jersey-common-3.1.11.jar:na]
at org.glassfish.jersey.internal.Errors.process(Errors.java:292) ~[jersey-common-3.1.11.jar:na]
at org.glassfish.jersey.internal.Errors.process(Errors.java:274) ~[jersey-common-3.1.11.jar:na]
at org.glassfish.jersey.internal.Errors.process(Errors.java:244) ~[jersey-common-3.1.11.jar:na]
at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) ~[jersey-common-3.1.11.jar:na]
at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) ~[jersey-server-3.1.11.jar:na]
at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) ~[jersey-server-3.1.11.jar:na]
at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) ~[jersey-container-servlet-core-3.1.11.jar:na]
at org.glassfish.jersey.servlet.ServletContainer.serviceImpl(ServletContainer.java:378) ~[jersey-container-servlet-core-3.1.11.jar:na]
at org.glassfish.jersey.servlet.ServletContainer.doFilter(ServletContainer.java:554) ~[jersey-container-servlet-core-3.1.11.jar:na]
at org.glassfish.jersey.servlet.ServletContainer.doFilter(ServletContainer.java:494) ~[jersey-container-servlet-core-3.1.11.jar:na]
at org.glassfish.jersey.servlet.ServletContainer.doFilter(ServletContainer.java:431) ~[jersey-container-servlet-core-3.1.11.jar:na]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.springframework.cloud.netflix.eureka.server.EurekaServerAutoConfiguration$1.doFilterInternal(EurekaServerAutoConfiguration.java:304) ~[spring-cloud-netflix-eureka-server-4.3.0.jar:4.3.0]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.2.11.jar:6.2.11]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-6.2.11.jar:6.2.11]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.2.11.jar:6.2.11]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-6.2.11.jar:6.2.11]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.2.11.jar:6.2.11]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.springframework.web.filter.ServerHttpObservationFilter.doFilterInternal(ServerHttpObservationFilter.java:110) ~[spring-web-6.2.11.jar:6.2.11]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.2.11.jar:6.2.11]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-6.2.11.jar:6.2.11]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.2.11.jar:6.2.11]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:483) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:116) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:733) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:398) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1776) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-10.1.46.jar:10.1.46]
at java.base/java.lang.VirtualThread.run(Unknown Source) ~[na:na]
Dockerfile
# check=error=true
FROM foo/sdbi/ubi-zulu-openjdk-jre-25:25.0.0 AS builder
COPY service-registry-1.3.0-SNAPSHOT.jar ./
# See https://docs.spring.io/spring-boot/reference/packaging/container-images/dockerfiles.html
RUN ["java", "-Djarmode=tools", "-jar", "service-registry-1.3.0-SNAPSHOT.jar", "extract", "--layers", "--force", "--destination", "."]
FROM foo/sdbi/ubi-zulu-openjdk-jre-25:25.0.0
EXPOSE 8761
# See https://docs.oracle.com/en/java/javase/25/docs/specs/man/java.html#using-the-jdk_java_options-launcher-environment-variable
ENV JDK_JAVA_OPTIONS "-XX:+UseZGC -XX:+UseCompactObjectHeaders --sun-misc-unsafe-memory-access=allow --enable-native-access=ALL-UNNAMED -Dspring.aot.enabled=true"
# See https://docs.spring.io/spring-boot/reference/packaging/container-images/dockerfiles.html
WORKDIR /service-registry
COPY --from=builder dependencies/ ./
COPY --from=builder spring-boot-loader/ ./
COPY --from=builder snapshot-dependencies/ ./
COPY --from=builder application/ ./
RUN ["java", "-XX:AOTCacheOutput=service-registry-1.3.0-SNAPSHOT.aot", "-Dspring.context.exit=onRefresh", "-jar", "service-registry-1.3.0-SNAPSHOT.jar"]
ENTRYPOINT ["java", "-XX:AOTCache=service-registry-1.3.0-SNAPSHOT.aot", "-jar", "service-registry-1.3.0-SNAPSHOT.jar"]
application.yaml
on the classpath
spring:
main.keep-alive: true
cloud:
refresh.enabled: false
loadbalancer.enabled: false
threads.virtual.enabled: true
application.name: Zookeepers Service Registry
server:
port: ${ZKSR_SERVER_PORT:8761}
http2.enabled: true
compression.enabled: true
servlet.jsp.registered: false
management.endpoint.health:
show-components: always
show-details: always
management.health:
# We have no TLS key material to monitor
ssl.enabled: false
# Useless since the whole refresh scope is disabled due to AOT
refresh.enabled: false
eureka:
instance.hostname: ${HOSTNAME:localhost}
server:
batch-replication: true
enable-replicated-request-compression: true
client:
jersey.enabled: false
fetch-registry: false
restclient.enabled: true
register-with-eureka: false
serviceUrl.defaultZone: http://${eureka.instance.hostname}:${server.port}/${server.servlet.context-path:}/eureka
logging.level:
root: info
com.netflix.eureka: warn
com.netflix.discovery: warn
org.hibernate.validator.internal.util.Version: warn
Comment From: cdprete
@OlgaMaciaszek
Do you know if Java 25 and AOT should be, at least, supported by default?
Comment From: OlgaMaciaszek
Thanks, @cdprete. It should work. I will look into it later this month.
Comment From: cdprete
I can see also tons of
2025-09-19T12:43:59.906Z WARN 1 --- [Zookeepers Monitoring] [reshExecutor-%d] c.n.d.s.t.d.RetryableEurekaHttpClient : Request execution failed with message: JSON decoding error: Root name ('timestamp') does not match expected ('applications') for type `com.netflix.discovery.shared.Applications`
in my client.
Comment From: cdprete
@OlgaMaciaszek The NPEs seems to be caused by spring.aot.enabled=true
. Without it there are no issues.