chore: raise minimum required JDK to 21
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 983be26..3168be4 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -22,14 +22,14 @@
 
 env:
   MAVEN_OPTS: -Dmaven.wagon.httpconnectionManager.ttlSeconds=25 -Dmaven.wagon.http.retryHandler.count=3
-  BASE_JAVA_VERSION: 17
+  BASE_JAVA_VERSION: 21
   DEFAULT_JAVA_DISTRIBUTION: 'temurin'
 jobs:
   build:
     strategy:
       fail-fast: false
       matrix:
-        java: [ 17, 21, 25 ]
+        java: [ 21, 25 ]
     name: "Java ${{ matrix.java }}"
     runs-on: ubuntu-24.04
     steps:
diff --git a/modules/samples/swagger-server/pom.xml b/modules/samples/swagger-server/pom.xml
index 1eb214c..692a797 100644
--- a/modules/samples/swagger-server/pom.xml
+++ b/modules/samples/swagger-server/pom.xml
@@ -40,8 +40,8 @@
     </description>
 
     <properties>
-        <maven.compiler.source>17</maven.compiler.source>
-        <maven.compiler.target>17</maven.compiler.target>
+        <maven.compiler.source>21</maven.compiler.source>
+        <maven.compiler.target>21</maven.compiler.target>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <moshi.version>1.15.0</moshi.version>
     </properties>
@@ -120,8 +120,8 @@
                 <artifactId>maven-compiler-plugin</artifactId>
                 <version>3.14.1</version>
                 <configuration>
-                    <source>17</source>
-                    <target>17</target>
+                    <source>21</source>
+                    <target>21</target>
                 </configuration>
             </plugin>
 
diff --git a/modules/samples/userguide/src/userguide/springbootdemo/pom.xml b/modules/samples/userguide/src/userguide/springbootdemo/pom.xml
index 6ecc503..46cd76e 100644
--- a/modules/samples/userguide/src/userguide/springbootdemo/pom.xml
+++ b/modules/samples/userguide/src/userguide/springbootdemo/pom.xml
@@ -40,7 +40,7 @@
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
-        <java.version>17</java.version>
+        <java.version>21</java.version>
         <spring-boot.version>3.4.3</spring-boot.version>
     </properties>
 
diff --git a/pom.xml b/pom.xml
index 80989df..bc905df 100644
--- a/pom.xml
+++ b/pom.xml
@@ -506,7 +506,7 @@
              http://maven.apache.org/plugins/maven-site-plugin/examples/creating-content.html -->
         <axis2_version>${project.version}</axis2_version>
         <project.build.outputTimestamp>2025-03-04T22:45:29Z</project.build.outputTimestamp>
-        <maven.compiler.release>17</maven.compiler.release>
+        <maven.compiler.release>21</maven.compiler.release>
         <jacoco.version>0.8.14</jacoco.version>
         <asm.version>9.9.1</asm.version>
         <swagger.version>2.2.45</swagger.version>
@@ -1293,8 +1293,8 @@
                                     <version>3.6.0</version>
                                 </requireMavenVersion>
                                 <requireJavaVersion>
-                                    <!-- We require Java 17+ for the build, supporting up to Java 25 -->
-                                    <version>[17,26)</version>
+                                    <!-- We require Java 21+ for the build, supporting up to Java 25 -->
+                                    <version>[21,26)</version>
                                 </requireJavaVersion>
                                 <requireNoRepositories>
                                     <message>The POM must not include repository definitions since non Apache repositories threaten the build stability.</message>