This is an automated email from the ASF dual-hosted git repository.

gitgabrio pushed a commit to branch main
in repository 
https://gitbox.apache.org/repos/asf/incubator-kie-kogito-runtimes.git


The following commit(s) were added to refs/heads/main by this push:
     new 116ad8bada [incubator-kie-issues#2288] - Springboot 4.0.x upgrade  
(#4270)
116ad8bada is described below

commit 116ad8bada530c647b7603a0aa645d016dbcdaaa
Author: Nithin R Krishnan <[email protected]>
AuthorDate: Mon May 18 14:05:21 2026 +0530

    [incubator-kie-issues#2288] - Springboot 4.0.x upgrade  (#4270)
    
    * feat: Upgrade dependencies and adapt to Spring Boot 4
    
    - Updated Spring Framework dependencies to version 7.0.6 and Spring Boot to 
4.0.5.
    - Bumped Jackson dependencies to version 2.21.2 and Logback to 1.5.32.
    - Adjusted Infinispan health check implementation to accommodate changes in 
Infinispan 15.x.
    - Refactored GlobalObjectMapper to use ObjectMapper directly instead of 
Jackson2ObjectMapperBuilderCustomizer.
    - Updated test configurations to use MockitoBean for mocking.
    - Modified various resource templates to handle HTTP headers correctly.
    - Introduced compatibility shims for transitioning to Spring Boot 4, 
including CacheAutoConfiguration.
    - Increased timeout for parallel persistence tests due to performance 
changes in Spring Boot 4.
    - Added new properties for Netty version management specific to Spring Boot.
    - Updated MongoDB connection properties to support changes in Spring Boot 4.
    
    * ci: trigger build
    
    * Update PostgreSQL dependency version to 42.7.11
    
    * Refactor BOM comments and update Jackson migration notes for Spring Boot 
4 compatibility
    
    * Update generatedSourcesDir path to use Gradle's build directory
    
    * Refactor JUnit version management in BOM for clarity and consistency
    
    * Refactor Jackson migration comments to clarify removal plans for Jackson 
2 components
    
    * Refactor JUnit version properties for consistency in dependency management
    
    * Refactor MongoDB connection property comments for clarity and accuracy
    
    * Refactor projectBuildOutputDirectory and generatedSourcesDir 
initialization for clarity and consistency
    
    * Refactor TIMEOUT duration in PersistenceTest for optimized performance
    
    * ci: retrigger
    
    * netty patch version matching cve
---
 kogito-build/kogito-dependencies-bom/pom.xml       | 82 ++++++++++++++--------
 .../config/GlobalObjectMapperSpringTemplate.java   | 28 ++++----
 .../RestResourceSignalSpringTemplate.java          |  2 +-
 .../RestResourceSpringTemplate.java                |  2 +-
 .../infinispan/health/InfinispanHealthCheck.java   | 65 +++++------------
 .../SpringbootMongoDBEventPublisherTest.java       |  4 +-
 .../SpringBootExplainableResourceTest.java         |  2 +-
 .../KieFlywaySpringbootAutoConfiguration.java      |  2 +-
 .../SpringBootUserTaskJPAAutoConfiguration.java    |  2 +-
 .../AddonObjectMapperBuilderCustomizer.java        | 18 ++++-
 .../AddonObjectMapperBuilderCustomizerTest.java    | 10 +--
 .../org/kie/kogito/addons/springboot/k8s/App.java  | 10 +++
 springboot/addons/messaging/implementation/pom.xml |  6 +-
 .../spring/SpringKafkaConsumerConfig.java          |  4 +-
 springboot/bom/pom.xml                             | 10 +--
 .../springboot/MonitoringTest.java                 |  2 -
 .../cache/CacheAutoConfiguration.java}             | 17 ++---
 springboot/pom.xml                                 | 69 ++++++++++++++++++
 .../kogito-processes-spring-boot-starter/pom.xml   |  6 ++
 .../kogito/process/ProcessesHealthIndicator.java   |  4 +-
 .../springboot/MongoDBSpringBootTestResource.java  | 11 ++-
 21 files changed, 226 insertions(+), 130 deletions(-)

diff --git a/kogito-build/kogito-dependencies-bom/pom.xml 
b/kogito-build/kogito-dependencies-bom/pom.xml
index 974a6429b6..64a9e60d76 100644
--- a/kogito-build/kogito-dependencies-bom/pom.xml
+++ b/kogito-build/kogito-dependencies-bom/pom.xml
@@ -42,16 +42,16 @@
     <!-- this version property is used in plugins but also in dependencies too 
-->
     <version.io.quarkus>3.27.3</version.io.quarkus>
     
<version.io.quarkus.quarkus-test>${version.io.quarkus}</version.io.quarkus.quarkus-test>
-    <version.org.springframework>6.2.18</version.org.springframework>
-    <version.org.springframework.boot>3.5.14</version.org.springframework.boot>
+    <version.org.springframework>7.0.6</version.org.springframework>
+    <version.org.springframework.boot>4.0.5</version.org.springframework.boot>
     <version.org.apache.kafka>4.1.2</version.org.apache.kafka>
 
     
<version.org.bouncycastle.bc.jdk18on>1.84</version.org.bouncycastle.bc.jdk18on>
 
     <!-- dependencies versions -->
     <version.com.networknt>1.0.86</version.com.networknt>
-    <version.com.fasterxml.jackson>2.21.1</version.com.fasterxml.jackson>
-    
<version.com.fasterxml.jackson.databind>2.21.1</version.com.fasterxml.jackson.databind>
+    <version.com.fasterxml.jackson>2.21.2</version.com.fasterxml.jackson>
+    
<version.com.fasterxml.jackson.databind>2.21.2</version.com.fasterxml.jackson.databind>
     
<version.com.fasterxml.jackson.annotations>2.21</version.com.fasterxml.jackson.annotations>
     <version.com.jayway.jsonpath>2.9.0</version.com.jayway.jsonpath>
     <version.com.ongres.scram>3.2</version.com.ongres.scram>
@@ -64,7 +64,7 @@
     
<version.io.quarkiverse.embedded.postgresql>0.8.0</version.io.quarkiverse.embedded.postgresql>
     
<version.com.github.haifengl.smile>1.5.2</version.com.github.haifengl.smile>
     <version.com.github.javaparser>3.27.0</version.com.github.javaparser>
-    
<version.com.fasterxml.jackson.datatype>2.21.1</version.com.fasterxml.jackson.datatype>
+    
<version.com.fasterxml.jackson.datatype>2.21.2</version.com.fasterxml.jackson.datatype>
     <version.com.github.victools>4.37.0</version.com.github.victools>
     <version.org.wiremock>3.13.0</version.org.wiremock>
     <version.com.google.protobuf>3.25.5</version.com.google.protobuf>
@@ -75,11 +75,13 @@
     <version.com.sun.activation>2.0.2</version.com.sun.activation>
     <version.javax.inject>2.0.1</version.javax.inject>
     
<version.org.eclipse.microprofile.openapi>4.0.2</version.org.eclipse.microprofile.openapi>
-    <version.ch.qos.logback>1.5.25</version.ch.qos.logback>
+    <version.ch.qos.logback>1.5.32</version.ch.qos.logback>
     <version.jakarta.annotation-api>3.0.0</version.jakarta.annotation-api>
     <version.jakarta.validation-api>3.1.1</version.jakarta.validation-api>
     <version.jakarta.xml.bind-api>4.0.4</version.jakarta.xml.bind-api>
 
+    <!-- TODO move to per-runtime BOMs after the planned BOM split. Pinned 
4.1.x for Quarkus/Vert.x;
+         SB modules need 4.2.x and override per-artifact in 
springboot/pom.xml. -->
     <version.io.netty>4.1.133.Final</version.io.netty>
 
     <version.io.cloudevents>3.0.0</version.io.cloudevents>
@@ -89,10 +91,10 @@
     Kubernetes addons since they use a different version.
     -->
     
<version.io.fabric8.kubernetes-client>7.3.1</version.io.fabric8.kubernetes-client>
-    <version.io.micrometer>1.14.12</version.io.micrometer>
+    <version.io.micrometer>1.16.4</version.io.micrometer>
     <version.org.flywaydb>11.14.1</version.org.flywaydb>
     <version.org.postgresql>42.7.11</version.org.postgresql>
-    <version.com.h2>2.3.232</version.com.h2> <!-- Overriding version 2.3.230 
to fix https://github.com/h2database/h2database/issues/4079 -->
+    <version.com.h2>2.4.240</version.com.h2>
     <version.io.smallrye-open-api>4.0.12</version.io.smallrye-open-api>
     <version.io.smallrye-config>3.13.4</version.io.smallrye-config>
     <version.org.awaitility>4.3.0</version.org.awaitility>
@@ -109,12 +111,12 @@
     <version.io.swagger.parser.v3>2.1.34</version.io.swagger.parser.v3>
     <version.io.swagger.core.v3>2.2.38</version.io.swagger.core.v3>
 
-    <version.org.apache.commons>3.18.0</version.org.apache.commons>
+    <version.org.apache.commons>3.19.0</version.org.apache.commons>
     <version.commons.io>2.20.0</version.commons.io>
 
     <version.org.graalvm.nativeimage>23.1.2</version.org.graalvm.nativeimage>
 
-    <version.org.infinispan>15.0.21.Final</version.org.infinispan>
+    <version.org.infinispan>15.2.6.Final</version.org.infinispan>
     
<version.org.infinispan.protostream>5.0.13.Final</version.org.infinispan.protostream>
 
     <version.org.rocksdb>7.10.2</version.org.rocksdb>
@@ -137,12 +139,16 @@
     <version.org.assertj>3.27.7</version.org.assertj>
     <version.org.glassfish.jaxb>4.0.6</version.org.glassfish.jaxb>
     <version.org.json-unit-assertj>2.9.0</version.org.json-unit-assertj>
-    <version.org.hamcrest>2.2</version.org.hamcrest> <!-- else old version 
coming from Mockito wins and breaks tests -->
-    <version.org.junit>4.13.2</version.org.junit>
-    <version.org.junit.jupiter>5.13.4</version.org.junit.jupiter>
-    <version.org.junit.platform>1.13.4</version.org.junit.platform><!-- 
otherwise Quarkus brings its own, silently disabling some tests -->
+    <version.org.hamcrest>3.0</version.org.hamcrest> <!-- else old version 
coming from Mockito wins and breaks tests -->
+    <!-- JUnit 4 API for legacy test classes that still use org.junit.* 
annotations.
+         junit-vintage-engine (part of JUnit 6 below) runs them on the JUnit 
Platform. -->
+    <version.junit>4.13.2</version.junit>
+    <!-- JUnit 6: single pin for jupiter + platform + vintage via junit-bom. 
-->
+    <version.org.junit>6.0.3</version.org.junit>
     <version.org.mockito>5.18.0</version.org.mockito>
-    <version.org.testcontainers>2.0.3</version.org.testcontainers>
+    <version.org.testcontainers>2.0.4</version.org.testcontainers>
+    <!-- TODO move to the Spring-specific BOM after the planned BOM split. -->
+    <version.com.github.docker-java>3.7.1</version.com.github.docker-java><!-- 
align with testcontainers ABI; Quarkus BOM pins older docker-java missing 
ImageHistoryCmd -->
     <version.org.xmlunit-core>2.10.4</version.org.xmlunit-core>
     <version.io.rest-assured>5.5.6</version.io.rest-assured>
 
@@ -168,9 +174,11 @@
     <version.com.google.guava>33.4.8-jre</version.com.google.guava>
     
<version.apache.commons.commons-compress>1.28.0</version.apache.commons.commons-compress>
 
-    <version.tomcat.embed.core>10.1.54</version.tomcat.embed.core>
-    <version.org.hibernate>7.1.14.Final</version.org.hibernate>
-    <version.com.graphql-java>24.3</version.com.graphql-java>
+    <version.tomcat.embed.core>11.0.20</version.tomcat.embed.core>
+    <!-- TODO move to the Spring-specific BOM after the planned BOM split. 
Pinned 7.1.x because
+         Quarkus's quarkus-hibernate-orm uses 
org.hibernate.internal.CoreLogging, removed in 7.2.x. -->
+    <version.org.hibernate>7.1.18.Final</version.org.hibernate>
+    <version.com.graphql-java>25.0</version.com.graphql-java>
   </properties>
 
   <dependencyManagement>
@@ -839,7 +847,7 @@
       <dependency>
         <groupId>org.junit.jupiter</groupId>
         <artifactId>junit-jupiter-api</artifactId>
-        <version>${version.org.junit.jupiter}</version>
+        <version>${version.org.junit}</version>
         <scope>test</scope>
       </dependency>
       <dependency>
@@ -851,48 +859,48 @@
       <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
-        <version>${version.org.junit}</version>
+        <version>${version.junit}</version>
       </dependency>
       <dependency>
         <groupId>org.junit.jupiter</groupId>
         <artifactId>junit-jupiter</artifactId>
-        <version>${version.org.junit.jupiter}</version>
+        <version>${version.org.junit}</version>
         <scope>test</scope>
       </dependency>
-      <dependency> <!-- TODO move this dep into surefire-plugin when all 
modules are migrated to JUnit 5 -->
+      <dependency> <!-- move this dep into surefire-plugin when all modules 
are migrated to JUnit 5 -->
         <groupId>org.junit.jupiter</groupId>
         <artifactId>junit-jupiter-engine</artifactId>
-        <version>${version.org.junit.jupiter}</version>
+        <version>${version.org.junit}</version>
         <scope>test</scope>
       </dependency>
       <dependency>
         <groupId>org.junit.jupiter</groupId>
         <artifactId>junit-jupiter-params</artifactId>
-        <version>${version.org.junit.jupiter}</version>
+        <version>${version.org.junit}</version>
         <scope>test</scope>
       </dependency>
       <dependency>
         <groupId>org.junit.platform</groupId>
         <artifactId>junit-platform-engine</artifactId>
-        <version>${version.org.junit.platform}</version>
+        <version>${version.org.junit}</version>
         <scope>test</scope>
       </dependency>
       <dependency>
         <groupId>org.junit.platform</groupId>
         <artifactId>junit-platform-commons</artifactId>
-        <version>${version.org.junit.platform}</version>
+        <version>${version.org.junit}</version>
         <scope>test</scope>
       </dependency>
       <dependency>
         <groupId>org.junit.platform</groupId>
         <artifactId>junit-platform-launcher</artifactId>
-        <version>${version.org.junit.platform}</version>
+        <version>${version.org.junit}</version>
         <scope>test</scope>
       </dependency>
       <dependency>
         <groupId>org.junit.vintage</groupId>
         <artifactId>junit-vintage-engine</artifactId>
-        <version>${version.org.junit.jupiter}</version>
+        <version>${version.org.junit}</version>
         <scope>test</scope>
       </dependency>
 
@@ -941,6 +949,12 @@
         <version>${version.io.rest-assured}</version>
         <scope>test</scope>
       </dependency>
+      <dependency>
+        <groupId>io.rest-assured</groupId>
+        <artifactId>json-schema-validator</artifactId>
+        <version>${version.io.rest-assured}</version>
+        <scope>test</scope>
+      </dependency>
 
       <dependency>
         <groupId>net.bytebuddy</groupId>
@@ -1308,6 +1322,18 @@
         <version>${version.org.testcontainers}</version>
       </dependency>
 
+      <!-- TODO move to the Spring-specific BOM after the planned BOM split. 
-->
+      <dependency>
+        <groupId>com.github.docker-java</groupId>
+        <artifactId>docker-java-api</artifactId>
+        <version>${version.com.github.docker-java}</version>
+      </dependency>
+      <dependency>
+        <groupId>com.github.docker-java</groupId>
+        <artifactId>docker-java-transport-zerodep</artifactId>
+        <version>${version.com.github.docker-java}</version>
+      </dependency>
+
       <dependency>
         <groupId>org.testcontainers</groupId>
         <artifactId>testcontainers-kafka</artifactId>
diff --git 
a/kogito-codegen-modules/kogito-codegen-core/src/main/resources/class-templates/config/GlobalObjectMapperSpringTemplate.java
 
b/kogito-codegen-modules/kogito-codegen-core/src/main/resources/class-templates/config/GlobalObjectMapperSpringTemplate.java
index 77d853abd9..befe1953a7 100644
--- 
a/kogito-codegen-modules/kogito-codegen-core/src/main/resources/class-templates/config/GlobalObjectMapperSpringTemplate.java
+++ 
b/kogito-codegen-modules/kogito-codegen-core/src/main/resources/class-templates/config/GlobalObjectMapperSpringTemplate.java
@@ -24,7 +24,6 @@ import com.fasterxml.jackson.databind.SerializationFeature;
 import com.fasterxml.jackson.databind.util.StdDateFormat;
 import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
 
-import 
org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
 import org.springframework.boot.SpringBootConfiguration;
 import org.springframework.context.annotation.Bean;
 
@@ -33,24 +32,23 @@ import java.util.TimeZone;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
 
+// Jackson 2 @Bean (codegen template — emitted into every Spring Boot kogito 
app). Remove together with
+// https://github.com/apache/incubator-kie-drools/issues/6702 (Jackson 3 
migration).
 @SpringBootConfiguration
 public class GlobalObjectMapper {
-    
+
     @Autowired
     ConfigBean configBean;
 
     @Bean
-    public Jackson2ObjectMapperBuilderCustomizer customizeGlobalObjectMapper() 
{
-        return new Jackson2ObjectMapperBuilderCustomizer() {
-            @Override
-            public void customize(Jackson2ObjectMapperBuilder builder) {
-                if (!configBean.failOnEmptyBean()) {
-                    builder.featuresToDisable 
(SerializationFeature.FAIL_ON_EMPTY_BEANS);
-                }
-                
builder.featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
-                builder.dateFormat(new 
StdDateFormat().withColonInTimeZone(true).withTimeZone(TimeZone.getDefault()));
-                builder.modulesToInstall(new JavaTimeModule());
-            }
-        };
+    public ObjectMapper objectMapper() {
+        Jackson2ObjectMapperBuilder builder = 
Jackson2ObjectMapperBuilder.json();
+        if (!configBean.failOnEmptyBean()) {
+            
builder.featuresToDisable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
+        }
+        
builder.featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
+        builder.dateFormat(new 
StdDateFormat().withColonInTimeZone(true).withTimeZone(TimeZone.getDefault()));
+        builder.modulesToInstall(new JavaTimeModule());
+        return builder.build();
     }
-}
\ No newline at end of file
+}
diff --git 
a/kogito-codegen-modules/kogito-codegen-processes/src/main/resources/class-templates/RestResourceSignalSpringTemplate.java
 
