1.31.0 release notes
13th November 2024
🌟 New features
Dynamic TLS Configuration: You can now update TLS configurations dynamically using
TlsProvider
#5033 #5228You can create a
TlsProvider
which specifiesTlsKeyPair
dynamically.// return a TlsKeyPair for host patterns TlsProvider tlsProvider = TlsProvider .builder() .keyPair("*.a.com", TlsKeyPair.of(...)) .keyPair("*.b.com", TlsKeyPair.of(...)) .build(); // return a TlsKeyPair dynamically TlsProvider tlsProvider = hostname -> TlsKeyPair.of(...);
The
TlsProvider
can be used for both servers and clients.// client-side ClientFactory .builder() .tlsProvider(tlsProvider); // server-side Server .builder() .tlsProvider(tlsProvider);
Access to Raw Request Path: You can access the raw request path via
ServiceRequestContext.rawPath()
. #5931 #5932- This can be useful when you need to get the original request path sent from the client, even if it's potentially insecure.
ServiceRequestContext ctx = ...; String rawPath = ctx.rawPath(); // rawPath may contain unencoded, invalid or insecure characters.
- This can be useful when you need to get the original request path sent from the client, even if it's potentially insecure.
Additional Static Factory Methods for ResponseEntity: More static factory methods are added for
ResponseEntity
. #5954ResponseEntity<Object> response = ResponseEntity.of(200); ResponseEntity<String> response = ResponseEntity.of("Hello!");
Timeout Support for HttpRequest and HttpResponse: You can specify
HttpRequest.timeout()
orHttpResponse.timeout()
to set a timeout for anHttpRequest
orHttpResponse
. #5744 #5761HttpRequest .streaming(HttpMethod.GET, "/") .timeout(Duration.ofSeconds(1)) // timeout if there is a delay exceeding 1 second between each data chunk
Nacos Integration for Server Registration and Endpoint Retrieval: You can now register your server to or retrieve
Endpoints
from a Nacos registry server. #5365 #5409- Use
NacosUpdatingListener
to register theServers
to Nacos:Server server = ...; server.addListener( NacosUpdatingListener .builder(nacosUri, "my-service") ... .build());
- Use
NacosEndpointGroup
for clients:EndpointGroup group = NacosEndpointGroup.of(nacosUri, "my-service"); WebClient client = WebClient.of(SessionProtocol.HTTP, group);
- Use
📈 Improvements
XdsEndpointGroup
now supportsdisable_active_health_check
. #5879
🛠️ Bug fixes
- DNS resolver now correctly adds search domains for hostnames with trailing dots. #5963
- CORS headers for failed requests are now correctly set even when a custom
ServerErrorHandler
is configured. #5493 #5939 - Fixed a bug where
AsyncServerInterceptor
is incompatible with the OpenTelemetry gRPC agent. #5937 #5938 - The GraalVM native image metadata has been updated to reflect recent code changes. #5946
- Spring Actuator correctly collects metrics when using Spring WebFlux integration. #5882 #5884
☢️ Breaking changes
- ABI compatibility of
ResponseEntity.of()
has been broken. #5954
⛓ Dependencies
- Brotli4j 1.16.0 → 1.17.0
- java-control-plane 1.0.45 → 1.0.46
- Eureka 2.0.3 → 2.0.4
- GraphQL Kotlin 7.1.4 → 8.2.1
- Java gRPC 1.65.1 → 1.68.1
- Jackson 2.17.2 → 2.18.1
- Jetty
- 11.0.22 → 11.0.24
- 12.0.12 → 12.0.14
- Kotlin 3.8.0 → 3.8.1
- Kotlin coroutines 1.8.1 → 1.9.0
- Fabric8 Kubernetes Client 6.13.1 → 6.13.4
- Micrometer 1.13.2 → 1.13.6
- Micrometer Tracing 1.3.2 → 1.3.5
- Netty 4.1.112.Final → 4.1.115.Final
- prometheus 1.3.1 → 1.3.2
- Protobuf 3.25.1 → 3.25.5
- protobuf-jackson 2.5.0 → 2.6.0
- Reactor 3.6.8 → 3.6.11
- RXJava 3.1.8 → 3.1.9
- Sangria 4.1.1 → 4.2.2
- Scala
- 2.12.19 → 2.12.20
- 2.13.14 → 2.13.15
- 3.4.2 → 3.6.1
- Spring 6.1.11 → 6.1.14
- Spring Boot 3.3.2 → 3.3.5
- Tomcat
- 9.0.91 → 9.0.96
- 10.1.26 → 10.1.31