Merge pull request #565 from apache/dependabot/maven/org.apache.logging.log4j-log4j-bom-2.22.1

Bump org.apache.logging.log4j:log4j-bom from 2.20.0 to 2.22.1
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index d45ce8b..5db5dfa 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -35,7 +35,7 @@
     - name: Checkout
       uses: actions/checkout@v4
     - name: Cache Maven Repository
-      uses: actions/cache@v3
+      uses: actions/cache@v4
       with:
         path: ~/.m2/repository
         key: maven-java-${{ matrix.java }}-${{ hashFiles('**/pom.xml') }}
@@ -60,7 +60,7 @@
     - name: Checkout
       uses: actions/checkout@v4
     - name: Cache Maven Repository
-      uses: actions/cache@v3
+      uses: actions/cache@v4
       with:
         path: ~/.m2/repository
         key: maven-deploy-${{ hashFiles('**/pom.xml') }}
diff --git a/modules/clustering/pom.xml b/modules/clustering/pom.xml
index 4a8ce31..95cb069 100644
--- a/modules/clustering/pom.xml
+++ b/modules/clustering/pom.xml
@@ -43,7 +43,7 @@
     </scm>
 
     <properties>
-        <tomcat.version>10.1.17</tomcat.version>
+        <tomcat.version>10.1.18</tomcat.version>
     </properties>
 
     <dependencies>
diff --git a/modules/distribution/pom.xml b/modules/distribution/pom.xml
old mode 100755
new mode 100644
index fef1910..5b4daeb
--- a/modules/distribution/pom.xml
+++ b/modules/distribution/pom.xml
@@ -305,7 +305,11 @@
         <dependency>
             <groupId>com.fasterxml.woodstox</groupId>
             <artifactId>woodstox-core</artifactId>
-            <version>6.5.1</version>
+            <version>6.6.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-fileupload2-jakarta-servlet6</artifactId>
         </dependency>
         
         <!-- These are needed to run JAX-WS tools -->
@@ -414,8 +418,12 @@
                                     the script uses:
                                     ./target/axis2-1.8.3-SNAPSHOT/lib 		    
 			            When in doubt, look at the excludes
