diff --git a/connector/connect/server/pom.xml b/connector/connect/server/pom.xml
index bdea8a627000..1a90138df295 100644
--- a/connector/connect/server/pom.xml
+++ b/connector/connect/server/pom.xml
@@ -156,6 +156,16 @@
org.scala-lang.modules
scala-parallel-collections_${scala.binary.version}
+
+ jakarta.servlet
+ jakarta.servlet-api
+ compile
+
+
+ javax.servlet
+ javax.servlet-api
+ compile
+
com.google.guava
guava
diff --git a/connector/connect/server/src/main/scala/org/apache/spark/sql/connect/ui/SparkConnectServerPage.scala b/connector/connect/server/src/main/scala/org/apache/spark/sql/connect/ui/SparkConnectServerPage.scala
index bc92014b12b7..bf9293ef1488 100644
--- a/connector/connect/server/src/main/scala/org/apache/spark/sql/connect/ui/SparkConnectServerPage.scala
+++ b/connector/connect/server/src/main/scala/org/apache/spark/sql/connect/ui/SparkConnectServerPage.scala
@@ -19,10 +19,11 @@ package org.apache.spark.sql.connect.ui
import java.net.URLEncoder
import java.nio.charset.StandardCharsets.UTF_8
-import javax.servlet.http.HttpServletRequest
import scala.xml.Node
+import jakarta.servlet.http.HttpServletRequest
+
import org.apache.spark.internal.Logging
import org.apache.spark.sql.connect.ui.ToolTips._
import org.apache.spark.ui._
diff --git a/connector/connect/server/src/main/scala/org/apache/spark/sql/connect/ui/SparkConnectServerSessionPage.scala b/connector/connect/server/src/main/scala/org/apache/spark/sql/connect/ui/SparkConnectServerSessionPage.scala
index fde6e8da8b63..c35eb58edfbe 100644
--- a/connector/connect/server/src/main/scala/org/apache/spark/sql/connect/ui/SparkConnectServerSessionPage.scala
+++ b/connector/connect/server/src/main/scala/org/apache/spark/sql/connect/ui/SparkConnectServerSessionPage.scala
@@ -17,10 +17,10 @@
package org.apache.spark.sql.connect.ui
-import javax.servlet.http.HttpServletRequest
-
import scala.xml.Node
+import jakarta.servlet.http.HttpServletRequest
+
import org.apache.spark.internal.Logging
import org.apache.spark.ui._
import org.apache.spark.ui.UIUtils._
diff --git a/connector/connect/server/src/test/scala/org/apache/spark/sql/connect/ui/SparkConnectServerPageSuite.scala b/connector/connect/server/src/test/scala/org/apache/spark/sql/connect/ui/SparkConnectServerPageSuite.scala
index d352f4e2c32f..3fda38723025 100644
--- a/connector/connect/server/src/test/scala/org/apache/spark/sql/connect/ui/SparkConnectServerPageSuite.scala
+++ b/connector/connect/server/src/test/scala/org/apache/spark/sql/connect/ui/SparkConnectServerPageSuite.scala
@@ -18,8 +18,8 @@
package org.apache.spark.sql.connect.ui
import java.util.{Calendar, Locale}
-import javax.servlet.http.HttpServletRequest
+import jakarta.servlet.http.HttpServletRequest
import org.mockito.Mockito.{mock, when, RETURNS_SMART_NULLS}
import org.scalatest.BeforeAndAfter
diff --git a/core/pom.xml b/core/pom.xml
index 9b5297cb8543..6468f500db04 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -166,10 +166,13 @@
jetty-servlets
compile
+
+ javax.servlet
+ javax.servlet-api
+
jakarta.servlet
jakarta.servlet-api
- ${jakartaservlet.version}
commons-codec
diff --git a/core/src/main/scala/org/apache/spark/deploy/Utils.scala b/core/src/main/scala/org/apache/spark/deploy/Utils.scala
index 32328ae1e07a..9eb5a0042e51 100644
--- a/core/src/main/scala/org/apache/spark/deploy/Utils.scala
+++ b/core/src/main/scala/org/apache/spark/deploy/Utils.scala
@@ -18,7 +18,8 @@
package org.apache.spark.deploy
import java.io.File
-import javax.servlet.http.HttpServletRequest
+
+import jakarta.servlet.http.HttpServletRequest
import org.apache.spark.SparkConf
import org.apache.spark.internal.Logging
diff --git a/core/src/main/scala/org/apache/spark/deploy/history/ApplicationCache.scala b/core/src/main/scala/org/apache/spark/deploy/history/ApplicationCache.scala
index 96313c58ad28..662746cf0c78 100644
--- a/core/src/main/scala/org/apache/spark/deploy/history/ApplicationCache.scala
+++ b/core/src/main/scala/org/apache/spark/deploy/history/ApplicationCache.scala
@@ -18,14 +18,14 @@
package org.apache.spark.deploy.history
import java.util.concurrent.{ConcurrentHashMap, CountDownLatch, ExecutionException}
-import javax.servlet.{DispatcherType, Filter, FilterChain, FilterConfig, ServletException, ServletRequest, ServletResponse}
-import javax.servlet.http.{HttpServletRequest, HttpServletResponse}
import scala.jdk.CollectionConverters._
import com.codahale.metrics.{Counter, MetricRegistry, Timer}
import com.google.common.cache.{CacheBuilder, CacheLoader, LoadingCache, RemovalListener, RemovalNotification}
import com.google.common.util.concurrent.UncheckedExecutionException
+import jakarta.servlet.{DispatcherType, Filter, FilterChain, FilterConfig, ServletException, ServletRequest, ServletResponse}
+import jakarta.servlet.http.{HttpServletRequest, HttpServletResponse}
import org.eclipse.jetty.servlet.FilterHolder
import org.apache.spark.internal.Logging
diff --git a/core/src/main/scala/org/apache/spark/deploy/history/HistoryPage.scala b/core/src/main/scala/org/apache/spark/deploy/history/HistoryPage.scala
index 9ad255527c87..aa1d76bafc53 100644
--- a/core/src/main/scala/org/apache/spark/deploy/history/HistoryPage.scala
+++ b/core/src/main/scala/org/apache/spark/deploy/history/HistoryPage.scala
@@ -17,10 +17,10 @@
package org.apache.spark.deploy.history
-import javax.servlet.http.HttpServletRequest
-
import scala.xml.{Node, Unparsed}
+import jakarta.servlet.http.HttpServletRequest
+
import org.apache.spark.status.api.v1.ApplicationInfo
import org.apache.spark.ui.{UIUtils, WebUIPage}
import org.apache.spark.ui.UIUtils.formatImportJavaScript
diff --git a/core/src/main/scala/org/apache/spark/deploy/history/HistoryServer.scala b/core/src/main/scala/org/apache/spark/deploy/history/HistoryServer.scala
index 25b16b3ec836..7362634d5b09 100644
--- a/core/src/main/scala/org/apache/spark/deploy/history/HistoryServer.scala
+++ b/core/src/main/scala/org/apache/spark/deploy/history/HistoryServer.scala
@@ -18,11 +18,11 @@
package org.apache.spark.deploy.history
import java.util.zip.ZipOutputStream
-import javax.servlet.http.{HttpServlet, HttpServletRequest, HttpServletResponse}
import scala.util.control.NonFatal
import scala.xml.Node
+import jakarta.servlet.http.{HttpServlet, HttpServletRequest, HttpServletResponse}
import org.eclipse.jetty.servlet.{ServletContextHandler, ServletHolder}
import org.apache.spark.{SecurityManager, SparkConf}
diff --git a/core/src/main/scala/org/apache/spark/deploy/history/LogPage.scala b/core/src/main/scala/org/apache/spark/deploy/history/LogPage.scala
index be5dae0ffbaf..3507ebd101ae 100644
--- a/core/src/main/scala/org/apache/spark/deploy/history/LogPage.scala
+++ b/core/src/main/scala/org/apache/spark/deploy/history/LogPage.scala
@@ -17,10 +17,10 @@
package org.apache.spark.deploy.history
-import javax.servlet.http.HttpServletRequest
-
import scala.xml.{Node, Unparsed}
+import jakarta.servlet.http.HttpServletRequest
+
import org.apache.spark.SparkConf
import org.apache.spark.deploy.Utils.{getLog, DEFAULT_BYTES}
import org.apache.spark.internal.Logging
diff --git a/core/src/main/scala/org/apache/spark/deploy/master/ui/ApplicationPage.scala b/core/src/main/scala/org/apache/spark/deploy/master/ui/ApplicationPage.scala
index 3087d5e8c966..98cc99c1a24b 100644
--- a/core/src/main/scala/org/apache/spark/deploy/master/ui/ApplicationPage.scala
+++ b/core/src/main/scala/org/apache/spark/deploy/master/ui/ApplicationPage.scala
@@ -17,10 +17,10 @@
package org.apache.spark.deploy.master.ui
-import javax.servlet.http.HttpServletRequest
-
import scala.xml.Node
+import jakarta.servlet.http.HttpServletRequest
+
import org.apache.spark.deploy.DeployMessages.{MasterStateResponse, RequestMasterState}
import org.apache.spark.deploy.ExecutorState
import org.apache.spark.deploy.StandaloneResourceUtils.{formatResourceRequirements, formatResourcesAddresses}
diff --git a/core/src/main/scala/org/apache/spark/deploy/master/ui/LogPage.scala b/core/src/main/scala/org/apache/spark/deploy/master/ui/LogPage.scala
index e199049c9c1b..6d3ff1906d17 100644
--- a/core/src/main/scala/org/apache/spark/deploy/master/ui/LogPage.scala
+++ b/core/src/main/scala/org/apache/spark/deploy/master/ui/LogPage.scala
@@ -17,10 +17,10 @@
package org.apache.spark.deploy.master.ui
-import javax.servlet.http.HttpServletRequest
-
import scala.xml.{Node, Unparsed}
+import jakarta.servlet.http.HttpServletRequest
+
import org.apache.spark.deploy.Utils.{getLog, DEFAULT_BYTES}
import org.apache.spark.internal.Logging
import org.apache.spark.ui.{UIUtils, WebUIPage}
diff --git a/core/src/main/scala/org/apache/spark/deploy/master/ui/MasterPage.scala b/core/src/main/scala/org/apache/spark/deploy/master/ui/MasterPage.scala
index cbeda23013ac..d07f299d52ba 100644
--- a/core/src/main/scala/org/apache/spark/deploy/master/ui/MasterPage.scala
+++ b/core/src/main/scala/org/apache/spark/deploy/master/ui/MasterPage.scala
@@ -17,10 +17,9 @@
package org.apache.spark.deploy.master.ui
-import javax.servlet.http.HttpServletRequest
-
import scala.xml.Node
+import jakarta.servlet.http.HttpServletRequest
import org.json4s.JValue
import org.apache.spark.deploy.DeployMessages.{KillDriverResponse, MasterStateResponse, RequestKillDriver, RequestMasterState}
diff --git a/core/src/main/scala/org/apache/spark/deploy/master/ui/MasterWebUI.scala b/core/src/main/scala/org/apache/spark/deploy/master/ui/MasterWebUI.scala
index 9f5738ce4863..da3c91956689 100644
--- a/core/src/main/scala/org/apache/spark/deploy/master/ui/MasterWebUI.scala
+++ b/core/src/main/scala/org/apache/spark/deploy/master/ui/MasterWebUI.scala
@@ -18,7 +18,8 @@
package org.apache.spark.deploy.master.ui
import java.net.{InetAddress, NetworkInterface, SocketException}
-import javax.servlet.http.{HttpServlet, HttpServletRequest, HttpServletResponse}
+
+import jakarta.servlet.http.{HttpServlet, HttpServletRequest, HttpServletResponse}
import org.apache.spark.deploy.DeployMessages.{DecommissionWorkersOnHosts, MasterStateResponse, RequestMasterState}
import org.apache.spark.deploy.Utils.addRenderLogHandler
diff --git a/core/src/main/scala/org/apache/spark/deploy/rest/RestSubmissionClient.scala b/core/src/main/scala/org/apache/spark/deploy/rest/RestSubmissionClient.scala
index ea05b042bb12..71c07ce33d3d 100644
--- a/core/src/main/scala/org/apache/spark/deploy/rest/RestSubmissionClient.scala
+++ b/core/src/main/scala/org/apache/spark/deploy/rest/RestSubmissionClient.scala
@@ -21,7 +21,6 @@ import java.io.{DataOutputStream, FileNotFoundException}
import java.net.{ConnectException, HttpURLConnection, SocketException, URL}
import java.nio.charset.StandardCharsets
import java.util.concurrent.TimeoutException
-import javax.servlet.http.HttpServletResponse
import scala.collection.mutable
import scala.concurrent.{Await, Future}
@@ -30,6 +29,7 @@ import scala.io.Source
import scala.util.control.NonFatal
import com.fasterxml.jackson.core.JsonProcessingException
+import jakarta.servlet.http.HttpServletResponse
import org.apache.spark.{SPARK_VERSION => sparkVersion, SparkConf, SparkException}
import org.apache.spark.deploy.SparkApplication
diff --git a/core/src/main/scala/org/apache/spark/deploy/rest/RestSubmissionServer.scala b/core/src/main/scala/org/apache/spark/deploy/rest/RestSubmissionServer.scala
index 4e871393f0be..bb91c7e7f4a2 100644
--- a/core/src/main/scala/org/apache/spark/deploy/rest/RestSubmissionServer.scala
+++ b/core/src/main/scala/org/apache/spark/deploy/rest/RestSubmissionServer.scala
@@ -17,11 +17,10 @@
package org.apache.spark.deploy.rest
-import javax.servlet.http.{HttpServlet, HttpServletRequest, HttpServletResponse}
-
import scala.io.Source
import com.fasterxml.jackson.core.JsonProcessingException
+import jakarta.servlet.http.{HttpServlet, HttpServletRequest, HttpServletResponse}
import org.eclipse.jetty.server.{HttpConnectionFactory, Server, ServerConnector}
import org.eclipse.jetty.servlet.{ServletContextHandler, ServletHolder}
import org.eclipse.jetty.util.thread.{QueuedThreadPool, ScheduledExecutorScheduler}
diff --git a/core/src/main/scala/org/apache/spark/deploy/rest/StandaloneRestServer.scala b/core/src/main/scala/org/apache/spark/deploy/rest/StandaloneRestServer.scala
index e53d3ecefeda..8e3dcdc9d378 100644
--- a/core/src/main/scala/org/apache/spark/deploy/rest/StandaloneRestServer.scala
+++ b/core/src/main/scala/org/apache/spark/deploy/rest/StandaloneRestServer.scala
@@ -18,7 +18,8 @@
package org.apache.spark.deploy.rest
import java.io.File
-import javax.servlet.http.HttpServletResponse
+
+import jakarta.servlet.http.HttpServletResponse
import org.apache.spark.{SPARK_VERSION => sparkVersion, SparkConf}
import org.apache.spark.deploy.{Command, DeployMessages, DriverDescription}
diff --git a/core/src/main/scala/org/apache/spark/deploy/worker/ui/LogPage.scala b/core/src/main/scala/org/apache/spark/deploy/worker/ui/LogPage.scala
index 991c791cc79e..c4a15095ec40 100644
--- a/core/src/main/scala/org/apache/spark/deploy/worker/ui/LogPage.scala
+++ b/core/src/main/scala/org/apache/spark/deploy/worker/ui/LogPage.scala
@@ -18,10 +18,11 @@
package org.apache.spark.deploy.worker.ui
import java.io.File
-import javax.servlet.http.HttpServletRequest
import scala.xml.{Node, Unparsed}
+import jakarta.servlet.http.HttpServletRequest
+
import org.apache.spark.internal.Logging
import org.apache.spark.ui.{UIUtils, WebUIPage}
import org.apache.spark.util.Utils
diff --git a/core/src/main/scala/org/apache/spark/deploy/worker/ui/WorkerPage.scala b/core/src/main/scala/org/apache/spark/deploy/worker/ui/WorkerPage.scala
index 3dd5ebea471c..bfc402811451 100644
--- a/core/src/main/scala/org/apache/spark/deploy/worker/ui/WorkerPage.scala
+++ b/core/src/main/scala/org/apache/spark/deploy/worker/ui/WorkerPage.scala
@@ -17,10 +17,9 @@
package org.apache.spark.deploy.worker.ui
-import javax.servlet.http.HttpServletRequest
-
import scala.xml.Node
+import jakarta.servlet.http.HttpServletRequest
import org.json4s.JValue
import org.apache.spark.deploy.{ExecutorState, JsonProtocol}
diff --git a/core/src/main/scala/org/apache/spark/deploy/worker/ui/WorkerWebUI.scala b/core/src/main/scala/org/apache/spark/deploy/worker/ui/WorkerWebUI.scala
index 0f5e96c55849..4fd50378ffc2 100644
--- a/core/src/main/scala/org/apache/spark/deploy/worker/ui/WorkerWebUI.scala
+++ b/core/src/main/scala/org/apache/spark/deploy/worker/ui/WorkerWebUI.scala
@@ -18,7 +18,8 @@
package org.apache.spark.deploy.worker.ui
import java.io.File
-import javax.servlet.http.HttpServletRequest
+
+import jakarta.servlet.http.HttpServletRequest
import org.apache.spark.deploy.worker.Worker
import org.apache.spark.internal.Logging
diff --git a/core/src/main/scala/org/apache/spark/metrics/sink/MetricsServlet.scala b/core/src/main/scala/org/apache/spark/metrics/sink/MetricsServlet.scala
index 46d2c6821fea..7d676cd2c27b 100644
--- a/core/src/main/scala/org/apache/spark/metrics/sink/MetricsServlet.scala
+++ b/core/src/main/scala/org/apache/spark/metrics/sink/MetricsServlet.scala
@@ -19,11 +19,11 @@ package org.apache.spark.metrics.sink
import java.util.Properties
import java.util.concurrent.TimeUnit
-import javax.servlet.http.HttpServletRequest
import com.codahale.metrics.MetricRegistry
import com.codahale.metrics.json.MetricsModule
import com.fasterxml.jackson.databind.ObjectMapper
+import jakarta.servlet.http.HttpServletRequest
import org.eclipse.jetty.servlet.ServletContextHandler
import org.apache.spark.SparkConf
diff --git a/core/src/main/scala/org/apache/spark/metrics/sink/PrometheusServlet.scala b/core/src/main/scala/org/apache/spark/metrics/sink/PrometheusServlet.scala
index 2b672f89686e..757139528996 100644
--- a/core/src/main/scala/org/apache/spark/metrics/sink/PrometheusServlet.scala
+++ b/core/src/main/scala/org/apache/spark/metrics/sink/PrometheusServlet.scala
@@ -18,9 +18,9 @@
package org.apache.spark.metrics.sink
import java.util.Properties
-import javax.servlet.http.HttpServletRequest
import com.codahale.metrics.MetricRegistry
+import jakarta.servlet.http.HttpServletRequest
import org.eclipse.jetty.servlet.ServletContextHandler
import org.apache.spark.SparkConf
diff --git a/core/src/main/scala/org/apache/spark/status/api/v1/ApiRootResource.scala b/core/src/main/scala/org/apache/spark/status/api/v1/ApiRootResource.scala
index cc21c1488f67..66fac8a9d105 100644
--- a/core/src/main/scala/org/apache/spark/status/api/v1/ApiRootResource.scala
+++ b/core/src/main/scala/org/apache/spark/status/api/v1/ApiRootResource.scala
@@ -17,11 +17,11 @@
package org.apache.spark.status.api.v1
import java.util.zip.ZipOutputStream
-import javax.servlet.ServletContext
-import javax.servlet.http.HttpServletRequest
-import javax.ws.rs._
-import javax.ws.rs.core.{Context, Response}
+import jakarta.servlet.ServletContext
+import jakarta.servlet.http.HttpServletRequest
+import jakarta.ws.rs._
+import jakarta.ws.rs.core.{Context, Response}
import org.eclipse.jetty.server.handler.ContextHandler
import org.eclipse.jetty.servlet.{ServletContextHandler, ServletHolder}
import org.glassfish.jersey.server.ServerProperties
diff --git a/core/src/main/scala/org/apache/spark/status/api/v1/ApplicationListResource.scala b/core/src/main/scala/org/apache/spark/status/api/v1/ApplicationListResource.scala
index 6eb8b2bfd55a..2d5dd97b501f 100644
--- a/core/src/main/scala/org/apache/spark/status/api/v1/ApplicationListResource.scala
+++ b/core/src/main/scala/org/apache/spark/status/api/v1/ApplicationListResource.scala
@@ -17,8 +17,9 @@
package org.apache.spark.status.api.v1
import java.util.{List => JList}
-import javax.ws.rs.{DefaultValue, GET, Produces, QueryParam}
-import javax.ws.rs.core.MediaType
+
+import jakarta.ws.rs.{DefaultValue, GET, Produces, QueryParam}
+import jakarta.ws.rs.core.MediaType
@Produces(Array(MediaType.APPLICATION_JSON))
private[v1] class ApplicationListResource extends ApiRequestContext {
diff --git a/core/src/main/scala/org/apache/spark/status/api/v1/JacksonMessageWriter.scala b/core/src/main/scala/org/apache/spark/status/api/v1/JacksonMessageWriter.scala
index 846e4f9cc94e..259d0aacc575 100644
--- a/core/src/main/scala/org/apache/spark/status/api/v1/JacksonMessageWriter.scala
+++ b/core/src/main/scala/org/apache/spark/status/api/v1/JacksonMessageWriter.scala
@@ -21,12 +21,12 @@ import java.lang.annotation.Annotation
import java.lang.reflect.Type
import java.text.SimpleDateFormat
import java.util.{Calendar, Locale, SimpleTimeZone}
-import javax.ws.rs.Produces
-import javax.ws.rs.core.{MediaType, MultivaluedMap}
-import javax.ws.rs.ext.{MessageBodyWriter, Provider}
import com.fasterxml.jackson.annotation.JsonInclude
import com.fasterxml.jackson.databind.{ObjectMapper, SerializationFeature}
+import jakarta.ws.rs.Produces
+import jakarta.ws.rs.core.{MediaType, MultivaluedMap}
+import jakarta.ws.rs.ext.{MessageBodyWriter, Provider}
/**
* This class converts the POJO metric responses into json, using jackson.
diff --git a/core/src/main/scala/org/apache/spark/status/api/v1/OneApplicationResource.scala b/core/src/main/scala/org/apache/spark/status/api/v1/OneApplicationResource.scala
index bfe43fde17d0..604a5017db3b 100644
--- a/core/src/main/scala/org/apache/spark/status/api/v1/OneApplicationResource.scala
+++ b/core/src/main/scala/org/apache/spark/status/api/v1/OneApplicationResource.scala
@@ -19,11 +19,12 @@ package org.apache.spark.status.api.v1
import java.io.OutputStream
import java.util.{List => JList}
import java.util.zip.ZipOutputStream
-import javax.ws.rs.{NotFoundException => _, _}
-import javax.ws.rs.core.{MediaType, Response, StreamingOutput}
import scala.util.control.NonFatal
+import jakarta.ws.rs.{NotFoundException => _, _}
+import jakarta.ws.rs.core.{MediaType, Response, StreamingOutput}
+
import org.apache.spark.{JobExecutionStatus, SparkContext}
import org.apache.spark.status.api.v1
import org.apache.spark.util.Utils
diff --git a/core/src/main/scala/org/apache/spark/status/api/v1/PrometheusResource.scala b/core/src/main/scala/org/apache/spark/status/api/v1/PrometheusResource.scala
index c4e3bdc64ee3..6efe3106ba56 100644
--- a/core/src/main/scala/org/apache/spark/status/api/v1/PrometheusResource.scala
+++ b/core/src/main/scala/org/apache/spark/status/api/v1/PrometheusResource.scala
@@ -16,9 +16,8 @@
*/
package org.apache.spark.status.api.v1
-import javax.ws.rs._
-import javax.ws.rs.core.MediaType
-
+import jakarta.ws.rs._
+import jakarta.ws.rs.core.MediaType
import org.eclipse.jetty.servlet.{ServletContextHandler, ServletHolder}
import org.glassfish.jersey.server.ServerProperties
import org.glassfish.jersey.servlet.ServletContainer
diff --git a/core/src/main/scala/org/apache/spark/status/api/v1/SimpleDateParam.scala b/core/src/main/scala/org/apache/spark/status/api/v1/SimpleDateParam.scala
index d8d5e8958b23..e947fbf281df 100644
--- a/core/src/main/scala/org/apache/spark/status/api/v1/SimpleDateParam.scala
+++ b/core/src/main/scala/org/apache/spark/status/api/v1/SimpleDateParam.scala
@@ -18,9 +18,10 @@ package org.apache.spark.status.api.v1
import java.text.{ParseException, SimpleDateFormat}
import java.util.{Locale, TimeZone}
-import javax.ws.rs.WebApplicationException
-import javax.ws.rs.core.Response
-import javax.ws.rs.core.Response.Status
+
+import jakarta.ws.rs.WebApplicationException
+import jakarta.ws.rs.core.Response
+import jakarta.ws.rs.core.Response.Status
private[v1] class SimpleDateParam(val originalValue: String) {
diff --git a/core/src/main/scala/org/apache/spark/status/api/v1/StagesResource.scala b/core/src/main/scala/org/apache/spark/status/api/v1/StagesResource.scala
index e199dd94e610..ee18d5044ea7 100644
--- a/core/src/main/scala/org/apache/spark/status/api/v1/StagesResource.scala
+++ b/core/src/main/scala/org/apache/spark/status/api/v1/StagesResource.scala
@@ -17,11 +17,12 @@
package org.apache.spark.status.api.v1
import java.util.{HashMap, List => JList, Locale}
-import javax.ws.rs.{NotFoundException => _, _}
-import javax.ws.rs.core.{Context, MediaType, MultivaluedMap, UriInfo}
import scala.jdk.CollectionConverters._
+import jakarta.ws.rs.{NotFoundException => _, _}
+import jakarta.ws.rs.core.{Context, MediaType, MultivaluedMap, UriInfo}
+
import org.apache.spark.status.api.v1.TaskStatus._
import org.apache.spark.ui.UIUtils
import org.apache.spark.ui.jobs.ApiHelper._
diff --git a/core/src/main/scala/org/apache/spark/ui/DriverLogPage.scala b/core/src/main/scala/org/apache/spark/ui/DriverLogPage.scala
index 4a0e311fc6f0..83a8fd628cd7 100644
--- a/core/src/main/scala/org/apache/spark/ui/DriverLogPage.scala
+++ b/core/src/main/scala/org/apache/spark/ui/DriverLogPage.scala
@@ -16,10 +16,10 @@
*/
package org.apache.spark.ui
-import javax.servlet.http.HttpServletRequest
-
import scala.xml.{Node, Unparsed}
+import jakarta.servlet.http.HttpServletRequest
+
import org.apache.spark.SparkConf
import org.apache.spark.internal.Logging
import org.apache.spark.internal.config.DRIVER_LOG_LOCAL_DIR
diff --git a/core/src/main/scala/org/apache/spark/ui/GraphUIData.scala b/core/src/main/scala/org/apache/spark/ui/GraphUIData.scala
index 0e3f691807dc..9dcbb9d3c329 100644
--- a/core/src/main/scala/org/apache/spark/ui/GraphUIData.scala
+++ b/core/src/main/scala/org/apache/spark/ui/GraphUIData.scala
@@ -19,13 +19,14 @@ package org.apache.spark.ui
import java.{util => ju}
import java.lang.{Long => JLong}
-import javax.servlet.http.HttpServletRequest
import scala.collection.mutable
import scala.collection.mutable.ArrayBuffer
import scala.jdk.CollectionConverters._
import scala.xml.{Node, Unparsed}
+import jakarta.servlet.http.HttpServletRequest
+
import org.apache.spark.ui.UIUtils.formatImportJavaScript
/**
diff --git a/core/src/main/scala/org/apache/spark/ui/HttpSecurityFilter.scala b/core/src/main/scala/org/apache/spark/ui/HttpSecurityFilter.scala
index ec37cd6cc5e6..551f0eb98cb8 100644
--- a/core/src/main/scala/org/apache/spark/ui/HttpSecurityFilter.scala
+++ b/core/src/main/scala/org/apache/spark/ui/HttpSecurityFilter.scala
@@ -18,11 +18,11 @@
package org.apache.spark.ui
import java.util.{Enumeration, Map => JMap}
-import javax.servlet._
-import javax.servlet.http.{HttpServletRequest, HttpServletRequestWrapper, HttpServletResponse}
import scala.jdk.CollectionConverters._
+import jakarta.servlet._
+import jakarta.servlet.http.{HttpServletRequest, HttpServletRequestWrapper, HttpServletResponse}
import org.apache.commons.text.StringEscapeUtils
import org.apache.spark.{SecurityManager, SparkConf}
diff --git a/core/src/main/scala/org/apache/spark/ui/JettyUtils.scala b/core/src/main/scala/org/apache/spark/ui/JettyUtils.scala
index a0f65606e60d..5e567a891d58 100644
--- a/core/src/main/scala/org/apache/spark/ui/JettyUtils.scala
+++ b/core/src/main/scala/org/apache/spark/ui/JettyUtils.scala
@@ -19,13 +19,13 @@ package org.apache.spark.ui
import java.net.{URI, URL, URLDecoder}
import java.util.EnumSet
-import javax.servlet.DispatcherType
-import javax.servlet.http._
import scala.language.implicitConversions
import scala.util.Try
import scala.xml.Node
+import jakarta.servlet.DispatcherType
+import jakarta.servlet.http._
import org.eclipse.jetty.client.HttpClient
import org.eclipse.jetty.client.api.Response
import org.eclipse.jetty.client.http.HttpClientTransportOverHTTP
diff --git a/core/src/main/scala/org/apache/spark/ui/PagedTable.scala b/core/src/main/scala/org/apache/spark/ui/PagedTable.scala
index 4fa9cd2c1e1d..a7c74e74d284 100644
--- a/core/src/main/scala/org/apache/spark/ui/PagedTable.scala
+++ b/core/src/main/scala/org/apache/spark/ui/PagedTable.scala
@@ -19,12 +19,12 @@ package org.apache.spark.ui
import java.net.{URLDecoder, URLEncoder}
import java.nio.charset.StandardCharsets.UTF_8
-import javax.servlet.http.HttpServletRequest
import scala.jdk.CollectionConverters._
import scala.xml.{Node, Unparsed}
import com.google.common.base.Splitter
+import jakarta.servlet.http.HttpServletRequest
import org.apache.spark.util.Utils
diff --git a/core/src/main/scala/org/apache/spark/ui/SparkUI.scala b/core/src/main/scala/org/apache/spark/ui/SparkUI.scala
index 44ec92915317..099e47abf408 100644
--- a/core/src/main/scala/org/apache/spark/ui/SparkUI.scala
+++ b/core/src/main/scala/org/apache/spark/ui/SparkUI.scala
@@ -18,8 +18,8 @@
package org.apache.spark.ui
import java.util.Date
-import javax.servlet.http.{HttpServlet, HttpServletRequest, HttpServletResponse}
+import jakarta.servlet.http.{HttpServlet, HttpServletRequest, HttpServletResponse}
import org.eclipse.jetty.servlet.ServletContextHandler
import org.apache.spark.{SecurityManager, SparkConf, SparkContext}
diff --git a/core/src/main/scala/org/apache/spark/ui/UIUtils.scala b/core/src/main/scala/org/apache/spark/ui/UIUtils.scala
index 1c29041f2183..c7e375849278 100644
--- a/core/src/main/scala/org/apache/spark/ui/UIUtils.scala
+++ b/core/src/main/scala/org/apache/spark/ui/UIUtils.scala
@@ -24,14 +24,14 @@ import java.nio.charset.StandardCharsets.UTF_8
import java.time.{Instant, ZoneId}
import java.time.format.DateTimeFormatter
import java.util.{Date, Locale, TimeZone}
-import javax.servlet.http.HttpServletRequest
-import javax.ws.rs.core.{MediaType, MultivaluedMap, Response}
import scala.jdk.CollectionConverters._
import scala.util.control.NonFatal
import scala.xml._
import scala.xml.transform.{RewriteRule, RuleTransformer}
+import jakarta.servlet.http.HttpServletRequest
+import jakarta.ws.rs.core.{MediaType, MultivaluedMap, Response}
import org.glassfish.jersey.internal.util.collection.MultivaluedStringMap
import org.apache.spark.internal.Logging
diff --git a/core/src/main/scala/org/apache/spark/ui/WebUI.scala b/core/src/main/scala/org/apache/spark/ui/WebUI.scala
index b23247c5ee19..2c937e71f64b 100644
--- a/core/src/main/scala/org/apache/spark/ui/WebUI.scala
+++ b/core/src/main/scala/org/apache/spark/ui/WebUI.scala
@@ -18,13 +18,13 @@
package org.apache.spark.ui
import java.util.EnumSet
-import javax.servlet.DispatcherType
-import javax.servlet.http.{HttpServlet, HttpServletRequest}
import scala.collection.mutable.ArrayBuffer
import scala.collection.mutable.HashMap
import scala.xml.Node
+import jakarta.servlet.DispatcherType
+import jakarta.servlet.http.{HttpServlet, HttpServletRequest}
import org.eclipse.jetty.servlet.{FilterHolder, FilterMapping, ServletContextHandler, ServletHolder}
import org.json4s.JsonAST.{JNothing, JValue}
diff --git a/core/src/main/scala/org/apache/spark/ui/env/EnvironmentPage.scala b/core/src/main/scala/org/apache/spark/ui/env/EnvironmentPage.scala
index 4aaa04019cc1..f2718c6bf8d7 100644
--- a/core/src/main/scala/org/apache/spark/ui/env/EnvironmentPage.scala
+++ b/core/src/main/scala/org/apache/spark/ui/env/EnvironmentPage.scala
@@ -17,11 +17,11 @@
package org.apache.spark.ui.env
-import javax.servlet.http.HttpServletRequest
-
import scala.collection.mutable.StringBuilder
import scala.xml.Node
+import jakarta.servlet.http.HttpServletRequest
+
import org.apache.spark.SparkConf
import org.apache.spark.resource.{ExecutorResourceRequest, TaskResourceRequest}
import org.apache.spark.status.AppStatusStore
diff --git a/core/src/main/scala/org/apache/spark/ui/exec/ExecutorHeapHistogramPage.scala b/core/src/main/scala/org/apache/spark/ui/exec/ExecutorHeapHistogramPage.scala
index 6964711a7889..2c9467300bd3 100644
--- a/core/src/main/scala/org/apache/spark/ui/exec/ExecutorHeapHistogramPage.scala
+++ b/core/src/main/scala/org/apache/spark/ui/exec/ExecutorHeapHistogramPage.scala
@@ -17,10 +17,10 @@
package org.apache.spark.ui.exec
-import javax.servlet.http.HttpServletRequest
-
import scala.xml.{Node, Text}
+import jakarta.servlet.http.HttpServletRequest
+
import org.apache.spark.SparkContext
import org.apache.spark.ui.{SparkUITab, UIUtils, WebUIPage}
diff --git a/core/src/main/scala/org/apache/spark/ui/exec/ExecutorThreadDumpPage.scala b/core/src/main/scala/org/apache/spark/ui/exec/ExecutorThreadDumpPage.scala
index 900f8ca8f675..ef26a02a406a 100644
--- a/core/src/main/scala/org/apache/spark/ui/exec/ExecutorThreadDumpPage.scala
+++ b/core/src/main/scala/org/apache/spark/ui/exec/ExecutorThreadDumpPage.scala
@@ -17,10 +17,10 @@
package org.apache.spark.ui.exec
-import javax.servlet.http.HttpServletRequest
-
import scala.xml.{Node, Text, Unparsed}
+import jakarta.servlet.http.HttpServletRequest
+
import org.apache.spark.SparkContext
import org.apache.spark.internal.config.UI.UI_FLAMEGRAPH_ENABLED
import org.apache.spark.status.api.v1.ThreadStackTrace
diff --git a/core/src/main/scala/org/apache/spark/ui/exec/ExecutorsTab.scala b/core/src/main/scala/org/apache/spark/ui/exec/ExecutorsTab.scala
index ea7459dae6d5..db18b02f23d8 100644
--- a/core/src/main/scala/org/apache/spark/ui/exec/ExecutorsTab.scala
+++ b/core/src/main/scala/org/apache/spark/ui/exec/ExecutorsTab.scala
@@ -17,10 +17,10 @@
package org.apache.spark.ui.exec
-import javax.servlet.http.HttpServletRequest
-
import scala.xml.{Node, Unparsed}
+import jakarta.servlet.http.HttpServletRequest
+
import org.apache.spark.internal.config.UI._
import org.apache.spark.ui.{SparkUI, SparkUITab, UIUtils, WebUIPage}
diff --git a/core/src/main/scala/org/apache/spark/ui/jobs/AllJobsPage.scala b/core/src/main/scala/org/apache/spark/ui/jobs/AllJobsPage.scala
index 0b51fe90417a..4d65aba31021 100644
--- a/core/src/main/scala/org/apache/spark/ui/jobs/AllJobsPage.scala
+++ b/core/src/main/scala/org/apache/spark/ui/jobs/AllJobsPage.scala
@@ -20,11 +20,11 @@ package org.apache.spark.ui.jobs
import java.net.URLEncoder
import java.nio.charset.StandardCharsets.UTF_8
import java.util.{Date, Locale}
-import javax.servlet.http.HttpServletRequest
import scala.collection.mutable.ListBuffer
import scala.xml._
+import jakarta.servlet.http.HttpServletRequest
import org.apache.commons.text.StringEscapeUtils
import org.apache.spark.JobExecutionStatus
diff --git a/core/src/main/scala/org/apache/spark/ui/jobs/AllStagesPage.scala b/core/src/main/scala/org/apache/spark/ui/jobs/AllStagesPage.scala
index 39c7f8ba2271..ae8337179627 100644
--- a/core/src/main/scala/org/apache/spark/ui/jobs/AllStagesPage.scala
+++ b/core/src/main/scala/org/apache/spark/ui/jobs/AllStagesPage.scala
@@ -17,10 +17,10 @@
package org.apache.spark.ui.jobs
-import javax.servlet.http.HttpServletRequest
-
import scala.xml.{Attribute, Elem, Node, NodeSeq, Null, Text}
+import jakarta.servlet.http.HttpServletRequest
+
import org.apache.spark.scheduler.Schedulable
import org.apache.spark.status.{AppSummary, PoolData}
import org.apache.spark.status.api.v1.{StageData, StageStatus}
diff --git a/core/src/main/scala/org/apache/spark/ui/jobs/JobPage.scala b/core/src/main/scala/org/apache/spark/ui/jobs/JobPage.scala
index 382e11357499..793e65f44ba9 100644
--- a/core/src/main/scala/org/apache/spark/ui/jobs/JobPage.scala
+++ b/core/src/main/scala/org/apache/spark/ui/jobs/JobPage.scala
@@ -18,11 +18,11 @@
package org.apache.spark.ui.jobs
import java.util.Locale
-import javax.servlet.http.HttpServletRequest
import scala.collection.mutable.{Buffer, ListBuffer}
import scala.xml.{Node, NodeSeq, Unparsed, Utility}
+import jakarta.servlet.http.HttpServletRequest
import org.apache.commons.text.StringEscapeUtils
import org.apache.spark.JobExecutionStatus
diff --git a/core/src/main/scala/org/apache/spark/ui/jobs/JobsTab.scala b/core/src/main/scala/org/apache/spark/ui/jobs/JobsTab.scala
index f5a2721ca4f5..ce7698a59ae9 100644
--- a/core/src/main/scala/org/apache/spark/ui/jobs/JobsTab.scala
+++ b/core/src/main/scala/org/apache/spark/ui/jobs/JobsTab.scala
@@ -17,7 +17,7 @@
package org.apache.spark.ui.jobs
-import javax.servlet.http.HttpServletRequest
+import jakarta.servlet.http.HttpServletRequest
import org.apache.spark.JobExecutionStatus
import org.apache.spark.internal.config.SCHEDULER_MODE
diff --git a/core/src/main/scala/org/apache/spark/ui/jobs/PoolPage.scala b/core/src/main/scala/org/apache/spark/ui/jobs/PoolPage.scala
index e10385cbca41..15592adc57ce 100644
--- a/core/src/main/scala/org/apache/spark/ui/jobs/PoolPage.scala
+++ b/core/src/main/scala/org/apache/spark/ui/jobs/PoolPage.scala
@@ -17,10 +17,10 @@
package org.apache.spark.ui.jobs
-import javax.servlet.http.HttpServletRequest
-
import scala.xml.Node
+import jakarta.servlet.http.HttpServletRequest
+
import org.apache.spark.status.PoolData
import org.apache.spark.ui.{UIUtils, WebUIPage}
diff --git a/core/src/main/scala/org/apache/spark/ui/jobs/PoolTable.scala b/core/src/main/scala/org/apache/spark/ui/jobs/PoolTable.scala
index e36df511541f..a6b2a029f71e 100644
--- a/core/src/main/scala/org/apache/spark/ui/jobs/PoolTable.scala
+++ b/core/src/main/scala/org/apache/spark/ui/jobs/PoolTable.scala
@@ -19,10 +19,11 @@ package org.apache.spark.ui.jobs
import java.net.URLEncoder
import java.nio.charset.StandardCharsets
-import javax.servlet.http.HttpServletRequest
import scala.xml.Node
+import jakarta.servlet.http.HttpServletRequest
+
import org.apache.spark.scheduler.Schedulable
import org.apache.spark.status.PoolData
import org.apache.spark.ui.UIUtils
diff --git a/core/src/main/scala/org/apache/spark/ui/jobs/StagePage.scala b/core/src/main/scala/org/apache/spark/ui/jobs/StagePage.scala
index c6ff62b122c5..257f7b37758a 100644
--- a/core/src/main/scala/org/apache/spark/ui/jobs/StagePage.scala
+++ b/core/src/main/scala/org/apache/spark/ui/jobs/StagePage.scala
@@ -18,11 +18,12 @@
package org.apache.spark.ui.jobs
import java.util.Date
-import javax.servlet.http.HttpServletRequest
import scala.collection.mutable.HashSet
import scala.xml.{Node, Unparsed}
+import jakarta.servlet.http.HttpServletRequest
+
import org.apache.spark.internal.config.UI._
import org.apache.spark.scheduler.TaskLocality
import org.apache.spark.status._
diff --git a/core/src/main/scala/org/apache/spark/ui/jobs/StageTable.scala b/core/src/main/scala/org/apache/spark/ui/jobs/StageTable.scala
index 0f611c7472eb..124e41ce56d8 100644
--- a/core/src/main/scala/org/apache/spark/ui/jobs/StageTable.scala
+++ b/core/src/main/scala/org/apache/spark/ui/jobs/StageTable.scala
@@ -20,10 +20,11 @@ package org.apache.spark.ui.jobs
import java.net.URLEncoder
import java.nio.charset.StandardCharsets.UTF_8
import java.util.Date
-import javax.servlet.http.HttpServletRequest
import scala.xml._
+import jakarta.servlet.http.HttpServletRequest
+
import org.apache.spark.status.AppStatusStore
import org.apache.spark.status.api.v1
import org.apache.spark.ui._
diff --git a/core/src/main/scala/org/apache/spark/ui/jobs/StagesTab.scala b/core/src/main/scala/org/apache/spark/ui/jobs/StagesTab.scala
index cb87d9329417..8be4998827ac 100644
--- a/core/src/main/scala/org/apache/spark/ui/jobs/StagesTab.scala
+++ b/core/src/main/scala/org/apache/spark/ui/jobs/StagesTab.scala
@@ -17,7 +17,7 @@
package org.apache.spark.ui.jobs
-import javax.servlet.http.HttpServletRequest
+import jakarta.servlet.http.HttpServletRequest
import org.apache.spark.internal.config.SCHEDULER_MODE
import org.apache.spark.internal.config.UI.UI_THREAD_DUMPS_ENABLED
diff --git a/core/src/main/scala/org/apache/spark/ui/jobs/TaskThreadDumpPage.scala b/core/src/main/scala/org/apache/spark/ui/jobs/TaskThreadDumpPage.scala
index 7b6da1147c59..49b919ce0de9 100644
--- a/core/src/main/scala/org/apache/spark/ui/jobs/TaskThreadDumpPage.scala
+++ b/core/src/main/scala/org/apache/spark/ui/jobs/TaskThreadDumpPage.scala
@@ -17,10 +17,10 @@
package org.apache.spark.ui.jobs
-import javax.servlet.http.HttpServletRequest
-
import scala.xml.{Node, Text}
+import jakarta.servlet.http.HttpServletRequest
+
import org.apache.spark.SparkContext
import org.apache.spark.ui.{SparkUITab, UIUtils, WebUIPage}
diff --git a/core/src/main/scala/org/apache/spark/ui/storage/RDDPage.scala b/core/src/main/scala/org/apache/spark/ui/storage/RDDPage.scala
index 481b49d6a198..d21ea3732f3b 100644
--- a/core/src/main/scala/org/apache/spark/ui/storage/RDDPage.scala
+++ b/core/src/main/scala/org/apache/spark/ui/storage/RDDPage.scala
@@ -19,10 +19,11 @@ package org.apache.spark.ui.storage
import java.net.URLEncoder
import java.nio.charset.StandardCharsets.UTF_8
-import javax.servlet.http.HttpServletRequest
import scala.xml.{Node, Unparsed}
+import jakarta.servlet.http.HttpServletRequest
+
import org.apache.spark.status.AppStatusStore
import org.apache.spark.status.api.v1.{ExecutorSummary, RDDDataDistribution, RDDPartitionInfo}
import org.apache.spark.ui._
diff --git a/core/src/main/scala/org/apache/spark/ui/storage/StoragePage.scala b/core/src/main/scala/org/apache/spark/ui/storage/StoragePage.scala
index 726622673650..23d95560243d 100644
--- a/core/src/main/scala/org/apache/spark/ui/storage/StoragePage.scala
+++ b/core/src/main/scala/org/apache/spark/ui/storage/StoragePage.scala
@@ -17,11 +17,11 @@
package org.apache.spark.ui.storage
-import javax.servlet.http.HttpServletRequest
-
import scala.collection.SortedMap
import scala.xml.Node
+import jakarta.servlet.http.HttpServletRequest
+
import org.apache.spark.status.{AppStatusStore, StreamBlockData}
import org.apache.spark.status.api.v1
import org.apache.spark.ui._
diff --git a/core/src/main/scala/org/apache/spark/util/Utils.scala b/core/src/main/scala/org/apache/spark/util/Utils.scala
index 25b03a2c5d6d..e1ced9f8b41d 100644
--- a/core/src/main/scala/org/apache/spark/util/Utils.scala
+++ b/core/src/main/scala/org/apache/spark/util/Utils.scala
@@ -32,7 +32,6 @@ import java.util.{Locale, Properties, Random, UUID}
import java.util.concurrent._
import java.util.concurrent.TimeUnit.NANOSECONDS
import java.util.zip.{GZIPInputStream, ZipInputStream}
-import javax.ws.rs.core.UriBuilder
import scala.annotation.tailrec
import scala.collection.Map
@@ -49,6 +48,7 @@ import com.google.common.cache.{CacheBuilder, CacheLoader, LoadingCache}
import com.google.common.collect.Interners
import com.google.common.io.{ByteStreams, Files => GFiles}
import com.google.common.net.InetAddresses
+import jakarta.ws.rs.core.UriBuilder
import org.apache.commons.codec.binary.Hex
import org.apache.commons.io.IOUtils
import org.apache.commons.lang3.{JavaVersion, SystemUtils}
diff --git a/core/src/test/scala/org/apache/spark/deploy/history/ApplicationCacheSuite.scala b/core/src/test/scala/org/apache/spark/deploy/history/ApplicationCacheSuite.scala
index 1d5ec57a55b5..d27c07c36c0d 100644
--- a/core/src/test/scala/org/apache/spark/deploy/history/ApplicationCacheSuite.scala
+++ b/core/src/test/scala/org/apache/spark/deploy/history/ApplicationCacheSuite.scala
@@ -19,11 +19,11 @@ package org.apache.spark.deploy.history
import java.util.{Date, NoSuchElementException}
import java.util.concurrent.{CountDownLatch, Executors, TimeoutException, TimeUnit}
-import javax.servlet.http.{HttpServletRequest, HttpServletResponse}
import scala.collection.mutable
import com.codahale.metrics.Counter
+import jakarta.servlet.http.{HttpServletRequest, HttpServletResponse}
import org.apache.hadoop.conf.Configuration
import org.eclipse.jetty.servlet.ServletContextHandler
import org.mockito.ArgumentMatchers.any
diff --git a/core/src/test/scala/org/apache/spark/deploy/history/HistoryServerPageSuite.scala b/core/src/test/scala/org/apache/spark/deploy/history/HistoryServerPageSuite.scala
index f6ef4f7b4f61..83ef300460b9 100644
--- a/core/src/test/scala/org/apache/spark/deploy/history/HistoryServerPageSuite.scala
+++ b/core/src/test/scala/org/apache/spark/deploy/history/HistoryServerPageSuite.scala
@@ -18,8 +18,8 @@
package org.apache.spark.deploy.history
import java.net.URL
-import javax.servlet.http.HttpServletResponse
+import jakarta.servlet.http.HttpServletResponse
import org.json4s.DefaultFormats
import org.json4s.JsonAST._
import org.json4s.jackson.JsonMethods.parse
diff --git a/core/src/test/scala/org/apache/spark/deploy/history/HistoryServerSuite.scala b/core/src/test/scala/org/apache/spark/deploy/history/HistoryServerSuite.scala
index 9131934207b7..0d739b647eab 100644
--- a/core/src/test/scala/org/apache/spark/deploy/history/HistoryServerSuite.scala
+++ b/core/src/test/scala/org/apache/spark/deploy/history/HistoryServerSuite.scala
@@ -20,13 +20,13 @@ import java.io.{File, FileInputStream, FileWriter, InputStream, IOException}
import java.net.{HttpURLConnection, URL}
import java.nio.charset.StandardCharsets
import java.util.zip.ZipInputStream
-import javax.servlet._
-import javax.servlet.http.{HttpServletRequest, HttpServletRequestWrapper, HttpServletResponse}
import scala.concurrent.duration._
import scala.jdk.CollectionConverters._
import com.google.common.io.{ByteStreams, Files}
+import jakarta.servlet._
+import jakarta.servlet.http.{HttpServletRequest, HttpServletRequestWrapper, HttpServletResponse}
import org.apache.commons.io.{FileUtils, IOUtils}
import org.apache.hadoop.fs.{FileStatus, FileSystem, Path}
import org.json4s.JsonAST._
diff --git a/core/src/test/scala/org/apache/spark/deploy/history/RealBrowserUIHistoryServerSuite.scala b/core/src/test/scala/org/apache/spark/deploy/history/RealBrowserUIHistoryServerSuite.scala
index 5eeb2c7a8053..7effeee3424b 100644
--- a/core/src/test/scala/org/apache/spark/deploy/history/RealBrowserUIHistoryServerSuite.scala
+++ b/core/src/test/scala/org/apache/spark/deploy/history/RealBrowserUIHistoryServerSuite.scala
@@ -17,8 +17,7 @@
package org.apache.spark.deploy.history
-import javax.servlet.http.HttpServletRequest
-
+import jakarta.servlet.http.HttpServletRequest
import org.eclipse.jetty.proxy.ProxyServlet
import org.eclipse.jetty.servlet.{ServletContextHandler, ServletHolder}
import org.openqa.selenium.WebDriver
diff --git a/core/src/test/scala/org/apache/spark/deploy/master/ui/ApplicationPageSuite.scala b/core/src/test/scala/org/apache/spark/deploy/master/ui/ApplicationPageSuite.scala
index 9890ac24e168..a9b96f85808d 100644
--- a/core/src/test/scala/org/apache/spark/deploy/master/ui/ApplicationPageSuite.scala
+++ b/core/src/test/scala/org/apache/spark/deploy/master/ui/ApplicationPageSuite.scala
@@ -18,8 +18,8 @@
package org.apache.spark.deploy.master.ui
import java.util.Date
-import javax.servlet.http.HttpServletRequest
+import jakarta.servlet.http.HttpServletRequest
import org.mockito.Mockito.{mock, when}
import org.apache.spark.SparkFunSuite
diff --git a/core/src/test/scala/org/apache/spark/deploy/master/ui/ReadOnlyMasterWebUISuite.scala b/core/src/test/scala/org/apache/spark/deploy/master/ui/ReadOnlyMasterWebUISuite.scala
index ab323aaf7999..d7f05754a7cd 100644
--- a/core/src/test/scala/org/apache/spark/deploy/master/ui/ReadOnlyMasterWebUISuite.scala
+++ b/core/src/test/scala/org/apache/spark/deploy/master/ui/ReadOnlyMasterWebUISuite.scala
@@ -17,8 +17,7 @@
package org.apache.spark.deploy.master.ui
-import javax.servlet.http.HttpServletResponse.SC_METHOD_NOT_ALLOWED
-
+import jakarta.servlet.http.HttpServletResponse.SC_METHOD_NOT_ALLOWED
import org.mockito.Mockito.{mock, when}
import org.apache.spark.{SecurityManager, SparkConf, SparkFunSuite}
diff --git a/core/src/test/scala/org/apache/spark/deploy/rest/StandaloneRestSubmitSuite.scala b/core/src/test/scala/org/apache/spark/deploy/rest/StandaloneRestSubmitSuite.scala
index 04281dcd0b43..43a5f7a784f5 100644
--- a/core/src/test/scala/org/apache/spark/deploy/rest/StandaloneRestSubmitSuite.scala
+++ b/core/src/test/scala/org/apache/spark/deploy/rest/StandaloneRestSubmitSuite.scala
@@ -20,10 +20,10 @@ package org.apache.spark.deploy.rest
import java.io.DataOutputStream
import java.net.{HttpURLConnection, URL}
import java.nio.charset.StandardCharsets
-import javax.servlet.http.HttpServletResponse
import scala.collection.mutable
+import jakarta.servlet.http.HttpServletResponse
import org.json4s.JsonAST._
import org.json4s.jackson.JsonMethods._
diff --git a/core/src/test/scala/org/apache/spark/status/api/v1/SimpleDateParamSuite.scala b/core/src/test/scala/org/apache/spark/status/api/v1/SimpleDateParamSuite.scala
index ff2060e27846..206db1c0b232 100644
--- a/core/src/test/scala/org/apache/spark/status/api/v1/SimpleDateParamSuite.scala
+++ b/core/src/test/scala/org/apache/spark/status/api/v1/SimpleDateParamSuite.scala
@@ -16,8 +16,7 @@
*/
package org.apache.spark.status.api.v1
-import javax.ws.rs.WebApplicationException
-
+import jakarta.ws.rs.WebApplicationException
import org.scalatest.matchers.must.Matchers
import org.scalatest.matchers.should.Matchers._
diff --git a/core/src/test/scala/org/apache/spark/ui/DriverLogPageSuite.scala b/core/src/test/scala/org/apache/spark/ui/DriverLogPageSuite.scala
index db8e06cb0403..1a26aa53dcbf 100644
--- a/core/src/test/scala/org/apache/spark/ui/DriverLogPageSuite.scala
+++ b/core/src/test/scala/org/apache/spark/ui/DriverLogPageSuite.scala
@@ -19,8 +19,8 @@ package org.apache.spark.ui
import java.io.File
import java.nio.charset.StandardCharsets
-import javax.servlet.http.HttpServletRequest
+import jakarta.servlet.http.HttpServletRequest
import org.apache.commons.io.FileUtils
import org.mockito.Mockito.{mock, when}
diff --git a/core/src/test/scala/org/apache/spark/ui/HttpSecurityFilterSuite.scala b/core/src/test/scala/org/apache/spark/ui/HttpSecurityFilterSuite.scala
index e69359a6573a..72936646fb73 100644
--- a/core/src/test/scala/org/apache/spark/ui/HttpSecurityFilterSuite.scala
+++ b/core/src/test/scala/org/apache/spark/ui/HttpSecurityFilterSuite.scala
@@ -18,11 +18,11 @@
package org.apache.spark.ui
import java.util.UUID
-import javax.servlet.FilterChain
-import javax.servlet.http.{HttpServletRequest, HttpServletResponse}
import scala.jdk.CollectionConverters._
+import jakarta.servlet.FilterChain
+import jakarta.servlet.http.{HttpServletRequest, HttpServletResponse}
import org.mockito.ArgumentCaptor
import org.mockito.ArgumentMatchers.{any, eq => meq}
import org.mockito.Mockito.{mock, times, verify, when}
diff --git a/core/src/test/scala/org/apache/spark/ui/StagePageSuite.scala b/core/src/test/scala/org/apache/spark/ui/StagePageSuite.scala
index 6565b9b50a92..c76c97d07141 100644
--- a/core/src/test/scala/org/apache/spark/ui/StagePageSuite.scala
+++ b/core/src/test/scala/org/apache/spark/ui/StagePageSuite.scala
@@ -17,10 +17,9 @@
package org.apache.spark.ui
-import javax.servlet.http.HttpServletRequest
-
import scala.xml.Node
+import jakarta.servlet.http.HttpServletRequest
import org.mockito.Mockito.{mock, when, RETURNS_SMART_NULLS}
import org.apache.spark._
diff --git a/core/src/test/scala/org/apache/spark/ui/UISeleniumSuite.scala b/core/src/test/scala/org/apache/spark/ui/UISeleniumSuite.scala
index 7e49cbce6ec1..327715b5fa2b 100644
--- a/core/src/test/scala/org/apache/spark/ui/UISeleniumSuite.scala
+++ b/core/src/test/scala/org/apache/spark/ui/UISeleniumSuite.scala
@@ -19,11 +19,11 @@ package org.apache.spark.ui
import java.net.URL
import java.util.Locale
-import javax.servlet.http.{HttpServletRequest, HttpServletResponse}
import scala.io.Source
import scala.xml.Node
+import jakarta.servlet.http.{HttpServletRequest, HttpServletResponse}
import org.glassfish.jersey.internal.util.collection.MultivaluedStringMap
import org.htmlunit.DefaultCssErrorHandler
import org.htmlunit.cssparser.parser.CSSParseException
diff --git a/core/src/test/scala/org/apache/spark/ui/UISuite.scala b/core/src/test/scala/org/apache/spark/ui/UISuite.scala
index cb5fbda3e58a..10681f22fa62 100644
--- a/core/src/test/scala/org/apache/spark/ui/UISuite.scala
+++ b/core/src/test/scala/org/apache/spark/ui/UISuite.scala
@@ -20,11 +20,11 @@ package org.apache.spark.ui
import java.net.{BindException, ServerSocket}
import java.net.{URI, URL}
import java.util.Locale
-import javax.servlet._
-import javax.servlet.http.{HttpServlet, HttpServletRequest, HttpServletResponse}
import scala.io.Source
+import jakarta.servlet._
+import jakarta.servlet.http.{HttpServlet, HttpServletRequest, HttpServletResponse}
import org.eclipse.jetty.servlet.{ServletContextHandler, ServletHolder}
import org.eclipse.jetty.util.thread.QueuedThreadPool
import org.mockito.Mockito.{mock, when}
diff --git a/core/src/test/scala/org/apache/spark/ui/env/EnvironmentPageSuite.scala b/core/src/test/scala/org/apache/spark/ui/env/EnvironmentPageSuite.scala
index a318e08d23d6..d8074bf879dd 100644
--- a/core/src/test/scala/org/apache/spark/ui/env/EnvironmentPageSuite.scala
+++ b/core/src/test/scala/org/apache/spark/ui/env/EnvironmentPageSuite.scala
@@ -17,8 +17,7 @@
package org.apache.spark.ui.env
-import javax.servlet.http.HttpServletRequest
-
+import jakarta.servlet.http.HttpServletRequest
import org.mockito.Mockito._
import org.apache.spark.SparkConf
diff --git a/core/src/test/scala/org/apache/spark/ui/storage/StoragePageSuite.scala b/core/src/test/scala/org/apache/spark/ui/storage/StoragePageSuite.scala
index ccaa836e48f9..7f8cba0c3918 100644
--- a/core/src/test/scala/org/apache/spark/ui/storage/StoragePageSuite.scala
+++ b/core/src/test/scala/org/apache/spark/ui/storage/StoragePageSuite.scala
@@ -17,10 +17,9 @@
package org.apache.spark.ui.storage
-import javax.servlet.http.HttpServletRequest
-
import scala.xml.{Node, Text}
+import jakarta.servlet.http.HttpServletRequest
import org.mockito.Mockito._
import org.apache.spark.SparkFunSuite
diff --git a/dev/deps/spark-deps-hadoop-3-hive-2.3 b/dev/deps/spark-deps-hadoop-3-hive-2.3
index 97205011e265..2d9035afebed 100644
--- a/dev/deps/spark-deps-hadoop-3-hive-2.3
+++ b/dev/deps/spark-deps-hadoop-3-hive-2.3
@@ -13,7 +13,7 @@ aliyun-sdk-oss/3.13.0//aliyun-sdk-oss-3.13.0.jar
annotations/17.0.0//annotations-17.0.0.jar
antlr-runtime/3.5.2//antlr-runtime-3.5.2.jar
antlr4-runtime/4.13.1//antlr4-runtime-4.13.1.jar
-aopalliance-repackaged/2.6.1//aopalliance-repackaged-2.6.1.jar
+aopalliance-repackaged/3.0.3//aopalliance-repackaged-3.0.3.jar
arpack/3.0.3//arpack-3.0.3.jar
arpack_combined_all/0.1//arpack_combined_all-0.1.jar
arrow-format/15.0.0//arrow-format-15.0.0.jar
@@ -94,9 +94,9 @@ hive-shims-common/2.3.9//hive-shims-common-2.3.9.jar
hive-shims-scheduler/2.3.9//hive-shims-scheduler-2.3.9.jar
hive-shims/2.3.9//hive-shims-2.3.9.jar
hive-storage-api/2.8.1//hive-storage-api-2.8.1.jar
-hk2-api/2.6.1//hk2-api-2.6.1.jar
-hk2-locator/2.6.1//hk2-locator-2.6.1.jar
-hk2-utils/2.6.1//hk2-utils-2.6.1.jar
+hk2-api/3.0.3//hk2-api-3.0.3.jar
+hk2-locator/3.0.3//hk2-locator-3.0.3.jar
+hk2-utils/3.0.3//hk2-utils-3.0.3.jar
httpclient/4.5.14//httpclient-4.5.14.jar
httpcore/4.4.16//httpcore-4.4.16.jar
icu4j/72.1//icu4j-72.1.jar
@@ -112,30 +112,32 @@ jackson-dataformat-yaml/2.16.1//jackson-dataformat-yaml-2.16.1.jar
jackson-datatype-jsr310/2.16.1//jackson-datatype-jsr310-2.16.1.jar
jackson-mapper-asl/1.9.13//jackson-mapper-asl-1.9.13.jar
jackson-module-scala_2.13/2.16.1//jackson-module-scala_2.13-2.16.1.jar
-jakarta.annotation-api/1.3.5//jakarta.annotation-api-1.3.5.jar
-jakarta.inject/2.6.1//jakarta.inject-2.6.1.jar
-jakarta.servlet-api/4.0.3//jakarta.servlet-api-4.0.3.jar
-jakarta.validation-api/2.0.2//jakarta.validation-api-2.0.2.jar
-jakarta.ws.rs-api/2.1.6//jakarta.ws.rs-api-2.1.6.jar
+jakarta.annotation-api/2.0.0//jakarta.annotation-api-2.0.0.jar
+jakarta.inject-api/2.0.1//jakarta.inject-api-2.0.1.jar
+jakarta.servlet-api/5.0.0//jakarta.servlet-api-5.0.0.jar
+jakarta.validation-api/3.0.2//jakarta.validation-api-3.0.2.jar
+jakarta.ws.rs-api/3.0.0//jakarta.ws.rs-api-3.0.0.jar
jakarta.xml.bind-api/2.3.2//jakarta.xml.bind-api-2.3.2.jar
janino/3.1.9//janino-3.1.9.jar
java-diff-utils/4.12//java-diff-utils-4.12.jar
javassist/3.29.2-GA//javassist-3.29.2-GA.jar
javax.jdo/3.2.0-m3//javax.jdo-3.2.0-m3.jar
+javax.servlet-api/4.0.1//javax.servlet-api-4.0.1.jar
javolution/5.5.1//javolution-5.5.1.jar
+jaxb-api/2.2.11//jaxb-api-2.2.11.jar
jaxb-runtime/2.3.2//jaxb-runtime-2.3.2.jar
jcl-over-slf4j/2.0.11//jcl-over-slf4j-2.0.11.jar
jdo-api/3.0.1//jdo-api-3.0.1.jar
jdom2/2.0.6//jdom2-2.0.6.jar
-jersey-client/2.41//jersey-client-2.41.jar
-jersey-common/2.41//jersey-common-2.41.jar
-jersey-container-servlet-core/2.41//jersey-container-servlet-core-2.41.jar
-jersey-container-servlet/2.41//jersey-container-servlet-2.41.jar
-jersey-hk2/2.41//jersey-hk2-2.41.jar
-jersey-server/2.41//jersey-server-2.41.jar
+jersey-client/3.0.12//jersey-client-3.0.12.jar
+jersey-common/3.0.12//jersey-common-3.0.12.jar
+jersey-container-servlet-core/3.0.12//jersey-container-servlet-core-3.0.12.jar
+jersey-container-servlet/3.0.12//jersey-container-servlet-3.0.12.jar
+jersey-hk2/3.0.12//jersey-hk2-3.0.12.jar
+jersey-server/3.0.12//jersey-server-3.0.12.jar
jettison/1.5.4//jettison-1.5.4.jar
-jetty-util-ajax/10.0.19//jetty-util-ajax-10.0.19.jar
-jetty-util/10.0.19//jetty-util-10.0.19.jar
+jetty-util-ajax/11.0.19//jetty-util-ajax-11.0.19.jar
+jetty-util/11.0.19//jetty-util-11.0.19.jar
jline/2.14.6//jline-2.14.6.jar
jline/3.22.0//jline-3.22.0.jar
jna/5.13.0//jna-5.13.0.jar
diff --git a/docs/core-migration-guide.md b/docs/core-migration-guide.md
index 26e6b0f1f444..b80d1441dab4 100644
--- a/docs/core-migration-guide.md
+++ b/docs/core-migration-guide.md
@@ -24,6 +24,8 @@ license: |
## Upgrading from Core 3.5 to 4.0
+- Since Spark 4.0, Spark migrated all its internal reference of servlet API from `javax` to `jakarta`
+
- Since Spark 4.0, Spark will roll event logs to archive them incrementally. To restore the behavior before Spark 4.0, you can set `spark.eventLog.rolling.enabled` to `false`.
- Since Spark 4.0, Spark will compress event logs. To restore the behavior before Spark 4.0, you can set `spark.eventLog.compress` to `false`.
diff --git a/mllib/pom.xml b/mllib/pom.xml
index 49a53e9a994f..4f983a325a0c 100644
--- a/mllib/pom.xml
+++ b/mllib/pom.xml
@@ -34,6 +34,10 @@
https://spark.apache.org/
+
+ javax.xml.bind
+ jaxb-api
+
org.scala-lang.modules
scala-parser-combinators_${scala.binary.version}
diff --git a/pom.xml b/pom.xml
index 124552a42ff7..eccbd3846655 100644
--- a/pom.xml
+++ b/pom.xml
@@ -143,8 +143,10 @@
1.13.1
1.9.2
shaded-protobuf
- 10.0.19
- 4.0.3
+ 11.0.19
+ 5.0.0
+
+ 4.0.1
0.10.0
- 2.41
+ 3.0.12
2.12.7
3.5.2
3.0.0
+ 2.2.11
0.12.0
4.13.1
1.1
@@ -562,6 +561,7 @@
+
@@ -1083,7 +1083,7 @@
javax.xml.bind
jaxb-api
- 2.2.11
+ ${jaxb.version}
org.scalanlp
@@ -2841,6 +2841,16 @@
datasketches-java
${datasketches.version}
+
+ jakarta.servlet
+ jakarta.servlet-api
+ ${jakartaservlet.version}
+
+
+ javax.servlet
+ javax.servlet-api
+ ${javaxservlet.version}
+
diff --git a/project/MimaExcludes.scala b/project/MimaExcludes.scala
index 3e1391317eab..225a13cd3537 100644
--- a/project/MimaExcludes.scala
+++ b/project/MimaExcludes.scala
@@ -79,7 +79,10 @@ object MimaExcludes {
// TODO(SPARK-46878): Invalid Mima report for StringType extension
ProblemFilters.exclude[DirectMissingMethodProblem]("org.apache.spark.sql.types.StringType.this"),
// SPARK-47011: Remove deprecated BinaryClassificationMetrics.scoreLabelsWeight
- ProblemFilters.exclude[DirectMissingMethodProblem]("org.apache.spark.mllib.evaluation.BinaryClassificationMetrics.scoreLabelsWeight")
+ ProblemFilters.exclude[DirectMissingMethodProblem]("org.apache.spark.mllib.evaluation.BinaryClassificationMetrics.scoreLabelsWeight"),
+ // SPARK-46938: Javax -> Jakarta namespace change.
+ ProblemFilters.exclude[MissingTypesProblem]("org.apache.spark.ui.ProxyRedirectHandler$ResponseWrapper"),
+ ProblemFilters.exclude[IncompatibleMethTypeProblem]("org.apache.spark.ui.ProxyRedirectHandler#ResponseWrapper.this")
)
// Default exclude rules
diff --git a/project/SparkBuild.scala b/project/SparkBuild.scala
index af7a7905377d..9ca53f46eec0 100644
--- a/project/SparkBuild.scala
+++ b/project/SparkBuild.scala
@@ -243,7 +243,9 @@ object SparkBuild extends PomBuild {
// SPARK-45627 `enum`, `export` and `given` will become keywords in Scala 3,
// so they are prohibited from being used as variable names in Scala 2.13 to
// reduce the cost of migration in subsequent versions.
- "-Wconf:cat=deprecation&msg=it will become a keyword in Scala 3:e"
+ "-Wconf:cat=deprecation&msg=it will become a keyword in Scala 3:e",
+ // SPARK-46938 to prevent enum scan on pmml-model, under spark-mllib module.
+ "-Wconf:cat=other&site=org.dmg.pmml.*:w"
)
}
)
diff --git a/resource-managers/yarn/src/main/scala/org/apache/spark/deploy/yarn/YarnProxyRedirectFilter.scala b/resource-managers/yarn/src/main/scala/org/apache/spark/deploy/yarn/YarnProxyRedirectFilter.scala
index ae625df75362..22c71dd59494 100644
--- a/resource-managers/yarn/src/main/scala/org/apache/spark/deploy/yarn/YarnProxyRedirectFilter.scala
+++ b/resource-managers/yarn/src/main/scala/org/apache/spark/deploy/yarn/YarnProxyRedirectFilter.scala
@@ -17,8 +17,8 @@
package org.apache.spark.deploy.yarn
-import javax.servlet._
-import javax.servlet.http.{HttpServletRequest, HttpServletResponse}
+import jakarta.servlet._
+import jakarta.servlet.http.{HttpServletRequest, HttpServletResponse}
import org.apache.spark.internal.Logging
diff --git a/resource-managers/yarn/src/main/scala/org/apache/spark/scheduler/cluster/YarnSchedulerBackend.scala b/resource-managers/yarn/src/main/scala/org/apache/spark/scheduler/cluster/YarnSchedulerBackend.scala
index 8b88d38f033b..1e3bec628d90 100644
--- a/resource-managers/yarn/src/main/scala/org/apache/spark/scheduler/cluster/YarnSchedulerBackend.scala
+++ b/resource-managers/yarn/src/main/scala/org/apache/spark/scheduler/cluster/YarnSchedulerBackend.scala
@@ -19,12 +19,12 @@ package org.apache.spark.scheduler.cluster
import java.util.EnumSet
import java.util.concurrent.atomic.AtomicBoolean
-import javax.servlet.DispatcherType
import scala.concurrent.{ExecutionContext, Future}
import scala.util.{Failure, Success}
import scala.util.control.NonFatal
+import jakarta.servlet.DispatcherType
import org.apache.hadoop.yarn.api.records.{ApplicationAttemptId, ApplicationId}
import org.apache.spark.SparkContext
diff --git a/resource-managers/yarn/src/test/scala/org/apache/spark/deploy/yarn/YarnProxyRedirectFilterSuite.scala b/resource-managers/yarn/src/test/scala/org/apache/spark/deploy/yarn/YarnProxyRedirectFilterSuite.scala
index 54dbe9d50a68..d4058cc67e1b 100644
--- a/resource-managers/yarn/src/test/scala/org/apache/spark/deploy/yarn/YarnProxyRedirectFilterSuite.scala
+++ b/resource-managers/yarn/src/test/scala/org/apache/spark/deploy/yarn/YarnProxyRedirectFilterSuite.scala
@@ -18,9 +18,9 @@
package org.apache.spark.deploy.yarn
import java.io.{PrintWriter, StringWriter}
-import javax.servlet.FilterChain
-import javax.servlet.http.{Cookie, HttpServletRequest, HttpServletResponse}
+import jakarta.servlet.FilterChain
+import jakarta.servlet.http.{Cookie, HttpServletRequest, HttpServletResponse}
import org.mockito.Mockito._
import org.apache.spark.SparkFunSuite
diff --git a/resource-managers/yarn/src/test/scala/org/apache/spark/scheduler/cluster/YarnSchedulerBackendSuite.scala b/resource-managers/yarn/src/test/scala/org/apache/spark/scheduler/cluster/YarnSchedulerBackendSuite.scala
index 7959bb55d7ff..1e0de9d6db31 100644
--- a/resource-managers/yarn/src/test/scala/org/apache/spark/scheduler/cluster/YarnSchedulerBackendSuite.scala
+++ b/resource-managers/yarn/src/test/scala/org/apache/spark/scheduler/cluster/YarnSchedulerBackendSuite.scala
@@ -18,8 +18,8 @@ package org.apache.spark.scheduler.cluster
import java.net.URL
import java.util.concurrent.atomic.AtomicReference
-import javax.servlet.http.{HttpServlet, HttpServletRequest, HttpServletResponse}
+import jakarta.servlet.http.{HttpServlet, HttpServletRequest, HttpServletResponse}
import org.mockito.Mockito.when
import org.scalatestplus.mockito.MockitoSugar
diff --git a/sql/core/src/main/scala/org/apache/spark/sql/execution/ui/AllExecutionsPage.scala b/sql/core/src/main/scala/org/apache/spark/sql/execution/ui/AllExecutionsPage.scala
index c9090cacdb3e..3a25f5770c9d 100644
--- a/sql/core/src/main/scala/org/apache/spark/sql/execution/ui/AllExecutionsPage.scala
+++ b/sql/core/src/main/scala/org/apache/spark/sql/execution/ui/AllExecutionsPage.scala
@@ -19,11 +19,12 @@ package org.apache.spark.sql.execution.ui
import java.net.URLEncoder
import java.nio.charset.StandardCharsets.UTF_8
-import javax.servlet.http.HttpServletRequest
import scala.collection.mutable
import scala.xml.{Node, NodeSeq}
+import jakarta.servlet.http.HttpServletRequest
+
import org.apache.spark.JobExecutionStatus
import org.apache.spark.internal.Logging
import org.apache.spark.internal.config.UI.UI_SQL_GROUP_SUB_EXECUTION_ENABLED
diff --git a/sql/core/src/main/scala/org/apache/spark/sql/execution/ui/ExecutionPage.scala b/sql/core/src/main/scala/org/apache/spark/sql/execution/ui/ExecutionPage.scala
index cbec837762b7..2a6c15df5d1d 100644
--- a/sql/core/src/main/scala/org/apache/spark/sql/execution/ui/ExecutionPage.scala
+++ b/sql/core/src/main/scala/org/apache/spark/sql/execution/ui/ExecutionPage.scala
@@ -17,10 +17,9 @@
package org.apache.spark.sql.execution.ui
-import javax.servlet.http.HttpServletRequest
-
import scala.xml.Node
+import jakarta.servlet.http.HttpServletRequest
import org.json4s.JNull
import org.json4s.JsonAST.{JBool, JString}
import org.json4s.jackson.JsonMethods.parse
diff --git a/sql/core/src/main/scala/org/apache/spark/sql/streaming/ui/StreamingQueryPage.scala b/sql/core/src/main/scala/org/apache/spark/sql/streaming/ui/StreamingQueryPage.scala
index e16a09b38743..8c9993602b8e 100644
--- a/sql/core/src/main/scala/org/apache/spark/sql/streaming/ui/StreamingQueryPage.scala
+++ b/sql/core/src/main/scala/org/apache/spark/sql/streaming/ui/StreamingQueryPage.scala
@@ -19,11 +19,12 @@ package org.apache.spark.sql.streaming.ui
import java.net.URLEncoder
import java.nio.charset.StandardCharsets.UTF_8
-import javax.servlet.http.HttpServletRequest
import scala.collection.mutable
import scala.xml.Node
+import jakarta.servlet.http.HttpServletRequest
+
import org.apache.spark.internal.Logging
import org.apache.spark.sql.streaming.ui.UIUtils._
import org.apache.spark.ui.{PagedDataSource, PagedTable, UIUtils => SparkUIUtils, WebUIPage}
diff --git a/sql/core/src/main/scala/org/apache/spark/sql/streaming/ui/StreamingQueryStatisticsPage.scala b/sql/core/src/main/scala/org/apache/spark/sql/streaming/ui/StreamingQueryStatisticsPage.scala
index ebd7f925de42..4c0195b81947 100644
--- a/sql/core/src/main/scala/org/apache/spark/sql/streaming/ui/StreamingQueryStatisticsPage.scala
+++ b/sql/core/src/main/scala/org/apache/spark/sql/streaming/ui/StreamingQueryStatisticsPage.scala
@@ -20,11 +20,12 @@ package org.apache.spark.sql.streaming.ui
import java.{util => ju}
import java.lang.{Long => JLong}
import java.util.Locale
-import javax.servlet.http.HttpServletRequest
import scala.jdk.CollectionConverters._
import scala.xml.{Node, NodeBuffer, Unparsed}
+import jakarta.servlet.http.HttpServletRequest
+
import org.apache.spark.internal.Logging
import org.apache.spark.sql.execution.streaming.state.StateStoreProvider
import org.apache.spark.sql.internal.SQLConf.STATE_STORE_PROVIDER_CLASS
diff --git a/sql/core/src/main/scala/org/apache/spark/status/api/v1/sql/ApiSqlRootResource.scala b/sql/core/src/main/scala/org/apache/spark/status/api/v1/sql/ApiSqlRootResource.scala
index 747c05b9b062..e8a20d0a97d4 100644
--- a/sql/core/src/main/scala/org/apache/spark/status/api/v1/sql/ApiSqlRootResource.scala
+++ b/sql/core/src/main/scala/org/apache/spark/status/api/v1/sql/ApiSqlRootResource.scala
@@ -17,7 +17,7 @@
package org.apache.spark.status.api.v1.sql
-import javax.ws.rs.{Path, PathParam}
+import jakarta.ws.rs.{Path, PathParam}
import org.apache.spark.status.api.v1.ApiRequestContext
diff --git a/sql/core/src/main/scala/org/apache/spark/status/api/v1/sql/SqlResource.scala b/sql/core/src/main/scala/org/apache/spark/status/api/v1/sql/SqlResource.scala
index fa5bea5f9bbe..eb74d7e7131d 100644
--- a/sql/core/src/main/scala/org/apache/spark/status/api/v1/sql/SqlResource.scala
+++ b/sql/core/src/main/scala/org/apache/spark/status/api/v1/sql/SqlResource.scala
@@ -18,11 +18,12 @@
package org.apache.spark.status.api.v1.sql
import java.util.Date
-import javax.ws.rs._
-import javax.ws.rs.core.MediaType
import scala.util.{Failure, Success, Try}
+import jakarta.ws.rs._
+import jakarta.ws.rs.core.MediaType
+
import org.apache.spark.JobExecutionStatus
import org.apache.spark.sql.execution.ui.{SparkPlanGraph, SparkPlanGraphCluster, SparkPlanGraphNode, SQLAppStatusStore, SQLExecutionUIData}
import org.apache.spark.status.api.v1.{BaseAppResource, NotFoundException}
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/execution/ui/AllExecutionsPageSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/execution/ui/AllExecutionsPageSuite.scala
index 17a5e0daaaff..b98f3c41f78d 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/execution/ui/AllExecutionsPageSuite.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/execution/ui/AllExecutionsPageSuite.scala
@@ -19,10 +19,10 @@ package org.apache.spark.sql.execution.ui
import java.util
import java.util.{Locale, Properties}
-import javax.servlet.http.HttpServletRequest
import scala.xml.Node
+import jakarta.servlet.http.HttpServletRequest
import org.mockito.Mockito.{mock, when, RETURNS_SMART_NULLS}
import org.scalatest.BeforeAndAfter
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/streaming/ui/StreamingQueryHistorySuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/streaming/ui/StreamingQueryHistorySuite.scala
index 160535ea4d04..5ee4d9d80f3f 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/streaming/ui/StreamingQueryHistorySuite.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/streaming/ui/StreamingQueryHistorySuite.scala
@@ -18,8 +18,8 @@
package org.apache.spark.sql.streaming.ui
import java.util.Locale
-import javax.servlet.http.HttpServletRequest
+import jakarta.servlet.http.HttpServletRequest
import org.mockito.Mockito.{mock, when}
import org.scalatest.BeforeAndAfter
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/streaming/ui/StreamingQueryPageSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/streaming/ui/StreamingQueryPageSuite.scala
index 0f390dde2634..530ff0faa2d6 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/streaming/ui/StreamingQueryPageSuite.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/streaming/ui/StreamingQueryPageSuite.scala
@@ -18,10 +18,10 @@
package org.apache.spark.sql.streaming.ui
import java.util.{Locale, UUID}
-import javax.servlet.http.HttpServletRequest
import scala.xml.Node
+import jakarta.servlet.http.HttpServletRequest
import org.mockito.Mockito.{mock, when, RETURNS_SMART_NULLS}
import org.scalatest.BeforeAndAfter
diff --git a/sql/core/src/test/scala/org/apache/spark/status/api/v1/sql/SqlResourceWithActualMetricsSuite.scala b/sql/core/src/test/scala/org/apache/spark/status/api/v1/sql/SqlResourceWithActualMetricsSuite.scala
index fc9e4513d12e..1b7909534a03 100644
--- a/sql/core/src/test/scala/org/apache/spark/status/api/v1/sql/SqlResourceWithActualMetricsSuite.scala
+++ b/sql/core/src/test/scala/org/apache/spark/status/api/v1/sql/SqlResourceWithActualMetricsSuite.scala
@@ -19,8 +19,8 @@ package org.apache.spark.status.api.v1.sql
import java.net.URL
import java.text.SimpleDateFormat
-import javax.servlet.http.HttpServletResponse
+import jakarta.servlet.http.HttpServletResponse
import org.json4s.DefaultFormats
import org.json4s.jackson.JsonMethods
import org.scalatest.time.SpanSugar._
diff --git a/sql/hive-thriftserver/pom.xml b/sql/hive-thriftserver/pom.xml
index 04d77209bb39..d9b16f64970e 100644
--- a/sql/hive-thriftserver/pom.xml
+++ b/sql/hive-thriftserver/pom.xml
@@ -95,6 +95,11 @@
jetty-servlet
provided
+
+ javax.servlet
+ javax.servlet-api
+ provided
+
org.seleniumhq.selenium
diff --git a/sql/hive-thriftserver/src/main/java/org/apache/hive/service/cli/thrift/TServlet.java b/sql/hive-thriftserver/src/main/java/org/apache/hive/service/cli/thrift/TServlet.java
new file mode 100644
index 000000000000..904e7bcf665d
--- /dev/null
+++ b/sql/hive-thriftserver/src/main/java/org/apache/hive/service/cli/thrift/TServlet.java
@@ -0,0 +1,138 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.hive.service.cli.thrift;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Map;
+
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+
+import org.apache.thrift.TException;
+import org.apache.thrift.TProcessor;
+import org.apache.thrift.protocol.TProtocol;
+import org.apache.thrift.protocol.TProtocolFactory;
+import org.apache.thrift.transport.TIOStreamTransport;
+import org.apache.thrift.transport.TTransport;
+
+/**
+ * Servlet implementation class ThriftServer Copied from LIbThrift,
+ * This class serve as a temporary workaround due to the JavaX Servlet namespace change
+ * and should be removed when Hive upgrade to 3.x.x with LibThrift v0.19.0.
+ */
+public class TServlet extends HttpServlet {
+
+ private final TProcessor processor;
+
+ private final TProtocolFactory inProtocolFactory;
+
+ private final TProtocolFactory outProtocolFactory;
+
+ private final Collection> customHeaders;
+
+ /**
+ * @see HttpServlet#HttpServlet()
+ */
+ public TServlet(TProcessor processor, TProtocolFactory inProtocolFactory,
+ TProtocolFactory outProtocolFactory) {
+ super();
+ this.processor = processor;
+ this.inProtocolFactory = inProtocolFactory;
+ this.outProtocolFactory = outProtocolFactory;
+ this.customHeaders = new ArrayList>();
+ }
+
+ /**
+ * @see HttpServlet#HttpServlet()
+ */
+ public TServlet(TProcessor processor, TProtocolFactory protocolFactory) {
+ this(processor, protocolFactory, protocolFactory);
+ }
+
+ /**
+ * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
+ * response)
+ */
+ @Override
+ protected void doPost(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+
+ TTransport inTransport = null;
+ TTransport outTransport = null;
+
+ try {
+ response.setContentType("application/x-thrift");
+
+ if (null != this.customHeaders) {
+ for (Map.Entry header : this.customHeaders) {
+ response.addHeader(header.getKey(), header.getValue());
+ }
+ }
+ InputStream in = request.getInputStream();
+ OutputStream out = response.getOutputStream();
+
+ TTransport transport = new TIOStreamTransport(in, out);
+ inTransport = transport;
+ outTransport = transport;
+
+ TProtocol inProtocol = inProtocolFactory.getProtocol(inTransport);
+ TProtocol outProtocol = outProtocolFactory.getProtocol(outTransport);
+
+ processor.process(inProtocol, outProtocol);
+ out.flush();
+ } catch (TException te) {
+ throw new ServletException(te);
+ }
+ }
+
+ /**
+ * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
+ * response)
+ */
+ protected void doGet(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ doPost(request, response);
+ }
+
+ public void addCustomHeader(final String key, final String value) {
+ this.customHeaders.add(new Map.Entry() {
+ public String getKey() {
+ return key;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public String setValue(String value) {
+ return null;
+ }
+ });
+ }
+
+ public void setCustomHeaders(Collection> headers) {
+ this.customHeaders.clear();
+ this.customHeaders.addAll(headers);
+ }
+}
diff --git a/sql/hive-thriftserver/src/main/java/org/apache/hive/service/cli/thrift/ThriftHttpCLIService.java b/sql/hive-thriftserver/src/main/java/org/apache/hive/service/cli/thrift/ThriftHttpCLIService.java
index 3fe60aa681f9..9592bffcf1bf 100644
--- a/sql/hive-thriftserver/src/main/java/org/apache/hive/service/cli/thrift/ThriftHttpCLIService.java
+++ b/sql/hive-thriftserver/src/main/java/org/apache/hive/service/cli/thrift/ThriftHttpCLIService.java
@@ -37,7 +37,6 @@
import org.apache.thrift.TProcessor;
import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.protocol.TProtocolFactory;
-import org.apache.thrift.server.TServlet;
import org.eclipse.jetty.server.AbstractConnectionFactory;
import org.eclipse.jetty.server.ConnectionFactory;
import org.eclipse.jetty.server.HttpConnectionFactory;
diff --git a/sql/hive-thriftserver/src/main/java/org/apache/hive/service/cli/thrift/ThriftHttpServlet.java b/sql/hive-thriftserver/src/main/java/org/apache/hive/service/cli/thrift/ThriftHttpServlet.java
index 712b1d49eacb..b0bede741cb1 100644
--- a/sql/hive-thriftserver/src/main/java/org/apache/hive/service/cli/thrift/ThriftHttpServlet.java
+++ b/sql/hive-thriftserver/src/main/java/org/apache/hive/service/cli/thrift/ThriftHttpServlet.java
@@ -25,11 +25,11 @@
import java.util.Set;
import java.util.concurrent.TimeUnit;
-import javax.servlet.ServletException;
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.ws.rs.core.NewCookie;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.Cookie;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.ws.rs.core.NewCookie;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.codec.binary.StringUtils;
@@ -49,7 +49,6 @@
import org.apache.hive.service.cli.session.SessionManager;
import org.apache.thrift.TProcessor;
import org.apache.thrift.protocol.TProtocolFactory;
-import org.apache.thrift.server.TServlet;
import org.ietf.jgss.GSSContext;
import org.ietf.jgss.GSSCredential;
import org.ietf.jgss.GSSException;
@@ -550,7 +549,7 @@ private static String getDoAsQueryParam(String queryString) {
if (queryString == null) {
return null;
}
- Map params = javax.servlet.http.HttpUtils.parseQueryString( queryString );
+ Map params = jakarta.servlet.http.HttpUtils.parseQueryString( queryString );
Set keySet = params.keySet();
for (String key: keySet) {
if (key.equalsIgnoreCase("doAs")) {
diff --git a/sql/hive-thriftserver/src/main/scala/org/apache/spark/sql/hive/thriftserver/ui/ThriftServerPage.scala b/sql/hive-thriftserver/src/main/scala/org/apache/spark/sql/hive/thriftserver/ui/ThriftServerPage.scala
index d47a99466a54..442d3cfa6a41 100644
--- a/sql/hive-thriftserver/src/main/scala/org/apache/spark/sql/hive/thriftserver/ui/ThriftServerPage.scala
+++ b/sql/hive-thriftserver/src/main/scala/org/apache/spark/sql/hive/thriftserver/ui/ThriftServerPage.scala
@@ -19,10 +19,11 @@ package org.apache.spark.sql.hive.thriftserver.ui
import java.net.URLEncoder
import java.nio.charset.StandardCharsets.UTF_8
-import javax.servlet.http.HttpServletRequest
import scala.xml.Node
+import jakarta.servlet.http.HttpServletRequest
+
import org.apache.spark.internal.Logging
import org.apache.spark.sql.hive.thriftserver.ui.ToolTips._
import org.apache.spark.ui._
diff --git a/sql/hive-thriftserver/src/main/scala/org/apache/spark/sql/hive/thriftserver/ui/ThriftServerSessionPage.scala b/sql/hive-thriftserver/src/main/scala/org/apache/spark/sql/hive/thriftserver/ui/ThriftServerSessionPage.scala
index 1ccb297b75c2..50a4530de905 100644
--- a/sql/hive-thriftserver/src/main/scala/org/apache/spark/sql/hive/thriftserver/ui/ThriftServerSessionPage.scala
+++ b/sql/hive-thriftserver/src/main/scala/org/apache/spark/sql/hive/thriftserver/ui/ThriftServerSessionPage.scala
@@ -17,10 +17,10 @@
package org.apache.spark.sql.hive.thriftserver.ui
-import javax.servlet.http.HttpServletRequest
-
import scala.xml.Node
+import jakarta.servlet.http.HttpServletRequest
+
import org.apache.spark.internal.Logging
import org.apache.spark.ui._
import org.apache.spark.ui.UIUtils._
diff --git a/sql/hive-thriftserver/src/test/scala/org/apache/spark/sql/hive/thriftserver/ui/ThriftServerPageSuite.scala b/sql/hive-thriftserver/src/test/scala/org/apache/spark/sql/hive/thriftserver/ui/ThriftServerPageSuite.scala
index 1245e6740ebb..7cf17a089ea6 100644
--- a/sql/hive-thriftserver/src/test/scala/org/apache/spark/sql/hive/thriftserver/ui/ThriftServerPageSuite.scala
+++ b/sql/hive-thriftserver/src/test/scala/org/apache/spark/sql/hive/thriftserver/ui/ThriftServerPageSuite.scala
@@ -19,8 +19,8 @@ package org.apache.spark.sql.hive.thriftserver.ui
import java.io.File
import java.util.{Calendar, Locale}
-import javax.servlet.http.HttpServletRequest
+import jakarta.servlet.http.HttpServletRequest
import org.mockito.Mockito.{mock, when, RETURNS_SMART_NULLS}
import org.scalatest.BeforeAndAfter
diff --git a/sql/hive/pom.xml b/sql/hive/pom.xml
index 42618fe5bc22..b9770a211750 100644
--- a/sql/hive/pom.xml
+++ b/sql/hive/pom.xml
@@ -135,6 +135,10 @@
jackson-mapper-asl
+
+ javax.servlet
+ javax.servlet-api
+
commons-codec
commons-codec
diff --git a/streaming/src/main/scala/org/apache/spark/status/api/v1/streaming/ApiStreamingApp.scala b/streaming/src/main/scala/org/apache/spark/status/api/v1/streaming/ApiStreamingApp.scala
index 07d8164e1d2c..53e1a5acebb5 100644
--- a/streaming/src/main/scala/org/apache/spark/status/api/v1/streaming/ApiStreamingApp.scala
+++ b/streaming/src/main/scala/org/apache/spark/status/api/v1/streaming/ApiStreamingApp.scala
@@ -17,7 +17,7 @@
package org.apache.spark.status.api.v1.streaming
-import javax.ws.rs.{Path, PathParam}
+import jakarta.ws.rs.{Path, PathParam}
import org.apache.spark.status.api.v1._
import org.apache.spark.streaming.ui.StreamingJobProgressListener
diff --git a/streaming/src/main/scala/org/apache/spark/status/api/v1/streaming/ApiStreamingRootResource.scala b/streaming/src/main/scala/org/apache/spark/status/api/v1/streaming/ApiStreamingRootResource.scala
index 99d59e4a1447..d1dad1ae2570 100644
--- a/streaming/src/main/scala/org/apache/spark/status/api/v1/streaming/ApiStreamingRootResource.scala
+++ b/streaming/src/main/scala/org/apache/spark/status/api/v1/streaming/ApiStreamingRootResource.scala
@@ -18,8 +18,9 @@
package org.apache.spark.status.api.v1.streaming
import java.util.{Arrays => JArrays, Collections, Date, List => JList}
-import javax.ws.rs.{GET, Path, PathParam, Produces, QueryParam}
-import javax.ws.rs.core.MediaType
+
+import jakarta.ws.rs.{GET, Path, PathParam, Produces, QueryParam}
+import jakarta.ws.rs.core.MediaType
import org.apache.spark.status.api.v1.NotFoundException
import org.apache.spark.streaming.Time
diff --git a/streaming/src/main/scala/org/apache/spark/streaming/ui/AllBatchesTable.scala b/streaming/src/main/scala/org/apache/spark/streaming/ui/AllBatchesTable.scala
index c0eec0e0b0a8..8fda57e5b289 100644
--- a/streaming/src/main/scala/org/apache/spark/streaming/ui/AllBatchesTable.scala
+++ b/streaming/src/main/scala/org/apache/spark/streaming/ui/AllBatchesTable.scala
@@ -19,10 +19,11 @@ package org.apache.spark.streaming.ui
import java.net.URLEncoder
import java.nio.charset.StandardCharsets.UTF_8
-import javax.servlet.http.HttpServletRequest
import scala.xml.Node
+import jakarta.servlet.http.HttpServletRequest
+
import org.apache.spark.ui.{PagedDataSource, PagedTable, UIUtils => SparkUIUtils}
private[ui] class StreamingPagedTable(
diff --git a/streaming/src/main/scala/org/apache/spark/streaming/ui/BatchPage.scala b/streaming/src/main/scala/org/apache/spark/streaming/ui/BatchPage.scala
index 949f47783ed2..40a5f184ab24 100644
--- a/streaming/src/main/scala/org/apache/spark/streaming/ui/BatchPage.scala
+++ b/streaming/src/main/scala/org/apache/spark/streaming/ui/BatchPage.scala
@@ -17,10 +17,9 @@
package org.apache.spark.streaming.ui
-import javax.servlet.http.HttpServletRequest
-
import scala.xml._
+import jakarta.servlet.http.HttpServletRequest
import org.apache.commons.text.StringEscapeUtils
import org.apache.spark.status.api.v1.{JobData, StageData}
diff --git a/streaming/src/main/scala/org/apache/spark/streaming/ui/StreamingPage.scala b/streaming/src/main/scala/org/apache/spark/streaming/ui/StreamingPage.scala
index 43a903ab99f2..3a9b2c10da18 100644
--- a/streaming/src/main/scala/org/apache/spark/streaming/ui/StreamingPage.scala
+++ b/streaming/src/main/scala/org/apache/spark/streaming/ui/StreamingPage.scala
@@ -18,11 +18,12 @@
package org.apache.spark.streaming.ui
import java.util.concurrent.TimeUnit
-import javax.servlet.http.HttpServletRequest
import scala.collection.mutable
import scala.xml.{Node, Unparsed}
+import jakarta.servlet.http.HttpServletRequest
+
import org.apache.spark.internal.Logging
import org.apache.spark.ui.{GraphUIData, JsCollector, UIUtils => SparkUIUtils, WebUIPage}
import org.apache.spark.util.Utils