b/kogito-codegen-modules/kogito-codegen-processes/src/main/resources/class-templates/RestResourceSignalSpringTemplate.java
index b6ac262dbb..fb697365da 100644
--- 
a/kogito-codegen-modules/kogito-codegen-processes/src/main/resources/class-templates/RestResourceSignalSpringTemplate.java
+++ 
b/kogito-codegen-modules/kogito-codegen-processes/src/main/resources/class-templates/RestResourceSignalSpringTemplate.java
@@ -45,7 +45,7 @@ public class $Type$Resource {
         this.processService.createProcessInstance(process,
                                                   businessKey,
                                                   model,
-                                                  httpHeaders,
+                                                  
httpHeaders.asMultiValueMap(),
                                                   
httpHeaders.getOrEmpty("X-KOGITO-StartFromNode").stream().findFirst().orElse(null),
                                                   "$signalName$",
                                                   
httpHeaders.getOrEmpty("X-KOGITO-ReferenceId").stream().findFirst().orElse(null),
diff --git 
a/kogito-codegen-modules/kogito-codegen-processes/src/main/resources/class-templates/RestResourceSpringTemplate.java
 
b/kogito-codegen-modules/kogito-codegen-processes/src/main/resources/class-templates/RestResourceSpringTemplate.java
index e4880ff753..fe227d7538 100644
--- 
a/kogito-codegen-modules/kogito-codegen-processes/src/main/resources/class-templates/RestResourceSpringTemplate.java
+++ 
b/kogito-codegen-modules/kogito-codegen-processes/src/main/resources/class-templates/RestResourceSpringTemplate.java
@@ -75,7 +75,7 @@ public class $Type$Resource {
         ProcessInstance<$Type$> pi = 
processService.createProcessInstance(process,
                                                                           
businessKey,
                                                                           
Optional.ofNullable(resource).orElse(new $Type$Input()).toModel(),
-                                                                          
httpHeaders,
+                                                                          
httpHeaders.asMultiValueMap(),
                                                                           
httpHeaders.getOrEmpty("X-KOGITO-StartFromNode").stream().findFirst().orElse(null),
                                                                           null,
                                                                           
httpHeaders.getOrEmpty("X-KOGITO-ReferenceId").stream().findFirst().orElse(null),
diff --git 
a/quarkus/addons/persistence/infinispan/health/src/main/java/org/kie/kogito/infinispan/health/InfinispanHealthCheck.java
 
b/quarkus/addons/persistence/infinispan/health/src/main/java/org/kie/kogito/infinispan/health/InfinispanHealthCheck.java
index 803f1ed141..874e0adb43 100644
--- 
a/quarkus/addons/persistence/infinispan/health/src/main/java/org/kie/kogito/infinispan/health/InfinispanHealthCheck.java
+++ 
b/quarkus/addons/persistence/infinispan/health/src/main/java/org/kie/kogito/infinispan/health/InfinispanHealthCheck.java
@@ -18,29 +18,24 @@
  */
 package org.kie.kogito.infinispan.health;
 
-import java.net.SocketAddress;
-import java.util.Collections;
 import java.util.Optional;
-import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 import org.eclipse.microprofile.health.HealthCheck;
 import org.eclipse.microprofile.health.HealthCheckResponse;
 import org.infinispan.client.hotrod.RemoteCacheManager;
-import org.infinispan.client.hotrod.configuration.Configuration;
-import org.infinispan.client.hotrod.event.impl.ClientListenerNotifier;
-import org.infinispan.client.hotrod.impl.operations.OperationsFactory;
-import org.infinispan.client.hotrod.impl.operations.PingOperation;
-import org.infinispan.client.hotrod.impl.operations.PingResponse;
-import org.infinispan.client.hotrod.impl.transport.netty.ChannelFactory;
 
 import jakarta.enterprise.inject.Instance;
 
 /**
  * This is a health check implementation for Infinispan Hot Rod Server, based 
on client and
- * {@link RemoteCacheManager}. Basically it executes a ping operation to all 
nodes and if all are down it responds as
- * Down, otherwise it responds as Up.
+ * {@link RemoteCacheManager}. Performs a remote roundtrip against the 
cluster: if it succeeds the
+ * server responds as Up, otherwise as Down.
  */
+// The "cluster reachable" probe uses RemoteCacheManager#getCacheNames() 
because Infinispan's
+// public hotrod API no longer exposes a per-server probe. Restore per-server 
probes if Infinispan
+// reintroduces them.
 public class InfinispanHealthCheck implements HealthCheck {
 
     private Optional<RemoteCacheManager> cacheManagerOptional;
@@ -54,49 +49,25 @@ public class InfinispanHealthCheck implements HealthCheck {
     @Override
     public HealthCheckResponse call() {
         return cacheManagerOptional.map(cacheManager -> {
-
-            final ChannelFactory channelFactory = 
cacheManager.getChannelFactory();
-            final Configuration configuration = 
cacheManager.getConfiguration();
-            final ClientListenerNotifier listenerNotifier = new 
ClientListenerNotifier(
-                    cacheManager.getMarshaller(),
-                    channelFactory,
-                    configuration);
-            final OperationsFactory operationsFactory = new 
OperationsFactory(channelFactory,
-                    listenerNotifier,
-                    configuration);
-
-            return Optional.of(channelFactory
-                    .getServers()
-                    .stream()
-                    .map(server -> invokePingOperation(channelFactory, 
operationsFactory, server)
-                            .thenApply(PingResponse::isSuccess)
-                            .exceptionally(ex -> false))
-                    .map(op -> {
-                        try {
-                            return op.get(500, TimeUnit.MILLISECONDS);
-                        } catch (Exception e) {
-                            return false;
-                        }
-                    })
-                    .allMatch(Boolean.FALSE::equals))
-                    .map(allDown -> buildResponse(channelFactory, !allDown))
-                    .orElse(buildResponse(channelFactory, false));
+            boolean up;
+            try {
+                cacheManager.getCacheNames();
+                up = true;
+            } catch (Exception ex) {
+                up = false;
+            }
+            return buildResponse(cacheManager, up);
         }).orElse(null);
     }
 
-    private HealthCheckResponse buildResponse(ChannelFactory channelFactory, 
boolean state) {
+    private HealthCheckResponse buildResponse(RemoteCacheManager cacheManager, 
boolean state) {
         return HealthCheckResponse.builder()
-                .withData("nodes", 
Optional.ofNullable(channelFactory.getServers())
-                        .orElse(Collections.emptyList())
-                        .stream()
-                        .map(String::valueOf)
+                .withData("nodes", 
Optional.ofNullable(cacheManager.getServers())
+                        .map(Stream::of)
+                        .orElseGet(Stream::empty)
                         .collect(Collectors.joining(",")))
                 .name(state ? "Infinispan is Up" : "Infinispan is Down")
                 .status(state)
                 .build();
     }
-
-    private PingOperation invokePingOperation(ChannelFactory channelFactory, 
OperationsFactory operationsFactory, SocketAddress server) {
-        return channelFactory.fetchChannelAndInvoke(server, 
operationsFactory.newPingOperation(true));
-    }
 }
diff --git 
a/springboot/addons/events/mongodb/src/test/java/org/kie/kogito/events/mongodb/SpringbootMongoDBEventPublisherTest.java
 
b/springboot/addons/events/mongodb/src/test/java/org/kie/kogito/events/mongodb/SpringbootMongoDBEventPublisherTest.java
index 979411595f..6b96ecbbcd 100644
--- 
a/springboot/addons/events/mongodb/src/test/java/org/kie/kogito/events/mongodb/SpringbootMongoDBEventPublisherTest.java
+++ 
b/springboot/addons/events/mongodb/src/test/java/org/kie/kogito/events/mongodb/SpringbootMongoDBEventPublisherTest.java
@@ -24,9 +24,9 @@ import 
org.kie.kogito.mongodb.transaction.AbstractTransactionManager;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.boot.test.context.TestConfiguration;
-import org.springframework.boot.test.mock.mockito.MockBean;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Primary;
+import org.springframework.test.context.bean.override.mockito.MockitoBean;
 import org.springframework.test.context.junit.jupiter.SpringExtension;
 
 import com.mongodb.client.MongoClient;
@@ -68,7 +68,7 @@ class SpringbootMongoDBEventPublisherTest {
     @Autowired
     MongoClient mongoClient;
 
-    @MockBean
+    @MockitoBean
     AbstractTransactionManager transactionManager;
 
     @Autowired
diff --git 
a/springboot/addons/explainability/src/test/java/org/kie/kogito/explainability/SpringBootExplainableResourceTest.java
 
b/springboot/addons/explainability/src/test/java/org/kie/kogito/explainability/SpringBootExplainableResourceTest.java
index b6d49dd9e2..0629f70103 100644
--- 
a/springboot/addons/explainability/src/test/java/org/kie/kogito/explainability/SpringBootExplainableResourceTest.java
+++ 
b/springboot/addons/explainability/src/test/java/org/kie/kogito/explainability/SpringBootExplainableResourceTest.java
@@ -106,7 +106,7 @@ class SpringBootExplainableResourceTest {
         input.getModelIdentifier().setResourceId(unknownwResourceId);
         ResponseEntity responseEntity = resource.predict(singletonList(input));
 
-        assertEquals(HttpStatus.BAD_REQUEST.value(), 
responseEntity.getStatusCodeValue());
+        assertEquals(HttpStatus.BAD_REQUEST.value(), 
responseEntity.getStatusCode().value());
         assertEquals("An Exception occurred processing the predict request. 
Please see the logs for more details.", responseEntity.getBody());
     }
 
diff --git 
a/springboot/addons/flyway/src/main/java/org/kie/flyway/springboot/KieFlywaySpringbootAutoConfiguration.java
 
b/springboot/addons/flyway/src/main/java/org/kie/flyway/springboot/KieFlywaySpringbootAutoConfiguration.java
index dba3430b91..f79a73013c 100644
--- 
a/springboot/addons/flyway/src/main/java/org/kie/flyway/springboot/KieFlywaySpringbootAutoConfiguration.java
+++ 
b/springboot/addons/flyway/src/main/java/org/kie/flyway/springboot/KieFlywaySpringbootAutoConfiguration.java
@@ -26,8 +26,8 @@ import org.springframework.beans.factory.ObjectProvider;
 import org.springframework.boot.autoconfigure.AutoConfiguration;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
 import 
org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration;
 import 
org.springframework.boot.sql.init.dependency.DatabaseInitializationDependencyConfigurer;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Import;
diff --git 
a/springboot/addons/jbpm-usertask-storage-jpa/src/main/java/org/jbpm/usertask/jpa/springboot/SpringBootUserTaskJPAAutoConfiguration.java
 
b/springboot/addons/jbpm-usertask-storage-jpa/src/main/java/org/jbpm/usertask/jpa/springboot/SpringBootUserTaskJPAAutoConfiguration.java
index 95c233937c..f2ec3a0da1 100644
--- 
a/springboot/addons/jbpm-usertask-storage-jpa/src/main/java/org/jbpm/usertask/jpa/springboot/SpringBootUserTaskJPAAutoConfiguration.java
+++ 
b/springboot/addons/jbpm-usertask-storage-jpa/src/main/java/org/jbpm/usertask/jpa/springboot/SpringBootUserTaskJPAAutoConfiguration.java
@@ -21,7 +21,7 @@ package org.jbpm.usertask.jpa.springboot;
 
 import org.springframework.beans.factory.config.BeanPostProcessor;
 import org.springframework.boot.SpringBootConfiguration;
-import org.springframework.boot.autoconfigure.domain.EntityScan;
+import org.springframework.boot.persistence.autoconfigure.EntityScan;
 import org.springframework.context.annotation.Bean;
 import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
 
diff --git 
a/springboot/addons/jobs/src/main/java/org/kie/kogito/jobs/management/springboot/AddonObjectMapperBuilderCustomizer.java
 
b/springboot/addons/jobs/src/main/java/org/kie/kogito/jobs/management/springboot/AddonObjectMapperBuilderCustomizer.java
index ee70bcbe61..1a264b59e1 100644
--- 
a/springboot/addons/jobs/src/main/java/org/kie/kogito/jobs/management/springboot/AddonObjectMapperBuilderCustomizer.java
+++ 
b/springboot/addons/jobs/src/main/java/org/kie/kogito/jobs/management/springboot/AddonObjectMapperBuilderCustomizer.java
@@ -19,15 +19,27 @@
 package org.kie.kogito.jobs.management.springboot;
 
 import org.kie.kogito.jobs.service.api.serialization.SerializationUtils;
-import 
org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
+import org.springframework.beans.factory.config.BeanPostProcessor;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+// Jackson 2 BeanPostProcessor (registers cloud-events descriptors on the 
autowired ObjectMapper). Remove
+// together with https://github.com/apache/incubator-kie-drools/issues/6702 
(Jackson 3 migration).
 @Configuration
 public class AddonObjectMapperBuilderCustomizer {
 
     @Bean
-    public Jackson2ObjectMapperBuilderCustomizer customizer() {
-        return builder -> 
builder.postConfigurer(SerializationUtils::registerDescriptors);
+    public static BeanPostProcessor addonObjectMapperPostProcessor() {
+        return new BeanPostProcessor() {
+            @Override
+            public Object postProcessAfterInitialization(Object bean, String 
beanName) {
+                if (bean instanceof ObjectMapper) {
+                    SerializationUtils.registerDescriptors((ObjectMapper) 
bean);
+                }
+                return bean;
+            }
+        };
     }
 }
diff --git 
a/springboot/addons/jobs/src/test/java/org/kie/kogito/jobs/management/springboot/AddonObjectMapperBuilderCustomizerTest.java
 
b/springboot/addons/jobs/src/test/java/org/kie/kogito/jobs/management/springboot/AddonObjectMapperBuilderCustomizerTest.java
index 980fb17f4a..2e4a1ea0df 100644
--- 
a/springboot/addons/jobs/src/test/java/org/kie/kogito/jobs/management/springboot/AddonObjectMapperBuilderCustomizerTest.java
+++ 
b/springboot/addons/jobs/src/test/java/org/kie/kogito/jobs/management/springboot/AddonObjectMapperBuilderCustomizerTest.java
@@ -19,14 +19,16 @@
 package org.kie.kogito.jobs.management.springboot;
 
 import org.junit.jupiter.api.Test;
-import 
org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
+import org.springframework.beans.factory.config.BeanPostProcessor;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
+// Jackson 2 test fixture for the BeanPostProcessor above. Remove together with
+// https://github.com/apache/incubator-kie-drools/issues/6702 (Jackson 3 
migration).
 class AddonObjectMapperBuilderCustomizerTest {
     @Test
-    void customizer() {
-        Jackson2ObjectMapperBuilderCustomizer customizer = new 
AddonObjectMapperBuilderCustomizer().customizer();
-        assertThat(customizer).isNotNull();
+    void postProcessor() {
+        BeanPostProcessor postProcessor = 
AddonObjectMapperBuilderCustomizer.addonObjectMapperPostProcessor();
+        assertThat(postProcessor).isNotNull();
     }
 }
diff --git 
a/springboot/addons/kubernetes/src/test/java/org/kie/kogito/addons/springboot/k8s/App.java
 
b/springboot/addons/kubernetes/src/test/java/org/kie/kogito/addons/springboot/k8s/App.java
index 0907c6abe1..f8c68dbee0 100644
--- 
a/springboot/addons/kubernetes/src/test/java/org/kie/kogito/addons/springboot/k8s/App.java
+++ 
b/springboot/addons/kubernetes/src/test/java/org/kie/kogito/addons/springboot/k8s/App.java
@@ -20,6 +20,9 @@ package org.kie.kogito.addons.springboot.k8s;
 
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.Bean;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
 
 @SpringBootApplication(scanBasePackages = 
"org.kie.kogito.addons.springboot.k8s.**")
 public class App {
@@ -28,4 +31,11 @@ public class App {
         SpringApplication.run(App.class, args);
     }
 
+    // Jackson 2 @Bean (test fixture; production apps get this from the 
codegen GlobalObjectMapper).
+    // Remove together with 
https://github.com/apache/incubator-kie-drools/issues/6702 (Jackson 3 
migration).
+    @Bean
+    ObjectMapper objectMapper() {
+        return new ObjectMapper();
+    }
+
 }
diff --git a/springboot/addons/messaging/implementation/pom.xml 
b/springboot/addons/messaging/implementation/pom.xml
index a488b3ab1a..3633463814 100644
--- a/springboot/addons/messaging/implementation/pom.xml
+++ b/springboot/addons/messaging/implementation/pom.xml
@@ -40,9 +40,11 @@
       <groupId>org.kie</groupId>
       <artifactId>kie-addons-messaging</artifactId>
     </dependency>
+    <!-- spring-boot-kafka: hosts the Kafka auto-configure classes. TODO move 
version pin to the
+         Spring-specific BOM after the planned BOM split. -->
     <dependency>
-      <groupId>org.springframework.kafka</groupId>
-      <artifactId>spring-kafka</artifactId>
+      <groupId>org.springframework.boot</groupId>
+      <artifactId>spring-boot-kafka</artifactId>
     </dependency>
     <dependency>
       <groupId>jakarta.annotation</groupId>
diff --git 
a/springboot/addons/messaging/implementation/src/main/java/org/kie/kogito/addon/cloudevents/spring/SpringKafkaConsumerConfig.java
 
b/springboot/addons/messaging/implementation/src/main/java/org/kie/kogito/addon/cloudevents/spring/SpringKafkaConsumerConfig.java
index fee6d22955..69f89d1eb2 100644
--- 
a/springboot/addons/messaging/implementation/src/main/java/org/kie/kogito/addon/cloudevents/spring/SpringKafkaConsumerConfig.java
+++ 
b/springboot/addons/messaging/implementation/src/main/java/org/kie/kogito/addon/cloudevents/spring/SpringKafkaConsumerConfig.java
@@ -21,8 +21,8 @@ package org.kie.kogito.addon.cloudevents.spring;
 import java.util.Map;
 
 import org.springframework.beans.factory.ObjectProvider;
-import 
org.springframework.boot.autoconfigure.kafka.DefaultKafkaConsumerFactoryCustomizer;
-import org.springframework.boot.autoconfigure.kafka.KafkaProperties;
+import 
org.springframework.boot.kafka.autoconfigure.DefaultKafkaConsumerFactoryCustomizer;
+import org.springframework.boot.kafka.autoconfigure.KafkaProperties;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.kafka.annotation.EnableKafka;
diff --git a/springboot/bom/pom.xml b/springboot/bom/pom.xml
index 4f70bbd5f3..3081d83837 100644
--- a/springboot/bom/pom.xml
+++ b/springboot/bom/pom.xml
@@ -42,10 +42,12 @@
     <version.org.apache.groovy>4.0.29</version.org.apache.groovy>
     <version.org.spockframework>2.2-groovy-4.0</version.org.spockframework>
     <!-- Spring Boot Cloud aligned with Spring Boot Framework version. See: 
https://spring.io/projects/spring-cloud -->
-    <!-- 
https://github.com/spring-cloud/spring-cloud-release/wiki/Spring-Cloud-2025.0-Release-Notes
 -->
-    
<version.org.springframework.cloud>2025.0.1</version.org.springframework.cloud>
-    <!-- Aligned with Spring Boot Cloud -->
-    <version.io.fabric8>7.3.1</version.io.fabric8>
+    <!-- 2025.1.x (Oakwood) is the first Spring Cloud train compatible with 
Spring Boot 4.0.x;
+         2025.1.1 specifically targets Spring Boot 4.0.1+. -->
+    <!-- 
https://github.com/spring-cloud/spring-cloud-release/wiki/Spring-Cloud-2025.1-Release-Notes
 -->
+    
<version.org.springframework.cloud>2025.1.1</version.org.springframework.cloud>
+    <!-- Aligned with Spring Boot Cloud (spring-cloud-kubernetes-fabric8 5.0.1 
declares fabric8 7.4.0) -->
+    <version.io.fabric8>7.4.0</version.io.fabric8>
   </properties>
   
   <dependencyManagement>
diff --git 
a/springboot/integration-tests/integration-tests-springboot-processes-it/src/test/java/org/kie/kogito/integrationtests/springboot/MonitoringTest.java
 
b/springboot/integration-tests/integration-tests-springboot-processes-it/src/test/java/org/kie/kogito/integrationtests/springboot/MonitoringTest.java
index 48d5bb1437..213b5ce081 100644
--- 
a/springboot/integration-tests/integration-tests-springboot-processes-it/src/test/java/org/kie/kogito/integrationtests/springboot/MonitoringTest.java
+++ 
b/springboot/integration-tests/integration-tests-springboot-processes-it/src/test/java/org/kie/kogito/integrationtests/springboot/MonitoringTest.java
@@ -25,7 +25,6 @@ import org.junit.jupiter.api.extension.ExtendWith;
 import org.kie.kogito.KogitoGAV;
 import org.kie.kogito.config.ConfigBean;
 import org.springframework.beans.factory.annotation.Autowired;
-import 
org.springframework.boot.test.autoconfigure.actuate.observability.AutoConfigureObservability;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit.jupiter.SpringExtension;
 
@@ -39,7 +38,6 @@ import static org.hamcrest.Matchers.emptyOrNullString;
 
 @ExtendWith(SpringExtension.class)
 @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, 
classes = KogitoSpringbootApplication.class)
-@AutoConfigureObservability
 public class MonitoringTest extends BaseRestTest {
 
     @Autowired
diff --git 
a/springboot/addons/kubernetes/src/test/java/org/kie/kogito/addons/springboot/k8s/App.java
 
b/springboot/integration-tests/integration-tests-springboot-processes-persistence-it/integration-tests-springboot-processes-infinispan/src/test/java/org/springframework/boot/autoconfigure/cache/CacheAutoConfiguration.java
similarity index 67%
copy from 
springboot/addons/kubernetes/src/test/java/org/kie/kogito/addons/springboot/k8s/App.java
copy to 
springboot/integration-tests/integration-tests-springboot-processes-persistence-it/integration-tests-springboot-processes-infinispan/src/test/java/org/springframework/boot/autoconfigure/cache/CacheAutoConfiguration.java
index 0907c6abe1..9fec3e233b 100644
--- 
a/springboot/addons/kubernetes/src/test/java/org/kie/kogito/addons/springboot/k8s/App.java
+++ 
b/springboot/integration-tests/integration-tests-springboot-processes-persistence-it/integration-tests-springboot-processes-infinispan/src/test/java/org/springframework/boot/autoconfigure/cache/CacheAutoConfiguration.java
@@ -16,16 +16,11 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.kie.kogito.addons.springboot.k8s;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-
-@SpringBootApplication(scanBasePackages = 
"org.kie.kogito.addons.springboot.k8s.**")
-public class App {
-
-    public static void main(String[] args) {
-        SpringApplication.run(App.class, args);
-    }
+package org.springframework.boot.autoconfigure.cache;
 
+// Empty stub at the legacy FQN. infinispan-spring-boot3-starter-remote 15.2.6 
declares
+// @AutoConfigureBefore(CacheAutoConfiguration.class) pointing here; the real 
class lives at
+// org.springframework.boot.cache.autoconfigure.CacheAutoConfiguration. Drop 
when the Infinispan
+// starter targets that FQN.
+public class CacheAutoConfiguration {
 }
diff --git a/springboot/pom.xml b/springboot/pom.xml
index 3735936fe2..089011bc32 100644
--- a/springboot/pom.xml
+++ b/springboot/pom.xml
@@ -34,6 +34,75 @@
   <name>Kogito :: Spring Boot</name>
   <packaging>pom</packaging>
 
+  <properties>
+    <!-- Override Netty to 4.2.x for SB modules. The shared 
kogito-dependencies-bom pins 4.1.x for
+         Quarkus/Vert.x, but Infinispan 15.x's Hot Rod client needs Netty 4.2 
(uses io.netty.channel.IoHandle).
+         Per-artifact pins below are required because BOM-imported entries 
cannot override the parent-
+         imported BOM's explicit versions. Add any new netty-* artifacts SB 
pulls in transitively here too.
+         TODO drop this block after the planned BOM split lets each runtime 
own its own Netty pin. -->
+    <version.io.netty>4.2.12.Final</version.io.netty>
+  </properties>
+
+  <dependencyManagement>
+    <dependencies>
+      <dependency>
+        <groupId>io.netty</groupId>
+        <artifactId>netty-buffer</artifactId>
+        <version>${version.io.netty}</version>
+      </dependency>
+      <dependency>
+        <groupId>io.netty</groupId>
+        <artifactId>netty-codec-dns</artifactId>
+        <version>${version.io.netty}</version>
+      </dependency>
+      <dependency>
+        <groupId>io.netty</groupId>
+        <artifactId>netty-codec-http</artifactId>
+        <version>${version.io.netty}</version>
+      </dependency>
+      <dependency>
+        <groupId>io.netty</groupId>
+        <artifactId>netty-codec-http2</artifactId>
+        <version>${version.io.netty}</version>
+      </dependency>
+      <dependency>
+        <groupId>io.netty</groupId>
+        <artifactId>netty-codec-socks</artifactId>
+        <version>${version.io.netty}</version>
+      </dependency>
+      <dependency>
+        <groupId>io.netty</groupId>
+        <artifactId>netty-common</artifactId>
+        <version>${version.io.netty}</version>
+      </dependency>
+      <dependency>
+        <groupId>io.netty</groupId>
+        <artifactId>netty-handler</artifactId>
+        <version>${version.io.netty}</version>
+      </dependency>
+      <dependency>
+        <groupId>io.netty</groupId>
+        <artifactId>netty-handler-proxy</artifactId>
+        <version>${version.io.netty}</version>
+      </dependency>
+      <dependency>
+        <groupId>io.netty</groupId>
+        <artifactId>netty-resolver</artifactId>
+        <version>${version.io.netty}</version>
+      </dependency>
+      <dependency>
+        <groupId>io.netty</groupId>
+        <artifactId>netty-resolver-dns</artifactId>
+        <version>${version.io.netty}</version>
+      </dependency>
+      <dependency>
+        <groupId>io.netty</groupId>
+        <artifactId>netty-transport</artifactId>
+        <version>${version.io.netty}</version>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
+
   <modules>
     <module>bom</module>
     <module>addons</module>
diff --git a/springboot/starters/kogito-processes-spring-boot-starter/pom.xml 
b/springboot/starters/kogito-processes-spring-boot-starter/pom.xml
index 33ac657e28..fa09f7bfc0 100644
--- a/springboot/starters/kogito-processes-spring-boot-starter/pom.xml
+++ b/springboot/starters/kogito-processes-spring-boot-starter/pom.xml
@@ -48,6 +48,12 @@
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-actuator-autoconfigure</artifactId>
     </dependency>
+    <!-- spring-boot-health: hosts the actuator health SPI. TODO move version 
pin to the
+         Spring-specific BOM after the planned BOM split. -->
+    <dependency>
+      <groupId>org.springframework.boot</groupId>
+      <artifactId>spring-boot-health</artifactId>
+    </dependency>
     <dependency>
       <groupId>org.kie.kogito</groupId>
       <artifactId>kogito-rest-workitem</artifactId>
diff --git 
a/springboot/starters/kogito-processes-spring-boot-starter/src/main/java/org/kie/kogito/process/ProcessesHealthIndicator.java
 
b/springboot/starters/kogito-processes-spring-boot-starter/src/main/java/org/kie/kogito/process/ProcessesHealthIndicator.java
index 9a4a5248f5..ad0ecf2e68 100644
--- 
a/springboot/starters/kogito-processes-spring-boot-starter/src/main/java/org/kie/kogito/process/ProcessesHealthIndicator.java
+++ 
b/springboot/starters/kogito-processes-spring-boot-starter/src/main/java/org/kie/kogito/process/ProcessesHealthIndicator.java
@@ -22,8 +22,8 @@ import java.util.HashMap;
 import java.util.Map;
 
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.actuate.health.Health;
-import org.springframework.boot.actuate.health.HealthIndicator;
+import org.springframework.boot.health.contributor.Health;
+import org.springframework.boot.health.contributor.HealthIndicator;
 import org.springframework.stereotype.Component;
 
 @Component
diff --git 
a/springboot/test/src/main/java/org/kie/kogito/testcontainers/springboot/MongoDBSpringBootTestResource.java
 
b/springboot/test/src/main/java/org/kie/kogito/testcontainers/springboot/MongoDBSpringBootTestResource.java
index f4550c52cc..b157504346 100644
--- 
a/springboot/test/src/main/java/org/kie/kogito/testcontainers/springboot/MongoDBSpringBootTestResource.java
+++ 
b/springboot/test/src/main/java/org/kie/kogito/testcontainers/springboot/MongoDBSpringBootTestResource.java
@@ -18,13 +18,12 @@
  */
 package org.kie.kogito.testcontainers.springboot;
 
+import java.util.HashMap;
 import java.util.Map;
 
 import org.kie.kogito.test.resources.ConditionalSpringBootTestResource;
 import org.kie.kogito.testcontainers.KogitoMongoDBContainer;
 
-import static java.util.Collections.singletonMap;
-
 /**
  * MongoDB spring boot resource that works within the test lifecycle.
  *
@@ -32,6 +31,8 @@ import static java.util.Collections.singletonMap;
 public class MongoDBSpringBootTestResource extends 
ConditionalSpringBootTestResource<KogitoMongoDBContainer> {
 
     public static final String MONGODB_CONNECTION_PROPERTY = 
"spring.data.mongodb.uri";
+    // MongoClient and Spring Data MongoDB read different prefixes; set both.
+    public static final String MONGODB_BASIC_CONNECTION_PROPERTY = 
"spring.mongodb.uri";
 
     public MongoDBSpringBootTestResource() {
         super(new KogitoMongoDBContainer());
@@ -39,7 +40,11 @@ public class MongoDBSpringBootTestResource extends 
ConditionalSpringBootTestReso
 
     @Override
     protected Map<String, String> getProperties() {
-        return singletonMap(MONGODB_CONNECTION_PROPERTY, 
getTestResource().getReplicaSetUrl());
+        Map<String, String> props = new HashMap<>();
+        String uri = getTestResource().getReplicaSetUrl();
+        props.put(MONGODB_CONNECTION_PROPERTY, uri);
+        props.put(MONGODB_BASIC_CONNECTION_PROPERTY, uri);
+        return props;
     }
 
     public static class Conditional extends MongoDBSpringBootTestResource {


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


Reply via email to