-			            section in bin-assembly.xml
-			        -->		    
+                                    section in bin-assembly.xml that
+                                    could be excluding jars with the 
+                                    wildcards in the filters.
+                                    To debug see logs for the message: 
+                                    "was removed by one or more filters"
+			        -->
                                 <script><![CDATA[
                                     import java.util.jar.*
                                     
@@ -432,7 +440,7 @@
                                     jar.close()
                                     
 				    println("From dir: " +project.properties['webapp']+ " , found these files: " + expected);
-				    println("They all must be in this dir: " + project.build.directory + "axis2-" + project.version + "/dist/axis2.war");
+					println("They all must be in this war: " + project.build.directory + "/axis2-" + project.version + "/dist/axis2.war");
                                     jar = new JarInputStream(new FileInputStream(new File(project.build.directory, "axis2-" + project.version + "/dist/axis2.war")))
                                     while(entry = jar.nextJarEntry) {
                                         if (entry.name != 'META-INF/' && !expected.remove(entry.name)) {
diff --git a/modules/fastinfoset/pom.xml b/modules/fastinfoset/pom.xml
index 0c244a1..f3927a8 100644
--- a/modules/fastinfoset/pom.xml
+++ b/modules/fastinfoset/pom.xml
@@ -66,8 +66,8 @@
             <artifactId>commons-logging</artifactId>
         </dependency>
         <dependency>
-            <groupId>commons-fileupload</groupId>
-            <artifactId>commons-fileupload</artifactId>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-fileupload2-core</artifactId>
         </dependency>
         <dependency>
             <groupId>org.apache.ws.xmlschema</groupId>
diff --git a/modules/jaxws/src/org/apache/axis2/jaxws/context/WebServiceContextImpl.java b/modules/jaxws/src/org/apache/axis2/jaxws/context/WebServiceContextImpl.java
index 3fa3035..6ad8a9c 100644
--- a/modules/jaxws/src/org/apache/axis2/jaxws/context/WebServiceContextImpl.java
+++ b/modules/jaxws/src/org/apache/axis2/jaxws/context/WebServiceContextImpl.java
@@ -26,7 +26,7 @@
 import org.apache.commons.logging.LogFactory;
 import org.w3c.dom.Element;
 
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
 import javax.xml.namespace.QName;
 import jakarta.xml.ws.EndpointReference;
 import jakarta.xml.ws.WebServiceContext;
diff --git a/modules/jaxws/src/org/apache/axis2/jaxws/context/utils/ContextUtils.java b/modules/jaxws/src/org/apache/axis2/jaxws/context/utils/ContextUtils.java
index 50e83e3..68d5aaa 100644
--- a/modules/jaxws/src/org/apache/axis2/jaxws/context/utils/ContextUtils.java
+++ b/modules/jaxws/src/org/apache/axis2/jaxws/context/utils/ContextUtils.java
@@ -44,9 +44,9 @@
 import org.apache.commons.logging.LogFactory;
 import org.w3c.dom.Element;
 
-import javax.servlet.ServletContext;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 import javax.xml.namespace.QName;
 import jakarta.xml.ws.WebServiceContext;
 import jakarta.xml.ws.handler.MessageContext.Scope;
diff --git a/modules/json/pom.xml b/modules/json/pom.xml
index a79ccea..7169724 100644
--- a/modules/json/pom.xml
+++ b/modules/json/pom.xml
@@ -43,7 +43,7 @@
     </scm>
 
     <properties>
-        <moshi.version>1.15.0</moshi.version>
+        <moshi.version>1.15.1</moshi.version>
     </properties>
 
     <dependencies>
diff --git a/modules/kernel/conf/axis2.xml b/modules/kernel/conf/axis2.xml
index d57b3ad..f31d6e6 100644
--- a/modules/kernel/conf/axis2.xml
+++ b/modules/kernel/conf/axis2.xml
@@ -25,6 +25,7 @@
     <parameter name="hotupdate">false</parameter>
     <parameter name="enableMTOM">false</parameter>
     <parameter name="enableSwA">false</parameter>
+    <parameter name="enableJSONOnly">false</parameter>
 
     <!--Uncomment if you want to enable file caching for attachments -->
     <!--parameter name="cacheAttachments">true</parameter>
diff --git a/modules/kernel/pom.xml b/modules/kernel/pom.xml
index 3da9c64..d85e7ea 100644
--- a/modules/kernel/pom.xml
+++ b/modules/kernel/pom.xml
@@ -66,12 +66,16 @@
             <artifactId>javax.transaction-api</artifactId>
         </dependency>
         <dependency>
-            <groupId>javax.servlet</groupId>
-            <artifactId>javax.servlet-api</artifactId>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-fileupload2-core</artifactId>
         </dependency>
         <dependency>
-            <groupId>commons-fileupload</groupId>
-            <artifactId>commons-fileupload</artifactId>
+            <groupId>jakarta.servlet</groupId>
+            <artifactId>jakarta.servlet-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-fileupload2-jakarta-servlet6</artifactId>
         </dependency>
         <dependency>
             <groupId>wsdl4j</groupId>
diff --git a/modules/kernel/src/org/apache/axis2/Constants.java b/modules/kernel/src/org/apache/axis2/Constants.java
index c02c509..011e30e 100644
--- a/modules/kernel/src/org/apache/axis2/Constants.java
+++ b/modules/kernel/src/org/apache/axis2/Constants.java
@@ -333,6 +333,7 @@
 
     public static interface Configuration {
         public static final String ENABLE_REST = "enableREST";
+        public static final String ENABLE_JSON_ONLY = "enableJSONOnly";
         public static final String ENABLE_HTTP_CONTENT_NEGOTIATION = "httpContentNegotiation";
         public static final String ENABLE_REST_THROUGH_GET = "restThroughGet";
 
diff --git a/modules/kernel/src/org/apache/axis2/builder/DiskFileDataSource.java b/modules/kernel/src/org/apache/axis2/builder/DiskFileDataSource.java
index 34160e9..c62269f 100644
--- a/modules/kernel/src/org/apache/axis2/builder/DiskFileDataSource.java
+++ b/modules/kernel/src/org/apache/axis2/builder/DiskFileDataSource.java
@@ -24,7 +24,7 @@
 
 import jakarta.activation.DataSource;
 
-import org.apache.commons.fileupload.disk.DiskFileItem;
+import org.apache.commons.fileupload2.core.DiskFileItem;
 
 public class DiskFileDataSource implements DataSource {
 
@@ -50,8 +50,8 @@
         return this.diskFileItem.getOutputStream();
     }
 
-    public void delete() {
+    public void delete() throws IOException {
         this.diskFileItem.delete();
     }
 
-}
\ No newline at end of file
+}
diff --git a/modules/kernel/src/org/apache/axis2/builder/MultipartFormDataBuilder.java b/modules/kernel/src/org/apache/axis2/builder/MultipartFormDataBuilder.java
index 8b2c1a5..7da0a1e 100644
--- a/modules/kernel/src/org/apache/axis2/builder/MultipartFormDataBuilder.java
+++ b/modules/kernel/src/org/apache/axis2/builder/MultipartFormDataBuilder.java
@@ -20,12 +20,15 @@
 package org.apache.axis2.builder;
 
 import java.io.InputStream;
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 
 import jakarta.activation.DataHandler;
 import jakarta.activation.DataSource;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
 
 import org.apache.axiom.om.OMAbstractFactory;
 import org.apache.axiom.om.OMElement;
@@ -34,12 +37,15 @@
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.kernel.http.HTTPConstants;
 import org.apache.axis2.util.MultipleEntryHashMap;
-import org.apache.commons.fileupload.FileItemFactory;
-import org.apache.commons.fileupload.FileUploadException;
-import org.apache.commons.fileupload.disk.DiskFileItem;
-import org.apache.commons.fileupload.disk.DiskFileItemFactory;
-import org.apache.commons.fileupload.servlet.ServletFileUpload;
-import org.apache.commons.fileupload.servlet.ServletRequestContext;
+import org.apache.commons.fileupload2.core.DiskFileItem;
+import org.apache.commons.fileupload2.core.DiskFileItemFactory;
+import org.apache.commons.fileupload2.core.FileItemFactory;
+import org.apache.commons.fileupload2.core.FileUploadException;
+import org.apache.commons.fileupload2.core.ParameterParser;
+import org.apache.commons.fileupload2.jakarta.servlet6.JakartaServletFileUpload;
+import org.apache.commons.fileupload2.jakarta.servlet6.JakartaServletRequestContext;
+import org.apache.commons.fileupload2.jakarta.servlet6.JakartaServletDiskFileUpload;
+import org.apache.commons.io.Charsets;
 
 public class MultipartFormDataBuilder implements Builder {
 
@@ -50,8 +56,13 @@
                                      MessageContext messageContext)
             throws AxisFault {
         MultipleEntryHashMap parameterMap;
-        HttpServletRequest request = (HttpServletRequest) messageContext
+        HttpServletRequest request = null;
+	try {
+            request = (HttpServletRequest) messageContext
                 .getProperty(HTTPConstants.MC_HTTP_SERVLETREQUEST);
+        } catch (Exception e) {
+            throw AxisFault.makeFault(e);
+        }
         if (request == null) {
             throw new AxisFault("Cannot create DocumentElement without HttpServletRequest");
         }
@@ -82,7 +93,7 @@
 
         MultipleEntryHashMap parameterMap = new MultipleEntryHashMap();
 
-        List items = parseRequest(new ServletRequestContext(request));
+        List items = parseRequest(new JakartaServletRequestContext(request));
         Iterator iter = items.iterator();
         while (iter.hasNext()) {
             DiskFileItem diskFileItem = (DiskFileItem)iter.next();
@@ -105,12 +116,13 @@
         return parameterMap;
     }
 
-    private static List parseRequest(ServletRequestContext requestContext)
+    private static List parseRequest(JakartaServletRequestContext requestContext)
             throws FileUploadException {
         // Create a factory for disk-based file items
-        FileItemFactory factory = new DiskFileItemFactory();
-        // Create a new file upload handler
-        ServletFileUpload upload = new ServletFileUpload(factory);
+	DiskFileItemFactory fileItemFactory = DiskFileItemFactory.builder()
+                .setCharset(StandardCharsets.UTF_8)
+                .get();
+        JakartaServletFileUpload upload = new JakartaServletFileUpload<>(fileItemFactory);
         // There must be a limit. 
         // This is for contentType="multipart/form-data"
         upload.setFileCountMax(1L);
@@ -121,17 +133,20 @@
     private String getTextParameter(DiskFileItem diskFileItem,
                                     String characterEncoding) throws Exception {
 
-        String encoding = diskFileItem.getCharSet();
-
+        String encoding = null;
+	final ParameterParser parser = new ParameterParser();
+        parser.setLowerCaseNames(true);
+        // Parameter parser can handle null input
+        final Map<String, String> params = parser.parse(diskFileItem.getContentType(), ';');
+        encoding = params.get("charset");
         if (encoding == null) {
             encoding = characterEncoding;
         }
-
         String textValue;
         if (encoding == null) {
             textValue = new String(diskFileItem.get());
         } else {
-            textValue = new String(diskFileItem.get(), encoding);
+            textValue = new String(diskFileItem.get(), Charsets.toCharset(diskFileItem.getCharset(), StandardCharsets.ISO_8859_1));
         }
 
         return textValue;
diff --git a/modules/kernel/src/org/apache/axis2/deployment/WarBasedAxisConfigurator.java b/modules/kernel/src/org/apache/axis2/deployment/WarBasedAxisConfigurator.java
index a580497..5cab93b 100644
--- a/modules/kernel/src/org/apache/axis2/deployment/WarBasedAxisConfigurator.java
+++ b/modules/kernel/src/org/apache/axis2/deployment/WarBasedAxisConfigurator.java
@@ -33,7 +33,7 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
-import javax.servlet.ServletConfig;
+import jakarta.servlet.ServletConfig;
 import javax.xml.stream.XMLStreamException;
 import java.io.File;
 import java.io.FileInputStream;
diff --git a/modules/kernel/src/org/apache/axis2/engine/DispatchPhase.java b/modules/kernel/src/org/apache/axis2/engine/DispatchPhase.java
index 24a96b0..472c019 100644
--- a/modules/kernel/src/org/apache/axis2/engine/DispatchPhase.java
+++ b/modules/kernel/src/org/apache/axis2/engine/DispatchPhase.java
@@ -45,7 +45,7 @@
 import org.apache.commons.logging.LogFactory;
 
 import javax.xml.namespace.QName;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
diff --git a/modules/kernel/src/org/apache/axis2/kernel/http/HTTPConstants.java b/modules/kernel/src/org/apache/axis2/kernel/http/HTTPConstants.java
index b6cc840..9a11dc4 100644
--- a/modules/kernel/src/org/apache/axis2/kernel/http/HTTPConstants.java
+++ b/modules/kernel/src/org/apache/axis2/kernel/http/HTTPConstants.java
@@ -37,6 +37,7 @@
     public static final String MEDIA_TYPE_APPLICATION_XML = "application/xml";
     public static final String MEDIA_TYPE_APPLICATION_SOAP_XML = "application/soap+xml";
     public static final String MEDIA_TYPE_APPLICATION_ECHO_XML = "application/echo+xml";
+    public static final String MEDIA_TYPE_APPLICATION_JSON = "application/json";
 
     /**
      * Field REQUEST_URI
diff --git a/modules/metadata/src/org/apache/axis2/jaxws/description/builder/JAXWSRIWSDLGenerator.java b/modules/metadata/src/org/apache/axis2/jaxws/description/builder/JAXWSRIWSDLGenerator.java
index a2e95d7..fcb53a0 100644
--- a/modules/metadata/src/org/apache/axis2/jaxws/description/builder/JAXWSRIWSDLGenerator.java
+++ b/modules/metadata/src/org/apache/axis2/jaxws/description/builder/JAXWSRIWSDLGenerator.java
@@ -44,8 +44,8 @@
 import org.w3c.dom.Document;
 import org.xml.sax.InputSource;
 
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletContext;
+import jakarta.servlet.ServletConfig;
+import jakarta.servlet.ServletContext;
 import javax.wsdl.Definition;
 import javax.wsdl.WSDLException;
 import javax.wsdl.xml.WSDLReader;
diff --git a/modules/osgi/pom.xml b/modules/osgi/pom.xml
index 9fa20d1..5597637 100644
--- a/modules/osgi/pom.xml
+++ b/modules/osgi/pom.xml
@@ -45,8 +45,8 @@
 
     <dependencies>
         <dependency>
-            <groupId>javax.servlet</groupId>
-            <artifactId>javax.servlet-api</artifactId>
+            <groupId>jakarta.servlet</groupId>
+            <artifactId>jakarta.servlet-api</artifactId>
             <scope>provided</scope>
         </dependency>
         <dependency>
@@ -98,6 +98,16 @@
             <version>1.5.0</version>
             <scope>provided</scope>
         </dependency>
+	<dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.service.jakartars</artifactId>
+            <version>2.0.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.service.servlet</artifactId>
+            <version>2.0.0</version>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/modules/osgi/src/org/apache/axis2/osgi/OSGiAxisServlet.java b/modules/osgi/src/org/apache/axis2/osgi/OSGiAxisServlet.java
index f9493c9..0747f8f 100644
--- a/modules/osgi/src/org/apache/axis2/osgi/OSGiAxisServlet.java
+++ b/modules/osgi/src/org/apache/axis2/osgi/OSGiAxisServlet.java
@@ -19,9 +19,9 @@
 import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.transport.http.AxisServlet;
 
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
+import jakarta.servlet.ServletConfig;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.ServletException;
 
 /**
  * This servlet is used with the association of HttpService.
diff --git a/modules/osgi/src/org/apache/axis2/osgi/core/web/ServletDescriptor.java b/modules/osgi/src/org/apache/axis2/osgi/core/web/ServletDescriptor.java
index 23adc04..0b1a936 100644
--- a/modules/osgi/src/org/apache/axis2/osgi/core/web/ServletDescriptor.java
+++ b/modules/osgi/src/org/apache/axis2/osgi/core/web/ServletDescriptor.java
@@ -19,7 +19,7 @@
 
 package org.apache.axis2.osgi.core.web;
 
-import javax.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServlet;
 import java.util.Hashtable;
 
 /**
diff --git a/modules/osgi/src/org/apache/axis2/osgi/core/web/WebApp.java b/modules/osgi/src/org/apache/axis2/osgi/core/web/WebApp.java
index 7cca428..d601075 100644
--- a/modules/osgi/src/org/apache/axis2/osgi/core/web/WebApp.java
+++ b/modules/osgi/src/org/apache/axis2/osgi/core/web/WebApp.java
@@ -22,25 +22,34 @@
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.BundleException;
 import org.osgi.framework.ServiceReference;
+import org.osgi.framework.ServiceRegistration;
+import org.osgi.service.servlet.context.ServletContextHelper;
+import org.osgi.service.servlet.runtime.HttpServiceRuntime;
 import org.osgi.service.http.HttpContext;
 import org.osgi.service.http.HttpService;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import java.io.IOException;
 import java.net.URL;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.HashMap;
 
 /**
  *
  * WebApp is a utility class for describing a WebApplication to be deployed into an OSGi
- * HTTP Service implementation. The WebApp implementation extends the OSGi <code>HttpContext</code>.
+ * HTTP Service implementation. The WebApp implementation extends the OSGi <code>ServletContextHelper</code>.
  */
-public class WebApp implements HttpContext {
+public class WebApp extends ServletContextHelper {
 	protected static WebAppDescriptor webAppDescriptor = null;
 
-	protected HttpService httpService;
+	protected HttpServiceRuntime httpServiceRuntime;
 
 	protected ServiceReference sRef;
 
+	protected Set<ServiceRegistration<?>> serviceRegistrations = new HashSet<ServiceRegistration<?>>();
+
 	public WebApp(WebAppDescriptor descriptor) {
 		webAppDescriptor = descriptor;
 	}
@@ -57,9 +66,9 @@
 		return url;
 	}
 
-	public boolean handleSecurity(HttpServletRequest request,
-			HttpServletResponse response) throws java.io.IOException {
-		return true;
+	@Override
+	public boolean handleSecurity(HttpServletRequest request, HttpServletResponse response) throws IOException {
+            return true;
 	}
 
 	/**
@@ -67,19 +76,22 @@
 	 * @param bc the BundleContext of the WebApp host
 	 * @throws BundleException
 	 */
-	public void start(BundleContext bc) throws BundleException {
-		if ((sRef = bc.getServiceReference("org.osgi.service.http.HttpService")) == null)
-			throw new BundleException("Failed to get HttpServiceReference");
-		if ((httpService = (HttpService) bc.getService(sRef)) == null)
-			throw new BundleException("Failed to get HttpService");
+	public void start(BundleContext bc) throws BundleException {	
+		ServiceReference<HttpServiceRuntime> sRef = bc.getServiceReference(HttpServiceRuntime.class);
+		if (sRef == null)
+			throw new BundleException("Failed to get ServiceReference");
+		if ((httpServiceRuntime = bc.getService(sRef)) == null)
+			throw new BundleException("Failed to get httpServiceRuntime");
 		try {
 			WebAppDescriptor wad = webAppDescriptor;
 
 			for (int i = 0; i < wad.servlet.length; i++) {
 				ServletDescriptor servlet = wad.servlet[i];
 
-				httpService.registerServlet(wad.context + servlet.subContext,
-						servlet.servlet, servlet.initParameters, this);
+   // ServiceRegistration<?> registerService(String clazz, Object service, Dictionary<String, ?> properties);
+   // Dictionary<String,Object> props = new Hashtable<>(2);
+			        // serviceRegistrations.add(bc.registerService(wad.context + servlet.subContext, servlet.servlet, servlet.initParameters, this));
+			        serviceRegistrations.add(bc.registerService(ServletContextHelper.class, this, servlet.initParameters));
 			}
 		} catch (Exception e) {
 			e.printStackTrace();
@@ -93,19 +105,18 @@
 	 * @throws BundleException
 	 */
 	public void stop(BundleContext bc) throws BundleException {
-		try {
-			for (int i = 0; i < webAppDescriptor.servlet.length; i++) {
-				ServletDescriptor servlet = webAppDescriptor.servlet[i];
-
-				httpService.unregister(webAppDescriptor.context
-						+ servlet.subContext);
-			}
-			bc.ungetService(sRef);
-			httpService = null;
-			webAppDescriptor = null;
-		} catch (Exception e) {
-			throw new BundleException("Failed to unregister resources", e);
-		}
+            try {
+                for (ServiceRegistration<?> serviceRegistration : serviceRegistrations) {
+                    serviceRegistration.unregister();
+                }
+            
+                serviceRegistrations.clear();
+                bc.ungetService(sRef);
+                httpServiceRuntime = null;
+                webAppDescriptor = null;
+            } catch (Exception e) {
+                throw new BundleException("Failed to unregister resources", e);
+            }
 	}
 
     public static WebAppDescriptor getWebAppDescriptor() {
@@ -116,12 +127,12 @@
         WebApp.webAppDescriptor = webAppDescriptor;
     }
 
-    public HttpService getHttpService() {
-        return httpService;
+    public HttpServiceRuntime getHttpServiceRuntime() {
+        return httpServiceRuntime;
     }
 
-    public void setHttpService(HttpService httpService) {
-        this.httpService = httpService;
+    public void setHttpServiceRuntime(HttpServiceRuntime httpServiceRuntime) {
+        this.httpServiceRuntime = httpServiceRuntime;
     }
 
     public ServiceReference getSRef() {
diff --git a/modules/osgi/src/org/apache/axis2/osgi/internal/Activator.java b/modules/osgi/src/org/apache/axis2/osgi/internal/Activator.java
index 3323afe..f363afd 100644
--- a/modules/osgi/src/org/apache/axis2/osgi/internal/Activator.java
+++ b/modules/osgi/src/org/apache/axis2/osgi/internal/Activator.java
@@ -28,7 +28,7 @@
 import org.osgi.framework.*;
 import org.osgi.util.tracker.ServiceTracker;
 
-import javax.servlet.Servlet;
+import jakarta.servlet.Servlet;
 
 /**
  * Activator will set the necessary parameters that initiate Axis2 OSGi integration
diff --git a/modules/saaj/pom.xml b/modules/saaj/pom.xml
index 858cd13..6b69c5f 100644
--- a/modules/saaj/pom.xml
+++ b/modules/saaj/pom.xml
@@ -72,7 +72,7 @@
             <version>${project.version}</version>
             <scope>test</scope>
         </dependency>
-         <dependency>
+        <dependency>
             <groupId>org.apache.axis2</groupId>
             <artifactId>axis2-transport-local</artifactId>
             <version>${project.version}</version>
@@ -88,6 +88,15 @@
             <artifactId>jakarta.xml.soap-api</artifactId>
         </dependency>
         <dependency>
+            <groupId>jakarta.servlet</groupId>
+            <artifactId>jakarta.servlet-api</artifactId>
+        </dependency>
+	<dependency>
+            <groupId>org.eclipse.jetty.ee9</groupId>
+            <artifactId>jetty-ee9-nested</artifactId>
+            <version>12.0.6</version>
+        </dependency>
+        <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
             <scope>test</scope>
diff --git a/modules/saaj/src/org/apache/axis2/saaj/SOAPConnectionImpl.java b/modules/saaj/src/org/apache/axis2/saaj/SOAPConnectionImpl.java
index a5463de..3527ad7 100644
--- a/modules/saaj/src/org/apache/axis2/saaj/SOAPConnectionImpl.java
+++ b/modules/saaj/src/org/apache/axis2/saaj/SOAPConnectionImpl.java
@@ -45,6 +45,9 @@
 import org.apache.axis2.kernel.http.HTTPConstants;
 import org.apache.axis2.wsdl.WSDLConstants;
 
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
 import jakarta.activation.DataHandler;
 import javax.xml.namespace.QName;
 import jakarta.xml.soap.AttachmentPart;
@@ -76,6 +79,8 @@
  */
 public class SOAPConnectionImpl extends SOAPConnection {
 
+    private static Log log = LogFactory.getLog(SOAPConnectionImpl.class);
+
     /** Attribute which keeps track of whether this connection has been closed */
     private boolean closed = false;
 
@@ -430,6 +435,7 @@
             if (responseCode == HttpURLConnection.HTTP_INTERNAL_ERROR) {
                 isFailure = true;
             } else if ((responseCode / 100) != 2) {
+	        log.error("Error code: " +responseCode+ " , received on URL: " + url);
                 throw new SOAPException("Error response: (" + responseCode
                         + httpCon.getResponseMessage());
             }
diff --git a/modules/saaj/test/org/apache/axis2/saaj/SOAPConnectionTest.java b/modules/saaj/test/org/apache/axis2/saaj/SOAPConnectionTest.java
index 501a8ed..fe2a6d9 100644
--- a/modules/saaj/test/org/apache/axis2/saaj/SOAPConnectionTest.java
+++ b/modules/saaj/test/org/apache/axis2/saaj/SOAPConnectionTest.java
@@ -21,16 +21,19 @@
 
 import junit.framework.Assert;
 
-import org.eclipse.jetty.server.Handler;
-import org.eclipse.jetty.server.Request;
+import org.eclipse.jetty.ee9.nested.AbstractHandler;
+import org.eclipse.jetty.ee9.nested.ContextHandler;
+import org.eclipse.jetty.ee9.nested.Handler;
+import org.eclipse.jetty.ee9.nested.HandlerCollection;
+import org.eclipse.jetty.ee9.nested.Request;
+import org.eclipse.jetty.server.Response;
 import org.eclipse.jetty.server.Server;
-import org.eclipse.jetty.server.handler.AbstractHandler;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 import jakarta.xml.soap.MessageFactory;
 import jakarta.xml.soap.SOAPBody;
 import jakarta.xml.soap.SOAPConnection;
@@ -108,6 +111,11 @@
     }
 
 
+    /* FIXME: AXIS2-6051, why is the error below happening with Jetty 12?
+     *
+     * java.lang.ClassNotFoundException: org.apache.axis2.jaxws.framework.JAXWSServiceBuilderExtension
+     * Just adding axis2-jaxws is a circular reference.
+     *
     @Validated @Test
     public void testGet() throws Exception {
         Server server = new Server(0);
@@ -127,7 +135,10 @@
                 }
             }
         };
-        server.setHandler(handler);
+
+        ContextHandler context = new ContextHandler(server);
+        HandlerCollection ee9HandlerCollection = new HandlerCollection();
+        context.setHandler(ee9HandlerCollection);
         server.start();
         try {
             SOAPConnectionFactory sf = new SOAPConnectionFactoryImpl();
@@ -139,4 +150,5 @@
             server.stop();
         }
     }
+    */
 }
diff --git a/modules/samples/book/pom.xml b/modules/samples/book/pom.xml
index 78a2a69..27a439c 100644
--- a/modules/samples/book/pom.xml
+++ b/modules/samples/book/pom.xml
@@ -29,9 +29,9 @@
 
     <dependencies>
         <dependency>
-            <groupId>javax.servlet</groupId>
-            <artifactId>javax.servlet-api</artifactId>
-	    <version>3.1.0</version>
+            <groupId>jakarta.servlet</groupId>
+            <artifactId>jakarta.servlet-api</artifactId>
+            <version>6.0.0</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
diff --git a/modules/samples/book/src/webapp/WEB-INF/web.xml b/modules/samples/book/src/webapp/WEB-INF/web.xml
index f2ea323..d6613fc 100644
--- a/modules/samples/book/src/webapp/WEB-INF/web.xml
+++ b/modules/samples/book/src/webapp/WEB-INF/web.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>

+<?xml version="1.0" encoding="UTF-8"?>

 <!--

   ~ Licensed to the Apache Software Foundation (ASF) under one

   ~ or more contributor license agreements. See the NOTICE file

@@ -18,11 +18,11 @@
   ~ under the License.

   -->

 

-<!DOCTYPE web-app

-    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"

-    "http://java.sun.com/dtd/web-app_2_3.dtd">

-    

-<web-app>

+<web-app

+    xmlns="https://jakarta.ee/xml/ns/jakartaee"

+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+    xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"

+    version="6.0">

 

     <servlet>

         <servlet-name>AxisServlet</servlet-name>

diff --git a/modules/samples/java_first_jaxws/pom.xml b/modules/samples/java_first_jaxws/pom.xml
index 5df959f..0f2f470 100644
--- a/modules/samples/java_first_jaxws/pom.xml
+++ b/modules/samples/java_first_jaxws/pom.xml
@@ -42,8 +42,8 @@
 
     <dependencies>
         <dependency>
-            <groupId>javax.servlet</groupId>
-            <artifactId>javax.servlet-api</artifactId>
+            <groupId>jakarta.servlet</groupId>
+            <artifactId>jakarta.servlet-api</artifactId>
             <scope>provided</scope>
         </dependency>
         <dependency>
diff --git a/modules/samples/java_first_jaxws/src/webapp/WEB-INF/web.xml b/modules/samples/java_first_jaxws/src/webapp/WEB-INF/web.xml
index f2ea323..8eb92f3 100644
--- a/modules/samples/java_first_jaxws/src/webapp/WEB-INF/web.xml
+++ b/modules/samples/java_first_jaxws/src/webapp/WEB-INF/web.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>

+<?xml version="1.0" encoding="UTF-8"?>

 <!--

   ~ Licensed to the Apache Software Foundation (ASF) under one

   ~ or more contributor license agreements. See the NOTICE file

@@ -17,12 +17,11 @@
   ~ specific language governing permissions and limitations

   ~ under the License.

   -->

-

-<!DOCTYPE web-app

-    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"

-    "http://java.sun.com/dtd/web-app_2_3.dtd">

-    

-<web-app>

+<web-app

+    xmlns="https://jakarta.ee/xml/ns/jakartaee"

+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+    xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"

+    version="6.0">

 

     <servlet>

         <servlet-name>AxisServlet</servlet-name>

diff --git a/modules/samples/jaxws-samples/pom.xml b/modules/samples/jaxws-samples/pom.xml
index ad27dcc..810e99f 100644
--- a/modules/samples/jaxws-samples/pom.xml
+++ b/modules/samples/jaxws-samples/pom.xml
@@ -41,8 +41,8 @@
 
     <dependencies>
         <dependency>
-            <groupId>javax.servlet</groupId>
-            <artifactId>javax.servlet-api</artifactId>
+            <groupId>jakarta.servlet</groupId>
+            <artifactId>jakarta.servlet-api</artifactId>
             <scope>provided</scope>
         </dependency>
         <dependency>
diff --git a/modules/samples/jaxws-samples/src/main/org/apache/axis2/jaxws/samples/servlet/EchoPingSampleServlet.java b/modules/samples/jaxws-samples/src/main/org/apache/axis2/jaxws/samples/servlet/EchoPingSampleServlet.java
index a75fa61..b013336 100644
--- a/modules/samples/jaxws-samples/src/main/org/apache/axis2/jaxws/samples/servlet/EchoPingSampleServlet.java
+++ b/modules/samples/jaxws-samples/src/main/org/apache/axis2/jaxws/samples/servlet/EchoPingSampleServlet.java
@@ -23,12 +23,12 @@
 import org.apache.axis2.metadata.registry.MetadataFactoryRegistry;
 import org.apache.axis2.deployment.FileSystemConfigurator;
 
-import javax.servlet.Servlet;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.Servlet;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.net.URL;
 import java.net.MalformedURLException;
@@ -188,4 +188,4 @@
     private URL getWSDLURL(String file) throws MalformedURLException {
         return getServletConfig().getServletContext().getResource(file);
     }
-}
\ No newline at end of file
+}
diff --git a/modules/samples/jaxws-samples/src/main/org/apache/axis2/jaxws/samples/servlet/MTOMSampleServlet.java b/modules/samples/jaxws-samples/src/main/org/apache/axis2/jaxws/samples/servlet/MTOMSampleServlet.java
index 1516779..0689825 100644
--- a/modules/samples/jaxws-samples/src/main/org/apache/axis2/jaxws/samples/servlet/MTOMSampleServlet.java
+++ b/modules/samples/jaxws-samples/src/main/org/apache/axis2/jaxws/samples/servlet/MTOMSampleServlet.java
@@ -21,10 +21,10 @@
 
 import org.apache.axis2.jaxws.samples.client.mtom.SampleMTOMTests;
 
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 import java.io.DataInputStream;
 import java.io.FileOutputStream;
 import java.io.IOException;
@@ -40,7 +40,7 @@
  * web.servlet-mapping
  * url-pattern="/MTOMSampleServlet"
  */
-public class MTOMSampleServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
+public class MTOMSampleServlet extends jakarta.servlet.http.HttpServlet implements jakarta.servlet.Servlet {
     private static final long serialVersionUID = 1039362106123493799L;
     private static final String INDEX_JSP_LOCATION = "/WEB-INF/jsp/demoMTOM.jsp";
     private String uriString = "";
@@ -231,4 +231,4 @@
         req.setAttribute("messageR", "\n" + "Response: \n" + received
                 + "\n");
     }
-}
\ No newline at end of file
+}
diff --git a/modules/samples/jaxws-samples/src/webapp/WEB-INF/web.xml b/modules/samples/jaxws-samples/src/webapp/WEB-INF/web.xml
index a2adc81..1d50b52 100644
--- a/modules/samples/jaxws-samples/src/webapp/WEB-INF/web.xml
+++ b/modules/samples/jaxws-samples/src/webapp/WEB-INF/web.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>

+<?xml version="1.0" encoding="UTF-8"?>

 <!--

   ~ Licensed to the Apache Software Foundation (ASF) under one

   ~ or more contributor license agreements. See the NOTICE file

@@ -18,9 +18,11 @@
   ~ under the License.

   -->

 

-<web-app id="jaxws-samples" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"

-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

-         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

+<web-app

+    xmlns="https://jakarta.ee/xml/ns/jakartaee"

+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+    xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"

+    version="6.0">

 

     <servlet>

         <servlet-name>AxisServlet</servlet-name>

diff --git a/modules/samples/json/resources/axis2.xml b/modules/samples/json/resources/axis2.xml
index edf0707..e498db0 100644
--- a/modules/samples/json/resources/axis2.xml
+++ b/modules/samples/json/resources/axis2.xml
@@ -25,6 +25,7 @@
     <parameter name="hotupdate">false</parameter>
     <parameter name="enableMTOM">false</parameter>
     <parameter name="enableSwA">false</parameter>
+    <parameter name="enableJSONOnly">false</parameter>
 
     <!--Uncomment if you want to enable file caching for attachments -->
     <!--parameter name="cacheAttachments">true</parameter>
diff --git a/modules/samples/transport/https-sample/httpsService/src/main/webapp/WEB-INF/web.xml b/modules/samples/transport/https-sample/httpsService/src/main/webapp/WEB-INF/web.xml
index 376b871..2cd6218 100644
--- a/modules/samples/transport/https-sample/httpsService/src/main/webapp/WEB-INF/web.xml
+++ b/modules/samples/transport/https-sample/httpsService/src/main/webapp/WEB-INF/web.xml
@@ -12,11 +12,12 @@
     License for the ~ specific language governing permissions and limitations 
     ~ under the License. -->
   
-<!DOCTYPE web-app
-      PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
-      "http://java.sun.com/dtd/web-app_2_3.dtd">
+<web-app
+    xmlns="https://jakarta.ee/xml/ns/jakartaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"
+    version="6.0">
 
-<web-app>
     <servlet>
         <servlet-name>AxisServlet</servlet-name>
         <servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>
@@ -26,4 +27,4 @@
         <servlet-name>AxisServlet</servlet-name>
         <url-pattern>/services/*</url-pattern>
     </servlet-mapping>
-</web-app>
\ No newline at end of file
+</web-app>
diff --git a/modules/samples/userguide/src/userguide/springbootdemo/pom.xml b/modules/samples/userguide/src/userguide/springbootdemo/pom.xml
index 64aaa62..8b8a523 100644
--- a/modules/samples/userguide/src/userguide/springbootdemo/pom.xml
+++ b/modules/samples/userguide/src/userguide/springbootdemo/pom.xml
@@ -127,9 +127,9 @@
             </exclusions>
         </dependency>
         <dependency>
-            <groupId>javax.servlet</groupId>
-            <artifactId>javax.servlet-api</artifactId>
-            <version>3.1.0</version>
+            <groupId>jakarta.servlet</groupId>
+            <artifactId>jakarta.servlet-api</artifactId>
+            <version>6.0.0</version>
         </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
diff --git a/modules/soapmonitor/module/pom.xml b/modules/soapmonitor/module/pom.xml
index 450a156..dada17d 100644
--- a/modules/soapmonitor/module/pom.xml
+++ b/modules/soapmonitor/module/pom.xml
@@ -50,6 +50,10 @@
             <version>${project.version}</version>
         </dependency>
         <dependency>
+            <groupId>jakarta.servlet</groupId>
+            <artifactId>jakarta.servlet-api</artifactId>
+        </dependency>
+        <dependency>
             <groupId>org.apache.axis2</groupId>
             <artifactId>axis2-soapmonitor-servlet</artifactId>
             <version>${project.version}</version>
diff --git a/modules/soapmonitor/servlet/pom.xml b/modules/soapmonitor/servlet/pom.xml
index 26bd156..fbd9156 100644
--- a/modules/soapmonitor/servlet/pom.xml
+++ b/modules/soapmonitor/servlet/pom.xml
@@ -45,8 +45,8 @@
 
     <dependencies>
         <dependency>
-            <groupId>javax.servlet</groupId>
-            <artifactId>javax.servlet-api</artifactId>
+            <groupId>jakarta.servlet</groupId>
+            <artifactId>jakarta.servlet-api</artifactId>
         </dependency>
         <dependency>
             <groupId>commons-logging</groupId>
diff --git a/modules/soapmonitor/servlet/src/main/java/org/apache/axis2/soapmonitor/servlet/SOAPMonitorService.java b/modules/soapmonitor/servlet/src/main/java/org/apache/axis2/soapmonitor/servlet/SOAPMonitorService.java
index f7513f6..1a0e997 100644
--- a/modules/soapmonitor/servlet/src/main/java/org/apache/axis2/soapmonitor/servlet/SOAPMonitorService.java
+++ b/modules/soapmonitor/servlet/src/main/java/org/apache/axis2/soapmonitor/servlet/SOAPMonitorService.java
@@ -22,11 +22,11 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.ServletConfig;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
diff --git a/modules/spring/pom.xml b/modules/spring/pom.xml
index b38f162..f9350d7 100644
--- a/modules/spring/pom.xml
+++ b/modules/spring/pom.xml
@@ -64,6 +64,10 @@
             <groupId>org.springframework</groupId>
             <artifactId>spring-web</artifactId>
         </dependency>
+        <dependency>
+            <groupId>jakarta.servlet</groupId>
+            <artifactId>jakarta.servlet-api</artifactId>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/modules/spring/src/org/apache/axis2/extensions/spring/receivers/SpringServletContextObjectSupplier.java b/modules/spring/src/org/apache/axis2/extensions/spring/receivers/SpringServletContextObjectSupplier.java
index 7ff2340..e5132e2 100644
--- a/modules/spring/src/org/apache/axis2/extensions/spring/receivers/SpringServletContextObjectSupplier.java
+++ b/modules/spring/src/org/apache/axis2/extensions/spring/receivers/SpringServletContextObjectSupplier.java
@@ -30,8 +30,8 @@
 import org.springframework.context.ApplicationContext;
 import org.springframework.web.context.support.WebApplicationContextUtils;
 
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletContext;
+import jakarta.servlet.ServletConfig;
+import jakarta.servlet.ServletContext;
 
 public class SpringServletContextObjectSupplier implements ServiceObjectSupplier {
 
diff --git a/modules/testutils/pom.xml b/modules/testutils/pom.xml
index 5ba8ec6..607ac60 100644
--- a/modules/testutils/pom.xml
+++ b/modules/testutils/pom.xml
@@ -56,8 +56,22 @@
             <artifactId>jakarta.xml.ws-api</artifactId>
         </dependency>
         <dependency>
+            <groupId>jakarta.servlet</groupId>
+            <artifactId>jakarta.servlet-api</artifactId>
+        </dependency>
+        <dependency>
             <groupId>org.eclipse.jetty</groupId>
-            <artifactId>jetty-webapp</artifactId>
+            <artifactId>jetty-server</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.jetty.ee10</groupId>
+            <artifactId>jetty-ee10-webapp</artifactId>
+            <version>12.0.5</version>
+        </dependency>
+	<dependency>
+            <groupId>org.eclipse.jetty.ee9</groupId>
+            <artifactId>jetty-ee9-nested</artifactId>
+            <version>12.0.6</version>
         </dependency>
         <dependency>
             <groupId>org.bouncycastle</groupId>
diff --git a/modules/testutils/src/main/java/org/apache/axis2/testutils/JettyServer.java b/modules/testutils/src/main/java/org/apache/axis2/testutils/JettyServer.java
index 12cabc1..a56dd75 100644
--- a/modules/testutils/src/main/java/org/apache/axis2/testutils/JettyServer.java
+++ b/modules/testutils/src/main/java/org/apache/axis2/testutils/JettyServer.java
@@ -20,6 +20,8 @@
 
 import java.io.File;
 import java.io.FileOutputStream;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.math.BigInteger;
 import java.security.KeyPair;
 import java.security.KeyPairGenerator;
@@ -33,15 +35,15 @@
 
 import javax.net.ssl.SSLContext;
 import javax.net.ssl.TrustManagerFactory;
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletException;
+import jakarta.servlet.ServletConfig;
+import jakarta.servlet.ServletException;
 
+import org.eclipse.jetty.ee10.servlet.ServletHolder;
+import org.eclipse.jetty.ee10.webapp.WebAppContext;
 import org.eclipse.jetty.server.Connector;
 import org.eclipse.jetty.server.Server;
 import org.eclipse.jetty.server.ServerConnector;
-import org.eclipse.jetty.servlet.ServletHolder;
 import org.eclipse.jetty.util.ssl.SslContextFactory;
-import org.eclipse.jetty.webapp.WebAppContext;
 import org.apache.axis2.addressing.EndpointReference;
 import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.transport.http.AxisServlet;
@@ -185,7 +187,8 @@
             log.error("Failed to create Axis2 webapp directory: " + webappDir.getAbsolutePath());
         }
         
-        context.setResourceBase(webappDir.getAbsolutePath());
+	Path webappPath = Paths.get(webappDir.getAbsolutePath());
+        context.setBaseResource(context.getResourceFactory().newResource(webappPath));
         context.setContextPath("/axis2");
         context.setParentLoaderPriority(true);
         context.setThrowUnavailableOnStartupException(true);
@@ -211,7 +214,7 @@
             server.start();
         }
         catch (SecurityException e) {
-            if (e.getMessage().equals("class \"javax.servlet.ServletRequestListener\"'s signer information does not match signer information of other classes in the same package")) {
+            if (e.getMessage().equals("class \"jakarta.servlet.ServletRequestListener\"'s signer information does not match signer information of other classes in the same package")) {
                 log.error(
                  "It is likely your test classpath contains multiple different versions of servlet api.\n" +
                  "If you are running this test in an IDE, please configure it to exclude Rampart's core module servlet api dependency.");
diff --git a/modules/testutils/src/main/java/org/apache/axis2/testutils/jaxws/HttpExchangeImpl.java b/modules/testutils/src/main/java/org/apache/axis2/testutils/jaxws/HttpExchangeImpl.java
index 45f2058..7763b70 100644
--- a/modules/testutils/src/main/java/org/apache/axis2/testutils/jaxws/HttpExchangeImpl.java
+++ b/modules/testutils/src/main/java/org/apache/axis2/testutils/jaxws/HttpExchangeImpl.java
@@ -27,8 +27,8 @@
 import java.util.Map;
 import java.util.Set;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 import jakarta.xml.ws.spi.http.HttpContext;
 import jakarta.xml.ws.spi.http.HttpExchange;
 
diff --git a/modules/testutils/src/main/java/org/apache/axis2/testutils/jaxws/JAXWSEndpoint.java b/modules/testutils/src/main/java/org/apache/axis2/testutils/jaxws/JAXWSEndpoint.java
index 175fbf3..3903939 100644
--- a/modules/testutils/src/main/java/org/apache/axis2/testutils/jaxws/JAXWSEndpoint.java
+++ b/modules/testutils/src/main/java/org/apache/axis2/testutils/jaxws/JAXWSEndpoint.java
@@ -22,6 +22,8 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.eclipse.jetty.ee9.nested.ContextHandler;
+import org.eclipse.jetty.ee9.nested.HandlerCollection;
 import org.eclipse.jetty.server.NetworkConnector;
 import org.eclipse.jetty.server.Server;
 import org.junit.rules.ExternalResource;
@@ -41,7 +43,11 @@
         server = new Server(0);
         HttpContextImpl httpContext = new HttpContextImpl();
         Endpoint.create(implementor).publish(httpContext);
-        server.setHandler(new JAXWSHandler(httpContext));
+
+        ContextHandler context = new ContextHandler(server);
+        HandlerCollection ee9HandlerCollection = new HandlerCollection();
+        ee9HandlerCollection.addHandler(new JAXWSHandler(httpContext));
+        context.setHandler(ee9HandlerCollection);
         server.start();
     }
 
diff --git a/modules/testutils/src/main/java/org/apache/axis2/testutils/jaxws/JAXWSHandler.java b/modules/testutils/src/main/java/org/apache/axis2/testutils/jaxws/JAXWSHandler.java
index 9fc8306..181bfec 100644
--- a/modules/testutils/src/main/java/org/apache/axis2/testutils/jaxws/JAXWSHandler.java
+++ b/modules/testutils/src/main/java/org/apache/axis2/testutils/jaxws/JAXWSHandler.java
@@ -20,12 +20,12 @@
 
 import java.io.IOException;
 
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
-import org.eclipse.jetty.server.Request;
-import org.eclipse.jetty.server.handler.AbstractHandler;
+import org.eclipse.jetty.ee9.nested.Request;
+import org.eclipse.jetty.ee9.nested.AbstractHandler;
 
 final class JAXWSHandler extends AbstractHandler {
     private final HttpContextImpl httpContext;
diff --git a/modules/tool/archetype/quickstart-webapp/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/web.xml b/modules/tool/archetype/quickstart-webapp/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/web.xml
index 0aec080..71923ab 100644
--- a/modules/tool/archetype/quickstart-webapp/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/web.xml
+++ b/modules/tool/archetype/quickstart-webapp/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/web.xml
@@ -19,11 +19,12 @@
   ~ under the License.
   -->
   
-<!DOCTYPE web-app
-      PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
-      "http://java.sun.com/dtd/web-app_2_3.dtd">
+<web-app
+    xmlns="https://jakarta.ee/xml/ns/jakartaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"
+    version="6.0">
 
-<web-app>
 	<servlet>
 		<servlet-name>AxisServlet</servlet-name>
 		<servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>
@@ -33,4 +34,4 @@
 		<servlet-name>AxisServlet</servlet-name>
 		<url-pattern>/services/*</url-pattern>
 	</servlet-mapping>
-</web-app>
\ No newline at end of file
+</web-app>
diff --git a/modules/tool/axis2-eclipse-codegen-plugin/pom.xml b/modules/tool/axis2-eclipse-codegen-plugin/pom.xml
index 94a12d7..7215b46 100644
--- a/modules/tool/axis2-eclipse-codegen-plugin/pom.xml
+++ b/modules/tool/axis2-eclipse-codegen-plugin/pom.xml
@@ -45,43 +45,43 @@
 
     <dependencies>
         <dependency>
-            <groupId>osgi.bundle</groupId>
+            <groupId>org.eclipse.platform</groupId>
             <artifactId>org.eclipse.core.jobs</artifactId>
         </dependency>
         <dependency>
-            <groupId>osgi.bundle</groupId>
+            <groupId>org.eclipse.platform</groupId>
             <artifactId>org.eclipse.core.resources</artifactId>
         </dependency>
         <dependency>
-            <groupId>osgi.bundle</groupId>
+            <groupId>org.eclipse.platform</groupId>
             <artifactId>org.eclipse.core.runtime</artifactId>
         </dependency>
         <dependency>
-            <groupId>osgi.bundle</groupId>
+            <groupId>org.eclipse.platform</groupId>
             <artifactId>org.eclipse.equinox.common</artifactId>
         </dependency>
         <dependency>
-            <groupId>osgi.bundle</groupId>
+            <groupId>org.eclipse.platform</groupId>
             <artifactId>org.eclipse.jface</artifactId>
         </dependency>
         <dependency>
-            <groupId>osgi.bundle</groupId>
+            <groupId>org.eclipse.platform</groupId>
             <artifactId>org.eclipse.osgi</artifactId>
         </dependency>
         <dependency>
-            <groupId>osgi.bundle</groupId>
+            <groupId>org.eclipse.platform</groupId>
             <artifactId>org.eclipse.swt</artifactId>
         </dependency>
         <dependency>
-            <groupId>osgi.bundle</groupId>
+            <groupId>org.eclipse.platform</groupId>
             <artifactId>org.eclipse.swt.win32.win32.x86_64</artifactId>
         </dependency>
         <dependency>
-            <groupId>osgi.bundle</groupId>
+            <groupId>org.eclipse.platform</groupId>
             <artifactId>org.eclipse.ui.ide</artifactId>
         </dependency>
         <dependency>
-            <groupId>osgi.bundle</groupId>
+            <groupId>org.eclipse.platform</groupId>
             <artifactId>org.eclipse.ui.workbench</artifactId>
         </dependency>
         <dependency>
diff --git a/modules/tool/axis2-eclipse-service-plugin/pom.xml b/modules/tool/axis2-eclipse-service-plugin/pom.xml
index 6aac377..4d62c99 100644
--- a/modules/tool/axis2-eclipse-service-plugin/pom.xml
+++ b/modules/tool/axis2-eclipse-service-plugin/pom.xml
@@ -50,35 +50,35 @@
             <version>${project.version}</version>
         </dependency>
         <dependency>
-            <groupId>osgi.bundle</groupId>
+            <groupId>org.eclipse.platform</groupId>
             <artifactId>org.eclipse.core.runtime</artifactId>
         </dependency>
         <dependency>
-            <groupId>osgi.bundle</groupId>
+            <groupId>org.eclipse.platform</groupId>
             <artifactId>org.eclipse.swt</artifactId>
         </dependency>
         <dependency>
-            <groupId>osgi.bundle</groupId>
+            <groupId>org.eclipse.platform</groupId>
             <artifactId>org.eclipse.osgi</artifactId>
         </dependency>
         <dependency>
-            <groupId>osgi.bundle</groupId>
+            <groupId>org.eclipse.platform</groupId>
             <artifactId>org.eclipse.swt.win32.win32.x86_64</artifactId>
         </dependency>
         <dependency>
-            <groupId>osgi.bundle</groupId>
+            <groupId>org.eclipse.platform</groupId>
             <artifactId>org.eclipse.ui.ide</artifactId>
         </dependency>
         <dependency>
-            <groupId>osgi.bundle</groupId>
+            <groupId>org.eclipse.platform</groupId>
             <artifactId>org.eclipse.jface</artifactId>
         </dependency>
         <dependency>
-            <groupId>osgi.bundle</groupId>
+            <groupId>org.eclipse.platform</groupId>
             <artifactId>org.eclipse.ui.workbench</artifactId>
         </dependency>
         <dependency>
-            <groupId>osgi.bundle</groupId>
+            <groupId>org.eclipse.platform</groupId>
             <artifactId>org.eclipse.equinox.common</artifactId>
         </dependency>
         <dependency>
diff --git a/modules/transport/http/pom.xml b/modules/transport/http/pom.xml
index 56d2521..8e40995 100644
--- a/modules/transport/http/pom.xml
+++ b/modules/transport/http/pom.xml
@@ -74,6 +74,10 @@
             <artifactId>axiom-truth</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>jakarta.servlet</groupId>
+            <artifactId>jakarta.servlet-api</artifactId>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/modules/transport/http/src/org/apache/axis2/transport/http/AbstractAgent.java b/modules/transport/http/src/org/apache/axis2/transport/http/AbstractAgent.java
index 0e96f58..23a3d81 100644
--- a/modules/transport/http/src/org/apache/axis2/transport/http/AbstractAgent.java
+++ b/modules/transport/http/src/org/apache/axis2/transport/http/AbstractAgent.java
@@ -23,9 +23,9 @@
 import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.util.OnDemandLogger;
 
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
diff --git a/modules/transport/http/src/org/apache/axis2/transport/http/AbstractHTTPTransportSender.java b/modules/transport/http/src/org/apache/axis2/transport/http/AbstractHTTPTransportSender.java
index 86f11bc..8c874c1 100644
--- a/modules/transport/http/src/org/apache/axis2/transport/http/AbstractHTTPTransportSender.java
+++ b/modules/transport/http/src/org/apache/axis2/transport/http/AbstractHTTPTransportSender.java
@@ -40,7 +40,7 @@
 import org.apache.commons.logging.LogFactory;
 
 import javax.xml.stream.FactoryConfigurationError;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.net.MalformedURLException;
diff --git a/modules/transport/http/src/org/apache/axis2/transport/http/AxisServlet.java b/modules/transport/http/src/org/apache/axis2/transport/http/AxisServlet.java
index 7780481..b9a5c07 100644
--- a/modules/transport/http/src/org/apache/axis2/transport/http/AxisServlet.java
+++ b/modules/transport/http/src/org/apache/axis2/transport/http/AxisServlet.java
@@ -56,12 +56,12 @@
 import org.apache.axis2.util.MessageContextBuilder;
 import org.apache.axis2.util.OnDemandLogger;
 
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.ServletConfig;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 import javax.xml.namespace.QName;
 import java.io.BufferedInputStream;
 import java.io.BufferedOutputStream;
@@ -81,7 +81,7 @@
  * <li>There must be one instance of {@link TransportListener} for each protocol, but this servlet
  * may implement both HTTP and HTTPS.
  * <li>There is a collision between {@link TransportListener#destroy()} and
- * {@link javax.servlet.Servlet#destroy()}.
+ * {@link jakarta.servlet.Servlet#destroy()}.
  * </ul>
  * The {@link TransportListener} implementation is provided by {@link AxisServletListener}. An
  * instance of that class must be declared in <tt>axis2.xml</tt> for each protocol (HTTP/HTTPS) that
@@ -105,6 +105,7 @@
     protected transient String contextRoot = null;
 
     protected boolean disableREST = false;
+    protected boolean enableJSONOnly = false;
     private static final String LIST_SERVICES_SUFFIX = "/services/listServices";
     private static final String LIST_FAULTY_SERVICES_SUFFIX = "/services/ListFaultyServices";
     private boolean closeReader = true;
@@ -153,7 +154,12 @@
         MessageContext msgContext;
         OutputStream out = response.getOutputStream();
         String contentType = request.getContentType();
-        if (!HTTPTransportUtils.isRESTRequest(contentType)) {
+        if (enableJSONOnly && (contentType == null || contentType.isEmpty() || !HTTPTransportUtils.isJSONRequest(contentType))) {
+            log.error("doPost() returning with no action taken, enableJSONOnly is true in the axis2.xml file and the content-type is not application/json: " + contentType);
+            response.setContentType("application/json");
+            showJSONOnlyErrorMessage(response);
+            return;
+        } else if (!HTTPTransportUtils.isRESTRequest(contentType)) {
             msgContext = createMessageContext(request, response);
             msgContext.setProperty(Constants.Configuration.CONTENT_TYPE, contentType);
             try {
@@ -355,6 +361,19 @@
     }
 
     /**
+     * Private method that deals with disabling of SOAP and REST support.
+     *
+     * @param response
+     * @throws IOException
+     */
+    protected void showJSONOnlyErrorMessage(HttpServletResponse response) throws IOException {
+        response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+        PrintWriter writer = new PrintWriter(response.getOutputStream());
+        writer.println("{ \"status\": \"error\",\"message\":\"content-type of application/json is mandatory\"}");
+        writer.flush();
+    }
+
+    /**
      * Close the builders.
      *
      * @param messageContext
diff --git a/modules/transport/http/src/org/apache/axis2/transport/http/AxisServletListener.java b/modules/transport/http/src/org/apache/axis2/transport/http/AxisServletListener.java
index 452ce5a..4d81cfe 100644
--- a/modules/transport/http/src/org/apache/axis2/transport/http/AxisServletListener.java
+++ b/modules/transport/http/src/org/apache/axis2/transport/http/AxisServletListener.java
@@ -32,7 +32,7 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
 
 /**
  * {@link TransportListener} implementation for {@link AxisServlet}. There will be one instance
diff --git a/modules/transport/http/src/org/apache/axis2/transport/http/ForbidSessionCreationWrapper.java b/modules/transport/http/src/org/apache/axis2/transport/http/ForbidSessionCreationWrapper.java
index 8f7c943..d36cb99 100644
--- a/modules/transport/http/src/org/apache/axis2/transport/http/ForbidSessionCreationWrapper.java
+++ b/modules/transport/http/src/org/apache/axis2/transport/http/ForbidSessionCreationWrapper.java
@@ -18,9 +18,9 @@
  */
 package org.apache.axis2.transport.http;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletRequestWrapper;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequestWrapper;
+import jakarta.servlet.http.HttpSession;
 
 public class ForbidSessionCreationWrapper extends HttpServletRequestWrapper {
     public ForbidSessionCreationWrapper(HttpServletRequest request) {
diff --git a/modules/transport/http/src/org/apache/axis2/transport/http/HTTPTransportUtils.java b/modules/transport/http/src/org/apache/axis2/transport/http/HTTPTransportUtils.java
index c6e8fca..4ff74a1 100644
--- a/modules/transport/http/src/org/apache/axis2/transport/http/HTTPTransportUtils.java
+++ b/modules/transport/http/src/org/apache/axis2/transport/http/HTTPTransportUtils.java
@@ -325,6 +325,23 @@
                 contentType.indexOf(HTTPConstants.MEDIA_TYPE_MULTIPART_FORM_DATA) > -1);
     }
     
+    /**
+     * This will match for content types that will be regarded as JSON
+     * This contains,
+     * 1. application/json
+     * <p/>
+     * If the request does not contain a content type, this will return false.
+     *
+     * @param contentType content type to check
+     * @return Boolean
+     */
+    public static boolean isJSONRequest(String contentType) {
+        if (contentType == null || contentType.isEmpty()) {
+            return false;
+        }
+        return (contentType.toLowerCase().indexOf(HTTPConstants.MEDIA_TYPE_APPLICATION_JSON) != -1);
+    }
+
     public static EndpointReference[] getEPRsForService(ConfigurationContext configurationContext,
             TransportInDescription trpInDesc, String serviceName, String ip, int port) throws AxisFault {
         
diff --git a/modules/transport/http/src/org/apache/axis2/transport/http/ListingAgent.java b/modules/transport/http/src/org/apache/axis2/transport/http/ListingAgent.java
index e9af789..d057ade 100644
--- a/modules/transport/http/src/org/apache/axis2/transport/http/ListingAgent.java
+++ b/modules/transport/http/src/org/apache/axis2/transport/http/ListingAgent.java
@@ -36,9 +36,9 @@
 import org.apache.neethi.PolicyRegistry;
 import org.apache.neethi.PolicyRegistryImpl;
 
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 import javax.xml.stream.FactoryConfigurationError;
 import javax.xml.stream.XMLOutputFactory;
 import javax.xml.stream.XMLStreamException;
diff --git a/modules/transport/http/src/org/apache/axis2/transport/http/ServletBasedOutTransportInfo.java b/modules/transport/http/src/org/apache/axis2/transport/http/ServletBasedOutTransportInfo.java
index 68095d6..b6bf88e 100644
--- a/modules/transport/http/src/org/apache/axis2/transport/http/ServletBasedOutTransportInfo.java
+++ b/modules/transport/http/src/org/apache/axis2/transport/http/ServletBasedOutTransportInfo.java
@@ -22,7 +22,7 @@
 
 import org.apache.axis2.kernel.OutTransportInfo;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 
 public class ServletBasedOutTransportInfo implements OutTransportInfo {
     private HttpServletResponse response;
diff --git a/modules/transport/http/src/org/apache/axis2/transport/http/TransportHeaders.java b/modules/transport/http/src/org/apache/axis2/transport/http/TransportHeaders.java
index 5fc446d..5b63c82 100644
--- a/modules/transport/http/src/org/apache/axis2/transport/http/TransportHeaders.java
+++ b/modules/transport/http/src/org/apache/axis2/transport/http/TransportHeaders.java
@@ -19,7 +19,7 @@
 
 package org.apache.axis2.transport.http;
 
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
 import java.util.Collection;
 import java.util.Enumeration;
 import java.util.HashMap;
diff --git a/modules/transport/http/src/org/apache/axis2/transport/http/server/AxisHttpService.java b/modules/transport/http/src/org/apache/axis2/transport/http/server/AxisHttpService.java
index 9ddc031..88ea7ac 100644
--- a/modules/transport/http/src/org/apache/axis2/transport/http/server/AxisHttpService.java
+++ b/modules/transport/http/src/org/apache/axis2/transport/http/server/AxisHttpService.java
@@ -54,7 +54,7 @@
 import org.apache.http.protocol.HttpContext;
 import org.apache.http.protocol.HttpProcessor;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import javax.xml.namespace.QName;
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/modules/transport/http/test/org/apache/axis2/transport/http/HTTPTransportSenderTest.java b/modules/transport/http/test/org/apache/axis2/transport/http/HTTPTransportSenderTest.java
index 087b30e..3fa94c9 100644
--- a/modules/transport/http/test/org/apache/axis2/transport/http/HTTPTransportSenderTest.java
+++ b/modules/transport/http/test/org/apache/axis2/transport/http/HTTPTransportSenderTest.java
@@ -25,7 +25,7 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import javax.xml.namespace.QName;
 
 import junit.framework.TestCase;
diff --git a/modules/transport/http/test/org/apache/axis2/transport/http/mock/MockHttpServletResponse.java b/modules/transport/http/test/org/apache/axis2/transport/http/mock/MockHttpServletResponse.java
index 5a69904..e511435 100644
--- a/modules/transport/http/test/org/apache/axis2/transport/http/mock/MockHttpServletResponse.java
+++ b/modules/transport/http/test/org/apache/axis2/transport/http/mock/MockHttpServletResponse.java
@@ -29,9 +29,9 @@
 import java.util.Locale;
 import java.util.Map;
 
-import javax.servlet.ServletOutputStream;
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.ServletOutputStream;
+import jakarta.servlet.http.Cookie;
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.apache.axis2.kernel.OutTransportInfo;
 
diff --git a/modules/transport/testkit/pom.xml b/modules/transport/testkit/pom.xml
index 0f35307..6571a2d 100644
--- a/modules/transport/testkit/pom.xml
+++ b/modules/transport/testkit/pom.xml
@@ -95,6 +95,15 @@
             <groupId>org.apache.logging.log4j</groupId>
             <artifactId>log4j-jcl</artifactId>
         </dependency>
+        <dependency>
+            <groupId>jakarta.servlet</groupId>
+            <artifactId>jakarta.servlet-api</artifactId>
+        </dependency>
+	<dependency>
+            <groupId>org.eclipse.jetty.ee9</groupId>
+            <artifactId>jetty-ee9-nested</artifactId>
+            <version>12.0.6</version>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/modules/transport/testkit/src/main/java/org/apache/axis2/transport/testkit/http/JettyAsyncEndpoint.java b/modules/transport/testkit/src/main/java/org/apache/axis2/transport/testkit/http/JettyAsyncEndpoint.java
index e8ed2ae..2c54592 100644
--- a/modules/transport/testkit/src/main/java/org/apache/axis2/transport/testkit/http/JettyAsyncEndpoint.java
+++ b/modules/transport/testkit/src/main/java/org/apache/axis2/transport/testkit/http/JettyAsyncEndpoint.java
@@ -21,9 +21,9 @@
 
 import java.io.IOException;
 
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.apache.axis2.transport.testkit.endpoint.AsyncEndpoint;
 import org.apache.axis2.transport.testkit.endpoint.InOnlyEndpointSupport;
diff --git a/modules/transport/testkit/src/main/java/org/apache/axis2/transport/testkit/http/JettyByteArrayAsyncEndpoint.java b/modules/transport/testkit/src/main/java/org/apache/axis2/transport/testkit/http/JettyByteArrayAsyncEndpoint.java
index 31538cf..4586730 100644
--- a/modules/transport/testkit/src/main/java/org/apache/axis2/transport/testkit/http/JettyByteArrayAsyncEndpoint.java
+++ b/modules/transport/testkit/src/main/java/org/apache/axis2/transport/testkit/http/JettyByteArrayAsyncEndpoint.java
@@ -26,8 +26,8 @@
 import java.text.ParseException;
 import java.util.Enumeration;
 
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
 
 import org.apache.axiom.mime.ContentType;
 import org.apache.axis2.transport.testkit.message.IncomingMessage;
diff --git a/modules/transport/testkit/src/main/java/org/apache/axis2/transport/testkit/http/JettyEchoEndpoint.java b/modules/transport/testkit/src/main/java/org/apache/axis2/transport/testkit/http/JettyEchoEndpoint.java
index 7bf5871..9ec7ebe 100644
--- a/modules/transport/testkit/src/main/java/org/apache/axis2/transport/testkit/http/JettyEchoEndpoint.java
+++ b/modules/transport/testkit/src/main/java/org/apache/axis2/transport/testkit/http/JettyEchoEndpoint.java
@@ -22,9 +22,9 @@
 import java.io.IOException;
 import java.util.Map;
 
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
 import junit.framework.Assert;
 
diff --git a/modules/transport/testkit/src/main/java/org/apache/axis2/transport/testkit/http/JettyEndpoint.java b/modules/transport/testkit/src/main/java/org/apache/axis2/transport/testkit/http/JettyEndpoint.java
index 0acc671..31d6c0d 100644
--- a/modules/transport/testkit/src/main/java/org/apache/axis2/transport/testkit/http/JettyEndpoint.java
+++ b/modules/transport/testkit/src/main/java/org/apache/axis2/transport/testkit/http/JettyEndpoint.java
@@ -21,16 +21,18 @@
 
 import java.io.IOException;
 
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.apache.axis2.transport.testkit.tests.Setup;
 import org.apache.axis2.transport.testkit.tests.TearDown;
 import org.apache.axis2.transport.testkit.tests.Transient;
-import org.eclipse.jetty.server.Handler;
-import org.eclipse.jetty.server.Request;
-import org.eclipse.jetty.server.handler.AbstractHandler;
+import org.eclipse.jetty.ee9.nested.AbstractHandler;
+import org.eclipse.jetty.ee9.nested.ContextHandler;
+import org.eclipse.jetty.ee9.nested.Handler;
+import org.eclipse.jetty.ee9.nested.Request;
+import org.eclipse.jetty.server.Response;
 
 public abstract class JettyEndpoint {
     private @Transient JettyServer server;
diff --git a/modules/transport/testkit/src/main/java/org/apache/axis2/transport/testkit/http/JettyRESTAsyncEndpoint.java b/modules/transport/testkit/src/main/java/org/apache/axis2/transport/testkit/http/JettyRESTAsyncEndpoint.java
index c91495f..ec70c38 100644
--- a/modules/transport/testkit/src/main/java/org/apache/axis2/transport/testkit/http/JettyRESTAsyncEndpoint.java
+++ b/modules/transport/testkit/src/main/java/org/apache/axis2/transport/testkit/http/JettyRESTAsyncEndpoint.java
@@ -24,8 +24,8 @@
 import java.util.List;
 import java.util.Map;
 
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
 
 import org.apache.axis2.transport.testkit.message.IncomingMessage;
 import org.apache.axis2.transport.testkit.message.RESTMessage;
diff --git a/modules/transport/testkit/src/main/java/org/apache/axis2/transport/testkit/http/JettyServer.java b/modules/transport/testkit/src/main/java/org/apache/axis2/transport/testkit/http/JettyServer.java
index 83a2b02..537ee06 100644
--- a/modules/transport/testkit/src/main/java/org/apache/axis2/transport/testkit/http/JettyServer.java
+++ b/modules/transport/testkit/src/main/java/org/apache/axis2/transport/testkit/http/JettyServer.java
@@ -23,16 +23,18 @@
 import org.apache.axis2.transport.testkit.tests.Setup;
 import org.apache.axis2.transport.testkit.tests.TearDown;
 import org.apache.axis2.transport.testkit.tests.Transient;
-import org.eclipse.jetty.server.Handler;
+import org.eclipse.jetty.ee9.nested.AbstractHandler;
+import org.eclipse.jetty.ee9.nested.ContextHandler;
+import org.eclipse.jetty.ee9.nested.Handler;
+import org.eclipse.jetty.ee9.nested.HandlerCollection;
 import org.eclipse.jetty.server.Server;
-import org.eclipse.jetty.server.handler.ContextHandler;
-import org.eclipse.jetty.server.handler.HandlerList;
 
 public class JettyServer {
     public static final JettyServer INSTANCE = new JettyServer();
     
     private @Transient Server server;
-    private @Transient HandlerList handlerList;
+    // ee9 specific nested HandlerCollection
+    private @Transient HandlerCollection ee9HandlerCollection;
     
     private JettyServer() {}
     
@@ -40,17 +42,17 @@
     private void setUp(HttpTestEnvironment env) throws Exception {
         server = new Server(env.getServerPort());
         ContextHandler context = new ContextHandler(server, Channel.CONTEXT_PATH);
-        handlerList = new HandlerList();
-        context.setHandler(handlerList);
+        ee9HandlerCollection = new HandlerCollection();
+        context.setHandler(ee9HandlerCollection);
         server.start();
     }
     
     public void addHandler(Handler handler) {
-        handlerList.addHandler(handler);
+        ee9HandlerCollection.addHandler(handler);
     }
 
     public void removeHandler(Handler handler) {
-        handlerList.removeHandler(handler);
+        ee9HandlerCollection.removeHandler(handler);
     }
 
     @TearDown @SuppressWarnings("unused")
diff --git a/modules/webapp/conf/axis2.xml b/modules/webapp/conf/axis2.xml
index 1f07247..8f15622 100644
--- a/modules/webapp/conf/axis2.xml
+++ b/modules/webapp/conf/axis2.xml
@@ -25,6 +25,7 @@
     <parameter name="hotupdate">false</parameter>
     <parameter name="enableMTOM">false</parameter>
     <parameter name="enableSwA">false</parameter>
+    <parameter name="enableJSONOnly">false</parameter>
 
     <!--Uncomment if you want to enable file caching for attachments -->
     <!--parameter name="cacheAttachments">true</parameter>
diff --git a/modules/webapp/conf/web.xml b/modules/webapp/conf/web.xml
index 32907d3..20619f3 100644
--- a/modules/webapp/conf/web.xml
+++ b/modules/webapp/conf/web.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
+<?xml version="1.0" encoding="UTF-8"?>
 
 <!--
   ~ Licensed to the Apache Software Foundation (ASF) under one
@@ -19,11 +19,12 @@
   ~ under the License.
   -->
 
-<web-app xmlns="http://java.sun.com/xml/ns/javaee"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
-                             http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
-         version="2.5">
+<web-app
+    xmlns="https://jakarta.ee/xml/ns/jakartaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"
+    version="6.0">
+
     <display-name>Apache-Axis2</display-name>
     <servlet>
         <display-name>Apache-Axis Servlet</display-name>
diff --git a/modules/webapp/pom.xml b/modules/webapp/pom.xml
index bc56e36..c1fadb0 100644
--- a/modules/webapp/pom.xml
+++ b/modules/webapp/pom.xml
@@ -123,15 +123,15 @@
             <type>aar</type>
         </dependency>
         <dependency>
-            <groupId>javax.servlet</groupId>
-            <artifactId>javax.servlet-api</artifactId>
+            <groupId>jakarta.servlet</groupId>
+            <artifactId>jakarta.servlet-api</artifactId>
             <scope>provided</scope>
         </dependency>
         <dependency><!-- Not required for the Maven build, but necessary to avoid errors when
                  importing the project into an IDE. -->
             <groupId>jakarta.servlet.jsp</groupId>
             <artifactId>jakarta.servlet.jsp-api</artifactId>
-            <version>2.3.6</version>
+            <version>3.1.1</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
@@ -249,8 +249,16 @@
         <dependency>
             <groupId>com.fasterxml.woodstox</groupId>
             <artifactId>woodstox-core</artifactId>
-            <version>6.5.1</version>
+            <version>6.6.0</version>
         </dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-fileupload2-core</artifactId>
+        </dependency>
+	<!--
+	 [WEB-INF/lib/commons-fileupload2-jakarta-servlet6-2.0.0-M2.jar, WEB-INF/lib/jetty-jakarta-servlet-api-5.0.2.jar
+	-->
+
     </dependencies>
 
     <build>
@@ -300,6 +308,7 @@
             <plugin><!-- Compile the JSPs so that syntax errors are detected during the build. -->
                 <groupId>org.eclipse.jetty</groupId>
                 <artifactId>jetty-jspc-maven-plugin</artifactId>
+                <version>11.0.20</version>
                 <executions>
                     <execution>
                         <goals>
diff --git a/modules/webapp/scripts/build.xml b/modules/webapp/scripts/build.xml
index 04327b6..885154a 100644
--- a/modules/webapp/scripts/build.xml
+++ b/modules/webapp/scripts/build.xml
@@ -72,7 +72,7 @@
 		<war destfile="dist/axis2.war" webxml="webapp/WEB-INF/web.xml">
 			<lib dir="lib">
 				<include name="**" />
-				<exclude name="**servlet**" />
+				<exclude name="axis2-soapmonitor-servlet-*.jar" />
 				<exclude name="axis2-ant-plugin-*.jar" />
 				<exclude name="axis2-*-codegen-*.jar"/>
 				<exclude name="axis2-java2wsdl-*.jar"/>
diff --git a/modules/webapp/src/main/java/org/apache/axis2/transport/http/AxisAdminServlet.java b/modules/webapp/src/main/java/org/apache/axis2/transport/http/AxisAdminServlet.java
index eeb4926..cdc7c45 100644
--- a/modules/webapp/src/main/java/org/apache/axis2/transport/http/AxisAdminServlet.java
+++ b/modules/webapp/src/main/java/org/apache/axis2/transport/http/AxisAdminServlet.java
@@ -19,7 +19,7 @@
 
 package org.apache.axis2.transport.http;
 
-import javax.servlet.ServletException;
+import jakarta.servlet.ServletException;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
diff --git a/modules/webapp/src/main/java/org/apache/axis2/webapp/ActionHandler.java b/modules/webapp/src/main/java/org/apache/axis2/webapp/ActionHandler.java
index ec63e3a..f6804c1 100644
--- a/modules/webapp/src/main/java/org/apache/axis2/webapp/ActionHandler.java
+++ b/modules/webapp/src/main/java/org/apache/axis2/webapp/ActionHandler.java
@@ -22,9 +22,9 @@
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpSession;
 
 import org.apache.axis2.Constants;
 
diff --git a/modules/webapp/src/main/java/org/apache/axis2/webapp/ActionResult.java b/modules/webapp/src/main/java/org/apache/axis2/webapp/ActionResult.java
index 44a2131..3f5fe7b 100644
--- a/modules/webapp/src/main/java/org/apache/axis2/webapp/ActionResult.java
+++ b/modules/webapp/src/main/java/org/apache/axis2/webapp/ActionResult.java
@@ -20,9 +20,9 @@
 
 import java.io.IOException;
 
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
 abstract class ActionResult {
     abstract void process(HttpServletRequest request, HttpServletResponse response)
diff --git a/modules/webapp/src/main/java/org/apache/axis2/webapp/AdminActions.java b/modules/webapp/src/main/java/org/apache/axis2/webapp/AdminActions.java
index 465b6ee..a7ae32c 100644
--- a/modules/webapp/src/main/java/org/apache/axis2/webapp/AdminActions.java
+++ b/modules/webapp/src/main/java/org/apache/axis2/webapp/AdminActions.java
@@ -33,17 +33,16 @@
 import org.apache.axis2.description.Parameter;
 import org.apache.axis2.engine.AxisConfiguration;
 import org.apache.axis2.transport.http.AbstractAgent;
-import org.apache.commons.fileupload.FileItem;
-import org.apache.commons.fileupload.FileItemFactory;
-import org.apache.commons.fileupload.RequestContext;
-import org.apache.commons.fileupload.disk.DiskFileItemFactory;
-import org.apache.commons.fileupload.servlet.ServletFileUpload;
-import org.apache.commons.fileupload.servlet.ServletRequestContext;
+import org.apache.commons.fileupload2.core.FileItem;
+import org.apache.commons.fileupload2.core.RequestContext;
+import org.apache.commons.fileupload2.core.DiskFileItemFactory;
+import org.apache.commons.fileupload2.jakarta.servlet6.JakartaServletFileUpload;
+import org.apache.commons.fileupload2.jakarta.servlet6.JakartaServletRequestContext;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
 import javax.xml.namespace.QName;
 import java.io.File;
 import java.util.Collection;
@@ -146,15 +145,12 @@
 
     @Action(name="doUpload", post=true)
     public Redirect doUpload(HttpServletRequest req) throws ServletException {
-        RequestContext reqContext = new ServletRequestContext(req);
+        RequestContext reqContext = new JakartaServletRequestContext(req);
 
-        boolean isMultipart = ServletFileUpload.isMultipartContent(reqContext);
+        boolean isMultipart = JakartaServletFileUpload.isMultipartContent(reqContext);
         if (isMultipart) {
             try {
-                //Create a factory for disk-based file items
-                FileItemFactory factory = new DiskFileItemFactory();
-                //Create a new file upload handler
-                ServletFileUpload upload = new ServletFileUpload(factory);
+		JakartaServletFileUpload upload = new JakartaServletFileUpload<>(DiskFileItemFactory.builder().get());
                 // There must be a limit. This is for an aar file upload,
                 // presumably only one. See:
                 // https://axis.apache.org/axis2/java/core/docs/webadminguide.html#upservice
@@ -189,7 +185,7 @@
                                 return new Redirect(UPLOAD).withStatus(false, "Received invalid filename");
                             }
                             File uploadedFile = new File(serviceDir, fileNameOnly);
-                            item.write(uploadedFile);
+                            item.write(uploadedFile.toPath());
                             return new Redirect(UPLOAD).withStatus(true, "File " + fileNameOnly + " successfully uploaded");
                         }
                     }
diff --git a/modules/webapp/src/main/java/org/apache/axis2/webapp/AxisAdminServlet.java b/modules/webapp/src/main/java/org/apache/axis2/webapp/AxisAdminServlet.java
index b65c7f9..f5e1d0d 100644
--- a/modules/webapp/src/main/java/org/apache/axis2/webapp/AxisAdminServlet.java
+++ b/modules/webapp/src/main/java/org/apache/axis2/webapp/AxisAdminServlet.java
@@ -25,12 +25,12 @@
 import org.apache.axis2.transport.http.AxisServlet;
 import org.apache.axis2.transport.http.ForbidSessionCreationWrapper;
 
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.ServletConfig;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpSession;
 
 import java.io.IOException;
 import java.lang.reflect.Method;
diff --git a/modules/webapp/src/main/java/org/apache/axis2/webapp/CSRFPreventionResponseWrapper.java b/modules/webapp/src/main/java/org/apache/axis2/webapp/CSRFPreventionResponseWrapper.java
index 8e5ff69..ff5fda2 100644
--- a/modules/webapp/src/main/java/org/apache/axis2/webapp/CSRFPreventionResponseWrapper.java
+++ b/modules/webapp/src/main/java/org/apache/axis2/webapp/CSRFPreventionResponseWrapper.java
@@ -21,10 +21,10 @@
 import java.util.Map;
 import java.util.Random;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpServletResponseWrapper;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponseWrapper;
+import jakarta.servlet.http.HttpSession;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -82,11 +82,6 @@
     }
 
     @Override
-    public String encodeUrl(String url) {
-        return encodeURL(url);
-    }
-
-    @Override
     public String encodeURL(String url) {
         int idx = url.indexOf('?');
         String path = idx == -1 ? url : url.substring(0, idx);
diff --git a/modules/webapp/src/main/java/org/apache/axis2/webapp/Redirect.java b/modules/webapp/src/main/java/org/apache/axis2/webapp/Redirect.java
index 81ceee7..f69e6d5 100644
--- a/modules/webapp/src/main/java/org/apache/axis2/webapp/Redirect.java
+++ b/modules/webapp/src/main/java/org/apache/axis2/webapp/Redirect.java
@@ -23,10 +23,10 @@
 import java.util.LinkedHashMap;
 import java.util.Map;
 
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpSession;
 
 final class Redirect extends ActionResult {
     private final String action;
diff --git a/modules/webapp/src/main/java/org/apache/axis2/webapp/View.java b/modules/webapp/src/main/java/org/apache/axis2/webapp/View.java
index 0b0c0e3..4e92052 100644
--- a/modules/webapp/src/main/java/org/apache/axis2/webapp/View.java
+++ b/modules/webapp/src/main/java/org/apache/axis2/webapp/View.java
@@ -20,9 +20,9 @@
 
 import java.io.IOException;
 
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
 final class View extends ActionResult {
     private final String jspName;
diff --git a/pom.xml b/pom.xml
index 940efd0..e17c443 100644
--- a/pom.xml
+++ b/pom.xml
@@ -401,8 +401,10 @@
         <module>modules/tool/maven-shared</module>
         <module>modules/tool/axis2-aar-maven-plugin</module>
         <module>modules/tool/axis2-ant-plugin</module>
+	<!--
         <module>modules/tool/axis2-eclipse-codegen-plugin</module>
         <module>modules/tool/axis2-eclipse-service-plugin</module>
+	-->
         <module>modules/tool/axis2-idea-plugin</module>
         <module>modules/tool/axis2-java2wsdl-maven-plugin</module>
         <module>modules/tool/axis2-mar-maven-plugin</module>
@@ -441,7 +443,11 @@
         <module>modules/distribution</module>
         <module>modules/samples</module>
         <module>databinding-tests</module>
+	<!-- FIXME AXIS2-6051 jwebunit hasn't been update since 2015
+             and is too broke to fix in a post jakarta world. 
+             TODO: find a replacement, or remove the code.
         <module>systests</module>
+	-->
     </modules>
 
     <scm>
@@ -470,26 +476,29 @@
         <antlr.version>2.7.7</antlr.version>
         <aspectj.version>1.9.21</aspectj.version>
         <bsf.version>2.4.0</bsf.version>
-        <commons.fileupload.version>1.5</commons.fileupload.version>
+	<commons.fileupload.version>2.0.0-M2</commons.fileupload.version>
         <commons.logging.version>1.2</commons.logging.version>
         <fi.version>2.1.1</fi.version>
         <geronimo.spec.annotation.version>1.1.1</geronimo.spec.annotation.version>
         <geronimo.spec.metadata.version>1.1.3</geronimo.spec.metadata.version>
         <geronimo.spec.jaxws.version>1.2</geronimo.spec.jaxws.version>
         <google.gson.version>2.10.1</google.gson.version>
-        <groovy.version>4.0.17</groovy.version>
+        <groovy.version>4.0.18</groovy.version>
         <httpcore.version>4.4.16</httpcore.version>
         <httpclient.version>4.5.14</httpclient.version>
         <httpmime.version>4.5.14</httpmime.version>
         <intellij.version>5.0</intellij.version>
         <jaxbri.version>4.0.3</jaxbri.version>
-        <jetty.version>10.0.19</jetty.version>
+        <jetty.version>10.0.20</jetty.version>
+        <jetty.version>12.0.6</jetty.version>
         <jibx.version>1.4.2</jibx.version>
         <maven.archiver.version>3.6.1</maven.archiver.version>
         <maven.version>3.9.6</maven.version>
         <rhino.version>1.6R7</rhino.version>
-        <slf4j.version>2.0.9</slf4j.version>
+        <slf4j.version>2.0.12</slf4j.version>
         <spring.version>5.3.31</spring.version>
+        <slf4j.version>2.0.11</slf4j.version>
+        <spring.version>6.1.3</spring.version>
         <wsdl4j.version>1.6.3</wsdl4j.version>
         <xmlbeans.version>3.0.1</xmlbeans.version>
         <xmlunit.version>2.9.1</xmlunit.version>
@@ -501,7 +510,7 @@
         <jaxws.rt.version>4.0.2</jaxws.rt.version>
         <jaxws.api.version>4.0.0</jaxws.api.version>
         <jsr311.api.version>1.1.1</jsr311.api.version>
-        <maven-plugin-tools.version>3.10.2</maven-plugin-tools.version>
+        <maven-plugin-tools.version>3.11.0</maven-plugin-tools.version>
         <!-- This variable is used in some Xdocs and is substituted using Velocity. Note that
              we can't use the project.version variable directly because of the dot. See
              http://maven.apache.org/plugins/maven-site-plugin/examples/creating-content.html -->
@@ -592,9 +601,10 @@
                 <version>${spring.version}</version>
             </dependency>
             <dependency>
-                <groupId>javax.servlet</groupId>
-                <artifactId>javax.servlet-api</artifactId>
-                <version>3.1.0</version>
+                <groupId>jakarta.servlet</groupId>
+                <artifactId>jakarta.servlet-api</artifactId>
+                <version>6.0.0</version>
+                <scope>provided</scope>
             </dependency>
             <dependency>
                 <groupId>com.google.code.gson</groupId>
@@ -675,7 +685,7 @@
             <dependency>
                 <groupId>org.assertj</groupId>
                 <artifactId>assertj-core</artifactId>
-                <version>3.24.2</version>
+                <version>3.25.3</version>
             </dependency>
             <dependency>
                 <groupId>org.apache.ws.commons.axiom</groupId>
@@ -690,7 +700,7 @@
             <dependency>
                 <groupId>org.mockito</groupId>
                 <artifactId>mockito-core</artifactId>
-                <version>5.8.0</version>
+                <version>5.10.0</version>
             </dependency>
             <dependency>
                 <groupId>org.apache.ws.xmlschema</groupId>
@@ -789,8 +799,13 @@
                 <version>${httpmime.version}</version>
             </dependency>
             <dependency>
-                <groupId>commons-fileupload</groupId>
-                <artifactId>commons-fileupload</artifactId>
+                <groupId>org.apache.commons</groupId>
+                <artifactId>commons-fileupload2-core</artifactId>
+                <version>${commons.fileupload.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.commons</groupId>
+                <artifactId>commons-fileupload2-jakarta-servlet6</artifactId>
                 <version>${commons.fileupload.version}</version>
             </dependency>
             <dependency>
@@ -834,7 +849,7 @@
             <dependency>
                 <groupId>org.junit.jupiter</groupId>
                 <artifactId>junit-jupiter</artifactId>
-                <version>5.10.1</version>
+                <version>5.10.2</version>
             </dependency>
             <dependency>
                 <groupId>org.apache.xmlbeans</groupId>
@@ -890,54 +905,68 @@
                 <scope>import</scope>
             </dependency>
             <dependency>
-                <groupId>osgi.bundle</groupId>
+                <groupId>org.eclipse.platform</groupId>
                 <artifactId>org.eclipse.core.jobs</artifactId>
-                <version>3.10.800.v20200421-0950</version>
+                <version>3.15.100</version>
             </dependency>
             <dependency>
-                <groupId>osgi.bundle</groupId>
+                <groupId>org.eclipse.platform</groupId>
                 <artifactId>org.eclipse.core.resources</artifactId>
-                <version>3.13.700.v20200209-1624</version>
+                <version>3.20.0</version>
             </dependency>
-            <dependency>
-                <groupId>osgi.bundle</groupId>
+	    <dependency>
+                <groupId>org.eclipse.platform</groupId>
                 <artifactId>org.eclipse.core.runtime</artifactId>
-                <version>3.18.0.v20200506-2143</version>
+                <version>3.30.0</version>
             </dependency>
-            <dependency>
-                <groupId>osgi.bundle</groupId>
+	    <dependency>
+                <groupId>org.eclipse.platform</groupId>
                 <artifactId>org.eclipse.equinox.common</artifactId>
-                <version>3.12.0.v20200504-1602</version>
+                <version>3.18.200</version>
             </dependency>
-            <dependency>
-                <groupId>osgi.bundle</groupId>
+	    <dependency>
+                <groupId>org.eclipse.platform</groupId>
                 <artifactId>org.eclipse.jface</artifactId>
-                <version>3.20.0.v20200505-1952</version>
+                <version>3.32.0</version>
             </dependency>
             <dependency>
-                <groupId>osgi.bundle</groupId>
+                <groupId>org.eclipse.platform</groupId>
                 <artifactId>org.eclipse.osgi</artifactId>
-                <version>3.15.300.v20200520-1959</version>
+                <version>3.18.600</version>
             </dependency>
-            <dependency>
-                <groupId>osgi.bundle</groupId>
+	    <dependency>
+                <groupId>org.eclipse.platform</groupId>
                 <artifactId>org.eclipse.swt</artifactId>
-                <version>3.114.100.v20200604-0951</version>
+                <version>3.124.200</version>
             </dependency>
             <dependency>
-                <groupId>osgi.bundle</groupId>
+                <groupId>org.eclipse.platform</groupId>
                 <artifactId>org.eclipse.swt.win32.win32.x86_64</artifactId>
-                <version>3.114.100.v20200604-0951</version>
+                <version>3.124.200</version>
             </dependency>
+	    <dependency>
+                <groupId>org.eclipse.platform</groupId>
+                <artifactId>org.eclipse.ui.ide</artifactId>
+                <version>3.22.0</version>
+            </dependency>
+	    <!--
             <dependency>
                 <groupId>osgi.bundle</groupId>
                 <artifactId>org.eclipse.ui.ide</artifactId>
                 <version>3.17.100.v20200530-0835</version>
             </dependency>
+	    -->
             <dependency>
-                <groupId>osgi.bundle</groupId>
+                <groupId>org.eclipse.platform</groupId>
                 <artifactId>org.eclipse.ui.workbench</artifactId>
-                <version>3.119.0.v20200521-1247</version>
+                <version>3.131.0</version>
+                <exclusions>
+		    <!-- FIXME -->	
+                    <exclusion>
+                        <groupId>xml-apis</groupId>
+                        <artifactId>xml-apis-ext</artifactId>
+                    </exclusion>
+                </exclusions>
             </dependency>
             <dependency>
                 <groupId>com.intellij</groupId>
@@ -992,11 +1021,6 @@
                 <artifactId>jetty-server</artifactId>
                 <version>${jetty.version}</version>
             </dependency>
-            <dependency>
-                <groupId>org.eclipse.jetty</groupId>
-                <artifactId>jetty-webapp</artifactId>
-                <version>${jetty.version}</version>
-            </dependency>
 
             <!-- AspectJ is used in the unit tests of several transports -->            
             <dependency>
@@ -1014,9 +1038,9 @@
 
     <repositories>
         <repository>
-            <id>eclipse_4_16</id>
+            <id>eclipse_4_30</id>
             <layout>p2</layout>
-            <url>http://download.eclipse.org/eclipse/updates/4.16/R-4.16-202006040540</url>
+            <url>http://download.eclipse.org/eclipse/updates/4.30/R-4.30-202312010110</url>
             <snapshots>
                 <enabled>false</enabled>
             </snapshots>
@@ -1104,7 +1128,7 @@
                 </plugin>
                 <plugin>
                     <artifactId>maven-compiler-plugin</artifactId>
-                    <version>3.12.0</version>
+                    <version>3.12.1</version>
                 </plugin>
                 <plugin>
                     <artifactId>maven-dependency-plugin</artifactId>
@@ -1132,11 +1156,11 @@
                 </plugin>
                 <plugin>
                     <artifactId>maven-surefire-plugin</artifactId>
-                    <version>3.2.3</version>
+                    <version>3.2.5</version>
                 </plugin>
                 <plugin>
                     <artifactId>maven-failsafe-plugin</artifactId>
-                    <version>3.2.3</version>
+                    <version>3.2.5</version>
                 </plugin>
                 <plugin>
                     <artifactId>maven-war-plugin</artifactId>
@@ -1258,7 +1282,7 @@
                                     <message>The POM must not include repository definitions since non Apache repositories threaten the build stability.</message>
                                     <banRepositories>true</banRepositories>
                                     <allowedRepositories>
-                                        <allowedRepository>eclipse_4_16</allowedRepository>
+                                        <allowedRepository>eclipse_4_30</allowedRepository>
                                     </allowedRepositories>
                                     <banPluginRepositories>true</banPluginRepositories>
                                     <!-- We still need to allow the Apache snapshot repository -->
diff --git a/systests/webapp-tests/pom.xml b/systests/webapp-tests/pom.xml
index da76417..22cffad 100644
--- a/systests/webapp-tests/pom.xml
+++ b/systests/webapp-tests/pom.xml
@@ -68,6 +68,10 @@
             <artifactId>slf4j-jdk14</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>jakarta.activation</groupId>
+            <artifactId>jakarta.activation-api</artifactId>
+        </dependency>
     </dependencies>
 
     <build>