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

jamesbognar pushed a commit to branch jbUpgradeServletTo6
in repository https://gitbox.apache.org/repos/asf/juneau.git

commit bc2d6ff926080a3af32166bd9b1971b6a47f20d7
Author: JamesBognar <james.bog...@salesforce.com>
AuthorDate: Tue Dec 27 09:27:21 2022 -0500

    Upgrade to Servlet 6.0.0
---
 juneau-build-javadoc.sh                            |   2 +-
 .../org/apache/juneau/config/store/FileStore.java  |   1 -
 .../juneau-examples-rest-springboot.launch         |   4 +-
 .../juneau/examples/rest/springboot/App.java       |   4 +-
 .../juneau/examples/rest/RequestEchoResource.java  |   4 +-
 .../juneau-microservice-ftest/.gitignore           |   6 -
 .../juneau-microservice-ftest/files/jetty.xml      |  80 ----------
 .../juneau-microservice-test.cfg                   |  38 -----
 .../juneau-microservice-test.launch                |  18 ---
 .../juneau-microservice-ftest/logs/.gitignore      |   1 -
 .../juneau-microservice-ftest/logs/empty.txt       |   0
 .../juneau-microservice-ftest/pom.xml              | 112 --------------
 .../src/main/java/empty.txt                        |   0
 .../apache/juneau/rest/test/ConfigResource.java    |  40 -----
 .../org/apache/juneau/rest/test/ConfigTest.java    |  64 --------
 .../juneau/rest/test/LargePojosResource.java       |  43 ------
 .../org/apache/juneau/rest/test/RestTestcase.java  |  91 -----------
 .../java/org/apache/juneau/rest/test/Root.java     |  40 -----
 .../apache/juneau/rest/test/TestMicroservice.java  | 171 ---------------------
 .../org/apache/juneau/rest/test/_TestSuite.java    |  42 -----
 .../rest/test/HtmlPropertiesResource.properties    |  31 ----
 .../juneau/rest/test/ParamsResource.properties     |  15 --
 .../rest/test/ParamsResource_ja_JP.properties      |  15 --
 .../microservice/jetty/JettyMicroservice.java      |   2 +-
 .../microservice/springboot/template/App.java      |   2 +-
 juneau-microservice/pom.xml                        |   1 -
 juneau-open-javadoc.sh                             |   2 +-
 .../apache/juneau/rest/client/ResponseContent.java |   9 ++
 .../apache/juneau/rest/mock/MockHttpSession.java   |  33 +---
 .../apache/juneau/rest/mock/MockRestClient.java    |   2 +-
 .../apache/juneau/rest/mock/MockRestRequest.java   |   4 +-
 .../juneau/rest/mock/MockServletRequest.java       |  29 ++--
 .../juneau/rest/mock/MockServletResponse.java      |  20 +--
 .../rest/OverrideableHttpServletRequest.java       |   2 +-
 .../java/org/apache/juneau/rest/RestChildren.java  |   2 +-
 .../java/org/apache/juneau/rest/RestContext.java   |   6 +-
 .../java/org/apache/juneau/rest/RestOpContext.java |   4 +-
 .../java/org/apache/juneau/rest/RestRequest.java   |   4 +-
 .../java/org/apache/juneau/rest/RestResponse.java  |   4 +-
 .../java/org/apache/juneau/rest/RestSession.java   |   5 +-
 .../apache/juneau/rest/annotation/RestDestroy.java |   2 +-
 .../apache/juneau/rest/annotation/RestEndCall.java |   2 +-
 .../apache/juneau/rest/annotation/RestInit.java    |   2 +-
 .../juneau/rest/annotation/RestPostCall.java       |   4 +-
 .../juneau/rest/annotation/RestPostInit.java       |   2 +-
 .../apache/juneau/rest/annotation/RestPreCall.java |   4 +-
 .../juneau/rest/annotation/RestStartCall.java      |   2 +-
 .../org/apache/juneau/rest/arg/CookieList.java     |   2 +-
 .../juneau/rest/arg/HttpServletRequestArgs.java    |   4 +-
 .../juneau/rest/arg/HttpServletResponseArgs.java   |   2 +-
 .../apache/juneau/rest/arg/HttpSessionArgs.java    |   2 +-
 .../apache/juneau/rest/arg/RestRequestArgs.java    |   4 +-
 .../apache/juneau/rest/arg/RestResponseArgs.java   |   2 +-
 .../apache/juneau/rest/debug/DebugEnablement.java  |   2 +-
 .../juneau/rest/httppart/RequestAttributes.java    |   4 +-
 .../juneau/rest/httppart/RequestContent.java       |   2 +-
 .../juneau/rest/httppart/RequestFormParam.java     |   4 +-
 .../juneau/rest/httppart/RequestFormParams.java    |   2 +-
 .../juneau/rest/logger/BasicTestCallLogger.java    |   2 +-
 .../org/apache/juneau/rest/logger/CallLogger.java  |   5 +-
 .../apache/juneau/rest/logger/CallLoggerRule.java  |  13 +-
 .../juneau/rest/matcher/ClientVersionMatcher.java  |   2 +-
 .../rest/matcher/MultipartFormDataMatcher.java     |   2 +-
 .../apache/juneau/rest/matcher/RestMatcher.java    |   2 +-
 .../juneau/rest/matcher/UrlEncodedFormMatcher.java |   2 +-
 .../juneau/rest/processor/ResponseProcessor.java   |   2 +-
 .../apache/juneau/rest/rrpc/RrpcRestOpContext.java |   2 +-
 .../juneau/rest/servlet/BasicRestObject.java       |   2 +-
 .../juneau/rest/servlet/BasicRestObjectGroup.java  |   2 +-
 .../org/apache/juneau/rest/servlet/RestObject.java |   4 +-
 .../apache/juneau/rest/servlet/RestServlet.java    |   6 +-
 .../rest/swagger/BasicSwaggerProviderSession.java  |   2 +-
 .../rest/util/BoundedServletInputStream.java       |   2 +-
 .../rest/util/CachingHttpServletRequest.java       |   6 +-
 .../rest/util/CachingHttpServletResponse.java      |   6 +-
 .../rest/util/FinishableServletOutputStream.java   |   2 +-
 .../org/apache/juneau/rest/util/RestUtils.java     |   2 +-
 .../juneau/rest/vars/RequestAttributeVar.java      |   2 +-
 juneau-sc/juneau-sc-server/pom.xml                 |   5 +
 .../http/remote/Remote_CommonInterfaces_Test.java  |  36 ++---
 .../org/apache/juneau/rest/RestOp_Params_Test.java |   2 +-
 .../rest/Rest_PredefinedStatusCodes_Test.java      |   2 +-
 .../juneau/rest/annotation/RestInit_Test.java      |   2 +-
 .../rest/annotation/RestOp_Matchers_Test.java      |   2 +-
 .../juneau/rest/annotation/RestPostCall_Test.java  |   2 +-
 .../juneau/rest/annotation/RestPreCall_Test.java   |   2 +-
 .../juneau/rest/annotation/RestStartCall_Test.java |   2 +-
 .../rest/test/client/ThirdPartyProxyResource.java  |   2 +-
 pom.xml                                            |   6 +-
 89 files changed, 142 insertions(+), 990 deletions(-)

diff --git a/juneau-build-javadoc.sh b/juneau-build-javadoc.sh
index 8fb3a0e13..17b12b1b1 100755
--- a/juneau-build-javadoc.sh
+++ b/juneau-build-javadoc.sh
@@ -11,7 +11,7 @@
 # * specific language governing permissions and limitations under the License. 
                                             *
 # 
***************************************************************************************************************************
 
-. juneau-env.sh
+. ./juneau-env.sh
 
 function fail_with_message {
        X_DATE=$(date +'%H:%M:%S') 
diff --git 
a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/FileStore.java
 
b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/FileStore.java
index f3b5af273..168e6968b 100644
--- 
a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/FileStore.java
+++ 
b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/FileStore.java
@@ -577,7 +577,6 @@ public class FileStore extends ConfigStore {
                        dir.toPath().register(watchService, kinds, modifier);
                }
 
-               @SuppressWarnings("restriction")
                private WatchEvent.Modifier lookupModifier(WatcherSensitivity 
s) {
                        try {
                                switch(s) {
diff --git 
a/juneau-examples/juneau-examples-rest-springboot/juneau-examples-rest-springboot.launch
 
b/juneau-examples/juneau-examples-rest-springboot/juneau-examples-rest-springboot.launch
index 35cab1ceb..085c063eb 100644
--- 
a/juneau-examples/juneau-examples-rest-springboot/juneau-examples-rest-springboot.launch
+++ 
b/juneau-examples/juneau-examples-rest-springboot/juneau-examples-rest-springboot.launch
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
+    <booleanAttribute 
key="org.eclipse.debug.core.ATTR_FORCE_SYSTEM_CONSOLE_ENCODING" value="false"/>
     <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
         <listEntry 
value="/juneau-examples-rest-springboot/src/main/java/org/apache/juneau/examples/rest/springboot/App.java"/>
     </listAttribute>
@@ -9,10 +10,11 @@
     <booleanAttribute key="org.eclipse.jdt.debug.ui.CONSIDER_INHERITED_MAIN" 
value="true"/>
     <booleanAttribute key="org.eclipse.jdt.debug.ui.INCLUDE_EXTERNAL_JARS" 
value="true"/>
     <booleanAttribute key="org.eclipse.jdt.launching.ATTR_ATTR_USE_ARGFILE" 
value="false"/>
+    <booleanAttribute 
key="org.eclipse.jdt.launching.ATTR_SHOW_CODEDETAILS_IN_EXCEPTION_MESSAGES" 
value="true"/>
     <booleanAttribute 
key="org.eclipse.jdt.launching.ATTR_USE_CLASSPATH_ONLY_JAR" value="false"/>
     <booleanAttribute 
key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
     <stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" 
value="org.eclipse.m2e.launchconfig.classpathProvider"/>
-    <stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" 
value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11/"/>
+    <stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" 
value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-18/"/>
     <stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" 
value="org.apache.juneau.examples.rest.springboot.App"/>
     <stringAttribute key="org.eclipse.jdt.launching.MODULE_NAME" 
value="juneau-examples-rest-springboot"/>
     <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" 
value="juneau-examples-rest-springboot"/>
diff --git 
a/juneau-examples/juneau-examples-rest-springboot/src/main/java/org/apache/juneau/examples/rest/springboot/App.java
 
b/juneau-examples/juneau-examples-rest-springboot/src/main/java/org/apache/juneau/examples/rest/springboot/App.java
index 4204be8d1..22e95a928 100644
--- 
a/juneau-examples/juneau-examples-rest-springboot/src/main/java/org/apache/juneau/examples/rest/springboot/App.java
+++ 
b/juneau-examples/juneau-examples-rest-springboot/src/main/java/org/apache/juneau/examples/rest/springboot/App.java
@@ -12,8 +12,6 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.examples.rest.springboot;
 
-import javax.servlet.*;
-
 import org.apache.juneau.rest.annotation.*;
 import org.apache.juneau.rest.springboot.*;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -95,7 +93,7 @@ public class App {
         * @return The servlet registration mapped to "/*".
         */
        @Bean
-       public ServletRegistrationBean<Servlet> getRootServlet(RootResources 
rootResources) {
+       public ServletRegistrationBean<jakarta.servlet.Servlet> 
getRootServlet(RootResources rootResources) {
                return new ServletRegistrationBean<>(rootResources, "/*");
        }
 }
diff --git 
a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/RequestEchoResource.java
 
b/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/RequestEchoResource.java
index f222fa29e..12bd0da13 100644
--- 
a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/RequestEchoResource.java
+++ 
b/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/RequestEchoResource.java
@@ -12,8 +12,8 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.examples.rest;
 
-import javax.servlet.*;
-import javax.servlet.http.*;
+import jakarta.servlet.*;
+import jakarta.servlet.http.*;
 
 import org.apache.juneau.annotation.*;
 import org.apache.juneau.html.annotation.*;
diff --git a/juneau-microservice/juneau-microservice-ftest/.gitignore 
b/juneau-microservice/juneau-microservice-ftest/.gitignore
deleted file mode 100644
index 34acf885c..000000000
--- a/juneau-microservice/juneau-microservice-ftest/.gitignore
+++ /dev/null
@@ -1,6 +0,0 @@
-/target/
-**/.DS_Store
-.classpath
-.project
-/.settings/
-/bin/
diff --git a/juneau-microservice/juneau-microservice-ftest/files/jetty.xml 
b/juneau-microservice/juneau-microservice-ftest/files/jetty.xml
deleted file mode 100644
index 30a1fd8e7..000000000
--- a/juneau-microservice/juneau-microservice-ftest/files/jetty.xml
+++ /dev/null
@@ -1,80 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" 
"http://www.eclipse.org/jetty/configure_9_3.dtd";>
-<!--
- 
***************************************************************************************************************************
- * 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.  
                                            *
- 
***************************************************************************************************************************
--->
-
-<Configure id="ExampleServer" class="org.eclipse.jetty.server.Server">
-
-       <Set name="connectors">
-               <Array type="org.eclipse.jetty.server.Connector">
-                       <Item>
-                               <New 
class="org.eclipse.jetty.server.ServerConnector">
-                                       <Arg>
-                                               <Ref refid="ExampleServer" />
-                                       </Arg>
-                                       <Set 
name="port">$S{availablePort,8080}</Set>
-                               </New>
-                       </Item>
-               </Array>
-       </Set>
-
-       <New id="context" 
class="org.eclipse.jetty.servlet.ServletContextHandler">
-               <Set name="contextPath">/</Set>
-               <Set name="sessionHandler">
-                       <New 
class="org.eclipse.jetty.server.session.SessionHandler" />
-               </Set>
-       </New>
-
-       <Set name="handler">
-               <New class="org.eclipse.jetty.server.handler.HandlerCollection">
-                       <Set name="handlers">
-                               <Array type="org.eclipse.jetty.server.Handler">
-                                       <Item>
-                                               <Ref refid="context" />
-                                       </Item>
-                                       <Item>
-                                               <New 
class="org.eclipse.jetty.server.handler.DefaultHandler" />
-                                       </Item>
-                               </Array>
-                       </Set>
-               </New>
-       </Set>
-
-       <Set name="requestLog">
-               <New id="RequestLogImpl" 
class="org.eclipse.jetty.server.CustomRequestLog">
-                       <!-- Param 0: org.eclipse.jetty.server.RequestLogWriter 
-->
-                       <Arg>
-                               <New 
class="org.eclipse.jetty.server.RequestLogWriter">
-                                       <Set name="append">false</Set>
-                                       <Set name="filename"><Property 
name="jetty.logs" default="$C{Logging/logDir,logs}" />/jetty-requests.log</Set>
-                                       <Set 
name="filenameDateFormat">yyyy_MM_dd</Set>
-                                       <Set name="retainDays">90</Set>
-                                       <Set name="timeZone">GMT</Set>
-                               </New>
-                       </Arg>
-                       <!-- Param 1: String -->
-                       <Arg>
-                               <Get 
class="org.eclipse.jetty.server.CustomRequestLog" name="EXTENDED_NCSA_FORMAT" />
-                       </Arg>      
-               </New>
-       </Set>
-
-    <Get name="ThreadPool">
-        <Set name="minThreads" type="int">10</Set>
-        <Set name="maxThreads" type="int">100</Set>
-        <Set name="idleTimeout" type="int">60000</Set>
-        <Set name="detailedDump">true</Set>
-    </Get>
-</Configure>
diff --git 
a/juneau-microservice/juneau-microservice-ftest/juneau-microservice-test.cfg 
b/juneau-microservice/juneau-microservice-ftest/juneau-microservice-test.cfg
deleted file mode 100644
index 3157fdaff..000000000
--- a/juneau-microservice/juneau-microservice-ftest/juneau-microservice-test.cfg
+++ /dev/null
@@ -1,38 +0,0 @@
-# 
***************************************************************************************************************************
-# * 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. 
                                             *
-# 
***************************************************************************************************************************
-
-saveConfigAction = RESTART_SERVER
-
-[Jetty]
-config = files/jetty.xml
-resolveVars = true
-port = 10001,0,0,0
-
-[REST]
-
-staticFiles = htdocs:htdocs
-
-[Test]
-int1 = 1
-int2 = [1,2,3]
-int3 = $C{Test/int1,-1}
-int4 = $C{Test/int3,-1}
-int5 = $C{XXX,-1}
-boolean1 = true
-boolean2 = [true,true]
-testManifestEntry = $MF{Test-Entry}
-
-[SystemProperties]
-org.eclipse.jetty.util.log.class = 
org.apache.juneau.microservice.jetty.JettyLogger
-org.eclipse.jetty.LEVEL = ALL
-derby.stream.error.file = $C{Logging/logDir}/derby-errors.log
\ No newline at end of file
diff --git 
a/juneau-microservice/juneau-microservice-ftest/juneau-microservice-test.launch 
b/juneau-microservice/juneau-microservice-ftest/juneau-microservice-test.launch
deleted file mode 100644
index d42cc7989..000000000
--- 
a/juneau-microservice/juneau-microservice-ftest/juneau-microservice-test.launch
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
-    <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
-        <listEntry value="/juneau-microservice-ftest"/>
-    </listAttribute>
-    <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
-        <listEntry value="4"/>
-    </listAttribute>
-    <booleanAttribute key="org.eclipse.jdt.debug.ui.CONSIDER_INHERITED_MAIN" 
value="true"/>
-    <booleanAttribute key="org.eclipse.jdt.debug.ui.INCLUDE_EXTERNAL_JARS" 
value="true"/>
-    <booleanAttribute 
key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
-    <stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" 
value="org.eclipse.m2e.launchconfig.classpathProvider"/>
-    <stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" 
value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
-    <stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" 
value="org.apache.juneau.microservice.jetty.JettyMicroservice"/>
-    <stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" 
value="juneau-microservice-test.cfg"/>
-    <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" 
value="juneau-microservice-ftest"/>
-    <stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" 
value="org.eclipse.m2e.launchconfig.sourcepathProvider"/>
-</launchConfiguration>
diff --git a/juneau-microservice/juneau-microservice-ftest/logs/.gitignore 
b/juneau-microservice/juneau-microservice-ftest/logs/.gitignore
deleted file mode 100644
index bd317cc13..000000000
--- a/juneau-microservice/juneau-microservice-ftest/logs/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/*log*
diff --git a/juneau-microservice/juneau-microservice-ftest/logs/empty.txt 
b/juneau-microservice/juneau-microservice-ftest/logs/empty.txt
deleted file mode 100644
index e69de29bb..000000000
diff --git a/juneau-microservice/juneau-microservice-ftest/pom.xml 
b/juneau-microservice/juneau-microservice-ftest/pom.xml
deleted file mode 100644
index d1c97de00..000000000
--- a/juneau-microservice/juneau-microservice-ftest/pom.xml
+++ /dev/null
@@ -1,112 +0,0 @@
-<?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 *
- * 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.  
                                            *
- 
***************************************************************************************************************************
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
-
-       <modelVersion>4.0.0</modelVersion>
-
-       <parent>
-               <groupId>org.apache.juneau</groupId>
-               <artifactId>juneau-microservice</artifactId>
-               <version>9.0.0-SNAPSHOT</version>
-       </parent>
-
-       <artifactId>juneau-microservice-ftest</artifactId>
-       <name>juneau/microservice/microservice-ftest</name>
-       <description>Apache Juneau Microservice Function Tests</description>
-
-       <properties>
-               <maven.javadoc.skip>true</maven.javadoc.skip>
-       </properties>
-
-       <dependencies>
-               <dependency>
-                       <groupId>org.apache.juneau</groupId>
-                       <artifactId>juneau-examples-rest</artifactId>
-                       <version>${project.version}</version>
-               </dependency>
-               <dependency>
-                       <groupId>org.apache.juneau</groupId>
-                       <artifactId>juneau-rest-server</artifactId>
-                       <version>${project.version}</version>
-               </dependency>
-               <dependency>
-                       <groupId>org.apache.juneau</groupId>
-                       <artifactId>juneau-rest-mock</artifactId>
-                       <version>${project.version}</version>
-               </dependency>
-               <dependency>
-                       <groupId>junit</groupId>
-                       <artifactId>junit</artifactId>
-                       <scope>compile</scope>
-               </dependency>
-               <dependency>
-                       <groupId>javax.ws.rs</groupId>
-                       <artifactId>jsr311-api</artifactId>
-               </dependency>
-               <dependency>
-                       <groupId>jakarta.servlet</groupId>
-                       <artifactId>jakarta.servlet-api</artifactId>
-               </dependency>
-               <dependency>
-                       <groupId>javax.activation</groupId>
-                       <artifactId>javax.activation-api</artifactId>
-               </dependency>
-               <dependency>
-                       <groupId>com.sun.activation</groupId>
-                       <artifactId>javax.activation</artifactId>
-               </dependency>
-               <dependency>
-                       <groupId>org.apache.juneau</groupId>
-                       <artifactId>juneau-utest-utils</artifactId>
-                       <version>${project.version}</version>
-               </dependency>
-       </dependencies>
-       
-       <build>
-               <plugins>
-                       <plugin>
-                               <groupId>org.apache.maven.plugins</groupId>
-                               <artifactId>maven-surefire-plugin</artifactId>
-                               <configuration>
-                                       <includes>
-                                               <include>
-                                                       **/_TestSuite.java
-                                               </include>
-                                       </includes>
-                               </configuration>
-                       </plugin>
-                       <plugin>
-                               <groupId>org.jacoco</groupId>
-                               <artifactId>jacoco-maven-plugin</artifactId>
-                               <executions>
-                                       <execution>
-                                               <id>default-prepare-agent</id>
-                                               <goals>
-                                                       
<goal>prepare-agent</goal>
-                                               </goals>
-                                       </execution>
-                                       <execution>
-                                               <id>default-report</id>
-                                               <phase>prepare-package</phase>
-                                               <goals>
-                                                       <goal>report</goal>
-                                               </goals>
-                                       </execution>
-                               </executions>
-                       </plugin>
-               </plugins>
-       </build>
-</project>
diff --git 
a/juneau-microservice/juneau-microservice-ftest/src/main/java/empty.txt 
b/juneau-microservice/juneau-microservice-ftest/src/main/java/empty.txt
deleted file mode 100644
index e69de29bb..000000000
diff --git 
a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/ConfigResource.java
 
b/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/ConfigResource.java
deleted file mode 100644
index 57de47845..000000000
--- 
a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/ConfigResource.java
+++ /dev/null
@@ -1,40 +0,0 @@
-// 
***************************************************************************************************************************
-// * 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.juneau.rest.test;
-
-import static org.apache.juneau.http.HttpMethod.*;
-
-import org.apache.juneau.http.annotation.*;
-import org.apache.juneau.rest.*;
-import org.apache.juneau.rest.annotation.*;
-import org.apache.juneau.rest.servlet.*;
-
-/**
- * JUnit automated testcase resource.
- */
-@Rest(
-       path="/testConfig"
-)
-@SuppressWarnings({"serial"})
-public class ConfigResource extends BasicRestServlet {
-
-       @RestOp(method=GET, path="/")
-       public Object test1(RestRequest req) {
-               return req.getConfig().toMap();
-       }
-
-       @RestOp(method=GET, path="/{key}/{class}")
-       public Object test2(RestRequest req, @Path("key") String key, 
@Path("class") Class<?> c) throws Exception {
-               return req.getConfig().get(key).as(c).orElse(null);
-       }
-}
diff --git 
a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/ConfigTest.java
 
b/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/ConfigTest.java
deleted file mode 100644
index 6f5e3a120..000000000
--- 
a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/ConfigTest.java
+++ /dev/null
@@ -1,64 +0,0 @@
-// 
***************************************************************************************************************************
-// * 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.juneau.rest.test;
-
-import static org.apache.juneau.assertions.Assertions.*;
-import static org.apache.juneau.common.internal.StringUtils.*;
-import static org.junit.Assert.*;
-import static org.junit.runners.MethodSorters.*;
-
-import java.util.*;
-
-import org.apache.juneau.collections.*;
-import org.apache.juneau.config.*;
-import org.apache.juneau.rest.client.*;
-import org.junit.*;
-
-@FixMethodOrder(NAME_ASCENDING)
-public class ConfigTest extends RestTestcase {
-
-       private static String URL = "/testConfig";
-
-       
//====================================================================================================
-       // Basic tests
-       
//====================================================================================================
-       @Test
-       public void test() throws Exception {
-               RestClient c = 
TestMicroservice.client().accept("text/json5").build();
-
-               Map<String,Map<String,Object>> m = 
c.get(URL).run().getContent().as(Map.class, String.class, JsonMap.class);
-
-               Config cf = Config.create().memStore().build().load(m);
-
-               
assertObject(cf.getSection("Test").asMap().get()).asJson().is("{int1:'1',int2:'[1,2,3]',int3:'1',int4:'1',int5:'-1',boolean1:'true',boolean2:'[true,true]',testManifestEntry:'test-value'}");
-
-               assertEquals("'1'", c.get(URL + "/Test%2Fint1/" + 
getName(String.class)).run().getContent().asString());
-               assertEquals("'[1,2,3]'", c.get(URL + "/Test%2Fint2/" + 
getName(String.class)).run().getContent().asString());
-               assertEquals("['1','2','3']", c.get(URL + "/Test%2Fint2/" + 
getName(String[].class)).run().getContent().asString());
-               assertEquals("[1,2,3]", c.get(URL + "/Test%2Fint2/" + 
getName(int[].class)).run().getContent().asString());
-               assertEquals("[1,2,3]", c.get(URL + "/Test%2Fint2/" + 
getName(Integer[].class)).run().getContent().asString());
-               assertEquals("1", c.get(URL + "/Test%2Fint3/" + 
getName(Integer.class)).run().getContent().asString());
-               assertEquals("1", c.get(URL + "/Test%2Fint4/" + 
getName(Integer.class)).run().getContent().asString());
-               assertEquals("-1", c.get(URL + "/Test%2Fint5/" + 
getName(Integer.class)).run().getContent().asString());
-               assertEquals("true", c.get(URL + "/Test%2Fboolean1/" + 
getName(Boolean.class)).run().getContent().asString());
-               assertEquals("[true,true]", c.get(URL + "/Test%2Fboolean2/" + 
getName(Boolean[].class)).run().getContent().asString());
-               assertEquals("'test-value'", c.get(URL + 
"/Test%2FtestManifestEntry/" + 
getName(String.class)).run().getContent().asString());
-
-               cf.close();
-               c.closeQuietly();
-       }
-
-       private String getName(Class<?> c) {
-               return urlEncode(c.getName());
-       }
-}
diff --git 
a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/LargePojosResource.java
 
b/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/LargePojosResource.java
deleted file mode 100644
index ee9edf581..000000000
--- 
a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/LargePojosResource.java
+++ /dev/null
@@ -1,43 +0,0 @@
-// 
***************************************************************************************************************************
-// * 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.juneau.rest.test;
-
-import static org.apache.juneau.http.HttpMethod.*;
-
-import org.apache.juneau.http.annotation.*;
-import org.apache.juneau.rest.annotation.*;
-import org.apache.juneau.rest.servlet.*;
-import org.apache.juneau.testutils.pojos.*;
-
-/**
- * JUnit automated testcase resource.
- */
-@Rest(
-       path="/testLargePojos"
-)
-public class LargePojosResource extends BasicRestServlet {
-       private static final long serialVersionUID = 1L;
-
-       
//====================================================================================================
-       // Test how long it takes to serialize/parse various content types.
-       
//====================================================================================================
-       @RestOp(method=GET, path="/")
-       public LargePojo testGet() {
-               return LargePojo.get();
-       }
-
-       @RestOp(method=PUT, path="/")
-       public String testPut(@Content LargePojo in) {
-               return "ok";
-       }
-}
diff --git 
a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/RestTestcase.java
 
b/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/RestTestcase.java
deleted file mode 100644
index d5827b546..000000000
--- 
a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/RestTestcase.java
+++ /dev/null
@@ -1,91 +0,0 @@
-// 
***************************************************************************************************************************
-// * 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.juneau.rest.test;
-
-import static org.apache.juneau.internal.CollectionUtils.*;
-
-import java.io.*;
-import java.util.*;
-
-import org.apache.juneau.parser.*;
-import org.apache.juneau.rest.client.*;
-import org.apache.juneau.serializer.*;
-import org.junit.*;
-
-/**
- * Superclass of REST testcases that start up the REST test microservice 
before running the tests locally.
- *
- * @author James Bognar (james.bog...@salesforce.com)
- */
-public class RestTestcase {
-
-       private static boolean microserviceStarted;
-
-       // Reusable RestClients keyed by label that live for the duration of a 
testcase class.
-       private static Map<String,RestClient> clients = map();
-
-       // Reusable object cache that lives for the duration of a testcase 
class.
-       private static Map<String,Object> cache = map();
-
-       @BeforeClass
-       public static void setUp() {
-               microserviceStarted = TestMicroservice.startMicroservice();
-       }
-
-       /**
-        * Creates a REST client against the test microservice using the 
specified serializer and parser.
-        * Client is automatically closed on tear-down.
-        */
-       protected RestClient getClient(String label, Serializer serializer, 
Parser parser) {
-               if (! clients.containsKey(label))
-                       clients.put(label, TestMicroservice.client(serializer, 
parser).build());
-               return clients.get(label);
-       }
-
-       /**
-        * Same as {@link #getClient(String, Serializer, Parser)} but sets the 
debug flag on the client.
-        */
-       protected RestClient getDebugClient(String label, Serializer 
serializer, Parser parser) {
-               if (! clients.containsKey(label))
-                       clients.put(label, TestMicroservice.client(serializer, 
parser).debug().build());
-               return clients.get(label);
-       }
-
-       protected void addClientToLifecycle(RestClient c) {
-               clients.put(UUID.randomUUID().toString(), c);
-       }
-
-       @SuppressWarnings("unchecked")
-       protected <T> T getCached(String label, Class<T> c) {
-               return (T)cache.get(label);
-       }
-
-       protected void cache(String label, Object o) {
-               cache.put(label, o);
-       }
-
-       @AfterClass
-       public static void tearDown() {
-               if (microserviceStarted)
-                       TestMicroservice.stopMicroservice();
-               for (RestClient rc : clients.values()) {
-                       try {
-                               rc.close();
-                       } catch (IOException e) {
-                               e.printStackTrace();
-                       }
-               }
-               clients.clear();
-               cache.clear();
-       }
-}
diff --git 
a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/Root.java
 
b/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/Root.java
deleted file mode 100644
index 5f1716666..000000000
--- 
a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/Root.java
+++ /dev/null
@@ -1,40 +0,0 @@
-// 
***************************************************************************************************************************
-// * 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.juneau.rest.test;
-
-import static org.apache.juneau.http.HttpMethod.*;
-
-import org.apache.juneau.microservice.jetty.resources.*;
-import org.apache.juneau.microservice.resources.*;
-import org.apache.juneau.rest.*;
-import org.apache.juneau.rest.annotation.*;
-import org.apache.juneau.rest.beans.*;
-import org.apache.juneau.rest.servlet.*;
-
-@Rest(
-       path="/*",
-       children={
-               DebugResource.class,
-               ConfigResource.class,
-               LargePojosResource.class,
-               ShutdownResource.class,
-       }
-)
-public class Root extends BasicRestServlet {
-       private static final long serialVersionUID = 1L;
-
-       @RestOp(method=GET, path="/")
-       public ChildResourceDescriptions doGet(RestRequest req) throws 
Exception {
-               return ChildResourceDescriptions.of(req);
-       }
-}
\ No newline at end of file
diff --git 
a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/TestMicroservice.java
 
b/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/TestMicroservice.java
deleted file mode 100644
index 59730d5b4..000000000
--- 
a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/TestMicroservice.java
+++ /dev/null
@@ -1,171 +0,0 @@
-// 
***************************************************************************************************************************
-// * 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.juneau.rest.test;
-
-import static org.apache.juneau.common.internal.ThrowableUtils.*;
-
-import java.io.*;
-import java.net.*;
-import java.util.*;
-
-import org.apache.http.*;
-import org.apache.http.client.*;
-import org.apache.http.impl.client.*;
-import org.apache.http.protocol.*;
-import org.apache.juneau.microservice.jetty.*;
-import org.apache.juneau.parser.*;
-import org.apache.juneau.rest.client.*;
-import org.apache.juneau.serializer.*;
-
-/**
- * Utility class for starting up the tests microservice.
- * @author james.bognar
- */
-public class TestMicroservice {
-
-       static JettyMicroservice microservice;
-       static URI microserviceURI;
-
-       // Reusable HTTP clients that get created and shut down with the 
microservice.
-       public static RestClient DEFAULT_CLIENT, DEFAULT_CLIENT_DEBUG;
-       public static RestClient DEFAULT_CLIENT_PLAINTEXT;
-
-       /**
-        * Starts the microservice.
-        * @return <jk>true</jk> if the service started, <jk>false</jk> if it's 
already started.
-        * If this returns <jk>false</jk> then don't call stopMicroservice()!.
-        */
-       public static boolean startMicroservice() {
-               if (microservice != null)
-                       return false;
-               try {
-                       Locale.setDefault(Locale.US);
-                       microservice = JettyMicroservice
-                               .create()
-                               .configName("juneau-microservice-test.cfg")
-                               .manifest(
-                                       new StringReader("Test-Entry: 
test-value\n")
-                               )
-                               .servlet(Root.class)
-                               .build()
-                       ;
-                       microserviceURI = microservice.start().getURI();
-                       DEFAULT_CLIENT = client().json().build();
-                       DEFAULT_CLIENT_DEBUG = client().json().debug().build();
-                       DEFAULT_CLIENT_PLAINTEXT = client().plainText().build();
-                       return true;
-               } catch (Throwable e) {
-                       e.printStackTrace(); // NOT DEBUG
-                       return false;
-               }
-       }
-
-       /**
-        * Returns the URI of the microservice.
-        * @return The URI of the microservice.
-        */
-       public static URI getURI() {
-               if (microservice == null)
-                       startMicroservice();
-               return microserviceURI;
-       }
-
-       /**
-        * Stops the microservice.
-        */
-       public static void stopMicroservice() {
-               try {
-                       microservice.stop();
-                       microservice = null;
-                       DEFAULT_CLIENT.closeQuietly();
-                       DEFAULT_CLIENT_PLAINTEXT.closeQuietly();
-
-               } catch (Exception e) {
-                       System.err.println(e); // NOT DEBUG
-               }
-       }
-
-       /**
-        * Create a new HTTP client.
-        */
-       public static RestClient.Builder client() {
-               try {
-                       final RequestLine[] currentRequest = new RequestLine[1];
-                       final StatusLine[] currentResponse = new StatusLine[1];
-                       RestClient.Builder rc = RestClient.create()
-                               .json()
-                               .rootUrl(microserviceURI)
-                               .noTrace();
-                       rc.retryHandler(
-                                       new HttpRequestRetryHandler() {
-                                               @Override
-                                               public boolean 
retryRequest(IOException exception, int executionCount, HttpContext context) {
-                                                       System.err.println("*** 
ERROR ***");  // NOT DEBUG
-                                                       
TestMicroservice.jettyDump(currentRequest[0], currentResponse[0]);
-                                                       return (executionCount 
< 3);
-                                               }
-                                       }
-                               )
-                               .addInterceptorFirst(new 
org.apache.http.HttpRequestInterceptor() {
-                                       @Override
-                                       public void process(HttpRequest r, 
HttpContext c) throws HttpException, IOException {
-                                               currentRequest[0] = 
r.getRequestLine();
-                                       }
-                               })
-                               .addInterceptorFirst(new 
org.apache.http.HttpResponseInterceptor() {
-                                       @Override
-                                       public void process(HttpResponse r, 
HttpContext c) throws HttpException, IOException {
-                                               currentResponse[0] = 
r.getStatusLine();
-                                       }
-                               });
-                       return rc;
-               } catch (Exception e) {
-                       throw asRuntimeException(e);
-               }
-       }
-
-       /**
-        * Create a new HTTP client using the specified serializer and parser.
-        */
-       public static RestClient.Builder client(Serializer s, Parser p) {
-               return client().serializer(s).parser(p);
-       }
-
-       /**
-        * Create a new HTTP client using the specified serializer and parser.
-        */
-       public static RestClient.Builder client(Class<? extends Serializer> s, 
Class<? extends Parser> p) {
-               return client().serializer(s).parser(p);
-       }
-
-       public static CloseableHttpClient createHttpClient() {
-               try {
-                       return HttpClients.custom().setRedirectStrategy(new 
LaxRedirectStrategy()).build();
-               } catch (Exception e) {
-                       throw asRuntimeException(e);
-               }
-       }
-
-       private static int dumpCount = 0;
-
-       public static void jettyDump(RequestLine rl, StatusLine sl) {
-               try (FileWriter fw = new 
FileWriter(microservice.getConfig().get("Logging/logDir").orElse(".") + 
"/jetty-thread-dump-"+(dumpCount++)+".log")) {
-                       String dump = microservice.getServer().dump();
-                       fw.append("RequestLine = [" + rl + "]\n");
-                       fw.append("StatusLine = [" + sl + "]\n");
-                       fw.append(dump);
-               } catch (Exception e) {
-                       e.printStackTrace();
-               }
-       }
-}
diff --git 
a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/_TestSuite.java
 
b/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/_TestSuite.java
deleted file mode 100644
index a58d74bc8..000000000
--- 
a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/_TestSuite.java
+++ /dev/null
@@ -1,42 +0,0 @@
-// 
***************************************************************************************************************************
-// * 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.juneau.rest.test;
-
-import org.junit.*;
-import org.junit.runner.*;
-import org.junit.runners.*;
-import org.junit.runners.Suite.*;
-
-/**
- * Runs all the testcases in this project.
- * Starts a REST service running org.apache.juneau.rest.testutils.Root on port 
10001.
- * Stops the REST service after running the tests.
- */
-@RunWith(Suite.class)
-@SuiteClasses({
-       ConfigTest.class
-})
-public class _TestSuite {
-
-       @BeforeClass
-       public static void setUp() {
-               double version = 
Double.parseDouble(System.getProperty("java.specification.version"));
-               Assume.assumeFalse("Java version " + version + " detected.  
Tests will be skipped.", version < 1.8);
-               TestMicroservice.startMicroservice();
-       }
-
-       @AfterClass
-       public static void tearDown() {
-               TestMicroservice.stopMicroservice();
-       }
-}
diff --git 
a/juneau-microservice/juneau-microservice-ftest/src/test/resources/org/apache/juneau/rest/test/HtmlPropertiesResource.properties
 
b/juneau-microservice/juneau-microservice-ftest/src/test/resources/org/apache/juneau/rest/test/HtmlPropertiesResource.properties
deleted file mode 100644
index a35bfe71c..000000000
--- 
a/juneau-microservice/juneau-microservice-ftest/src/test/resources/org/apache/juneau/rest/test/HtmlPropertiesResource.properties
+++ /dev/null
@@ -1,31 +0,0 @@
-# 
***************************************************************************************************************************
-# * 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. 
                                             *
-# *                                                                            
                                             *
-# 
***************************************************************************************************************************
-
-LocalizedExplicit.pageTitle = LocalizedExplicit.nls.pageTitle
-LocalizedExplicit.pageText = LocalizedExplicit.nls.pageText
-
-LocalizedExplicit.test2.pageTitle = LocalizedExplicit.test2.nls.pageTitle
-LocalizedExplicit.test2.pageText = LocalizedExplicit.test2.nls.pageText
-
-LocalizedExplicit.test3.pageTitle = LocalizedExplicit.test3.nls.pageTitle
-LocalizedExplicit.test3.pageText = LocalizedExplicit.test3.nls.pageText
-
-LocalizedExplicit.test4.pageTitle = LocalizedExplicit.test4.nls.pageTitle
-LocalizedExplicit.test4.pageText = LocalizedExplicit.test4.nls.pageText
-
-LocalizedImplicit.pageTitle = LocalizedImplicit.nls.pageTitle
-LocalizedImplicit.pageText = LocalizedImplicit.nls.pageText
-
-LocalizedImplicit.test2.pageTitle = LocalizedImplicit.test2.nls.pageTitle
-LocalizedImplicit.test2.pageText = LocalizedImplicit.test2.nls.pageText
diff --git 
a/juneau-microservice/juneau-microservice-ftest/src/test/resources/org/apache/juneau/rest/test/ParamsResource.properties
 
b/juneau-microservice/juneau-microservice-ftest/src/test/resources/org/apache/juneau/rest/test/ParamsResource.properties
deleted file mode 100644
index 73add6193..000000000
--- 
a/juneau-microservice/juneau-microservice-ftest/src/test/resources/org/apache/juneau/rest/test/ParamsResource.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# 
***************************************************************************************************************************
-# * 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. 
                                             *
-# *                                                                            
                                             *
-# 
***************************************************************************************************************************
-
-foo = bar
\ No newline at end of file
diff --git 
a/juneau-microservice/juneau-microservice-ftest/src/test/resources/org/apache/juneau/rest/test/ParamsResource_ja_JP.properties
 
b/juneau-microservice/juneau-microservice-ftest/src/test/resources/org/apache/juneau/rest/test/ParamsResource_ja_JP.properties
deleted file mode 100644
index 336741ed9..000000000
--- 
a/juneau-microservice/juneau-microservice-ftest/src/test/resources/org/apache/juneau/rest/test/ParamsResource_ja_JP.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# 
***************************************************************************************************************************
-# * 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. 
                                             *
-# *                                                                            
                                             *
-# 
***************************************************************************************************************************
-
-foo = baz
\ No newline at end of file
diff --git 
a/juneau-microservice/juneau-microservice-jetty/src/main/java/org/apache/juneau/microservice/jetty/JettyMicroservice.java
 
b/juneau-microservice/juneau-microservice-jetty/src/main/java/org/apache/juneau/microservice/jetty/JettyMicroservice.java
index 7103e8726..4fe8b8e91 100644
--- 
a/juneau-microservice/juneau-microservice-jetty/src/main/java/org/apache/juneau/microservice/jetty/JettyMicroservice.java
+++ 
b/juneau-microservice/juneau-microservice-jetty/src/main/java/org/apache/juneau/microservice/jetty/JettyMicroservice.java
@@ -24,7 +24,7 @@ import java.net.*;
 import java.util.*;
 import java.util.logging.*;
 
-import javax.servlet.*;
+import jakarta.servlet.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.collections.*;
diff --git 
a/juneau-microservice/juneau-my-springboot-microservice/src/main/java/org/apache/juneau/microservice/springboot/template/App.java
 
b/juneau-microservice/juneau-my-springboot-microservice/src/main/java/org/apache/juneau/microservice/springboot/template/App.java
index 032bfd93d..c9c5b7c0f 100644
--- 
a/juneau-microservice/juneau-my-springboot-microservice/src/main/java/org/apache/juneau/microservice/springboot/template/App.java
+++ 
b/juneau-microservice/juneau-my-springboot-microservice/src/main/java/org/apache/juneau/microservice/springboot/template/App.java
@@ -12,7 +12,7 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.microservice.springboot.template;
 
-import javax.servlet.*;
+import jakarta.servlet.*;
 
 import org.apache.juneau.rest.annotation.*;
 import org.apache.juneau.rest.springboot.*;
diff --git a/juneau-microservice/pom.xml b/juneau-microservice/pom.xml
index deeb7f90a..fa641ff4a 100644
--- a/juneau-microservice/pom.xml
+++ b/juneau-microservice/pom.xml
@@ -32,7 +32,6 @@
                <module>juneau-microservice-core</module>
                <module>juneau-microservice-jetty</module>
                <module>juneau-my-jetty-microservice</module>
-               <module>juneau-microservice-ftest</module>
                <module>juneau-my-springboot-microservice</module>
        </modules>
 
diff --git a/juneau-open-javadoc.sh b/juneau-open-javadoc.sh
index 385980bd7..17ee33f58 100755
--- a/juneau-open-javadoc.sh
+++ b/juneau-open-javadoc.sh
@@ -11,7 +11,7 @@
 # * specific language governing permissions and limitations under the License. 
                                             *
 # 
***************************************************************************************************************************
 
-. juneau-env.sh
+. ./juneau-env.sh
 
 open target/site/apidocs/overview-summary.html
 
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseContent.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseContent.java
index 18255c164..567ac09dc 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseContent.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseContent.java
@@ -1375,4 +1375,13 @@ public class ResponseContent implements HttpEntity {
        private <T> ClassMeta<T> getClassMeta(Type type, Type...args) {
                return getBeanContext().getClassMeta(type, args);
        }
+
+       @Override
+       public String toString() {
+               try {
+                       return asString();
+               } catch (RestCallException e) {
+                       return e.getLocalizedMessage();
+               }
+       }
 }
diff --git 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockHttpSession.java
 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockHttpSession.java
index be2237818..7691d2772 100644
--- 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockHttpSession.java
+++ 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockHttpSession.java
@@ -16,8 +16,8 @@ import static org.apache.juneau.internal.CollectionUtils.*;
 
 import java.util.*;
 
-import javax.servlet.*;
-import javax.servlet.http.*;
+import jakarta.servlet.*;
+import jakarta.servlet.http.*;
 
 /**
  * An implementation of {@link HttpSession} for mocking purposes.
@@ -32,7 +32,7 @@ import javax.servlet.http.*;
  */
 public class MockHttpSession implements HttpSession {
 
-       private Map<String,Object> attributes = map(), values = map();
+       private Map<String,Object> attributes = map();
 
        private long creationTime, lastAccessedTime;
        private int maxInactiveInterval;
@@ -171,52 +171,25 @@ public class MockHttpSession implements HttpSession {
                return maxInactiveInterval;
        }
 
-       @SuppressWarnings("deprecation")
-       @Override /* HttpSession */
-       public HttpSessionContext getSessionContext() {
-               return null;
-       }
-
        @Override /* HttpSession */
        public Object getAttribute(String name) {
                return attributes.get(name);
        }
 
-       @Override /* HttpSession */
-       public Object getValue(String name) {
-               return values.get(name);
-       }
-
        @Override /* HttpSession */
        public Enumeration<String> getAttributeNames() {
                return Collections.enumeration(attributes.keySet());
        }
 
-       @Override /* HttpSession */
-       public String[] getValueNames() {
-               return values.keySet().toArray(new String[0]);
-       }
-
        @Override /* HttpSession */
        public void setAttribute(String name, Object value) {
                attributes.put(name, value);
        }
-
-       @Override /* HttpSession */
-       public void putValue(String name, Object value) {
-               values.put(name, value);
-       }
-
        @Override /* HttpSession */
        public void removeAttribute(String name) {
                attributes.remove(name);
        }
 
-       @Override /* HttpSession */
-       public void removeValue(String name) {
-               values.remove(name);
-       }
-
        @Override /* HttpSession */
        public void invalidate() {
        }
diff --git 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockRestClient.java
 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockRestClient.java
index c167bd7a6..454dcc81f 100644
--- 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockRestClient.java
+++ 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockRestClient.java
@@ -29,7 +29,7 @@ import java.util.logging.*;
 import java.util.zip.*;
 
 import javax.net.ssl.*;
-import javax.servlet.http.*;
+import jakarta.servlet.http.*;
 
 import org.apache.http.*;
 import org.apache.http.auth.*;
diff --git 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockRestRequest.java
 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockRestRequest.java
index f75233c5f..380fe3573 100644
--- 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockRestRequest.java
+++ 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockRestRequest.java
@@ -19,8 +19,8 @@ import java.security.*;
 import java.util.*;
 import java.util.function.*;
 
-import javax.servlet.*;
-import javax.servlet.http.*;
+import jakarta.servlet.*;
+import jakarta.servlet.http.*;
 
 import org.apache.http.*;
 import org.apache.http.client.config.*;
diff --git 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockServletRequest.java
 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockServletRequest.java
index 2e81b5f15..e9e5715e4 100644
--- 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockServletRequest.java
+++ 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockServletRequest.java
@@ -23,8 +23,8 @@ import java.io.*;
 import java.security.*;
 import java.util.*;
 
-import javax.servlet.*;
-import javax.servlet.http.*;
+import jakarta.servlet.*;
+import jakarta.servlet.http.*;
 
 import org.apache.http.*;
 import org.apache.juneau.common.internal.*;
@@ -629,11 +629,6 @@ public class MockServletRequest implements 
HttpServletRequest {
                return requestDispatcher.get(path);
        }
 
-       @Override /* HttpServletRequest */
-       public String getRealPath(String path) {
-               return path;
-       }
-
        @Override /* HttpServletRequest */
        public int getRemotePort() {
                return remotePort;
@@ -845,11 +840,6 @@ public class MockServletRequest implements 
HttpServletRequest {
                return false;
        }
 
-       @Override /* HttpServletRequest */
-       public boolean isRequestedSessionIdFromUrl() {
-               return false;
-       }
-
        @Override /* HttpServletRequest */
        public boolean authenticate(HttpServletResponse response) throws 
IOException, ServletException {
                return false;
@@ -1050,4 +1040,19 @@ public class MockServletRequest implements 
HttpServletRequest {
 
                return this;
        }
+
+       @Override
+       public String getRequestId() {
+               return null;
+       }
+
+       @Override
+       public String getProtocolRequestId() {
+               return null;
+       }
+
+       @Override
+       public ServletConnection getServletConnection() {
+               return null;
+       }
 }
diff --git 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockServletResponse.java
 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockServletResponse.java
index e65eb8ddb..e7f57a116 100644
--- 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockServletResponse.java
+++ 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockServletResponse.java
@@ -17,8 +17,8 @@ import static org.apache.juneau.internal.CollectionUtils.*;
 import java.io.*;
 import java.util.*;
 
-import javax.servlet.*;
-import javax.servlet.http.*;
+import jakarta.servlet.*;
+import jakarta.servlet.http.*;
 
 import org.apache.juneau.internal.*;
 import org.apache.juneau.rest.util.*;
@@ -168,16 +168,6 @@ public class MockServletResponse implements 
HttpServletResponse {
                return null;
        }
 
-       @Override /* HttpServletResponse */
-       public String encodeUrl(String url) {
-               return null;
-       }
-
-       @Override /* HttpServletResponse */
-       public String encodeRedirectUrl(String url) {
-               return null;
-       }
-
        @Override /* HttpServletResponse */
        public void sendError(int sc, String msg) throws IOException {
                this.sc = sc;
@@ -253,12 +243,6 @@ public class MockServletResponse implements 
HttpServletResponse {
                return this;
        }
 
-       @Override /* HttpServletResponse */
-       public void setStatus(int sc, String sm) {
-               this.sc = sc;
-               this.msg = sm;
-       }
-
        @Override /* HttpServletResponse */
        public int getStatus() {
                return sc;
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/OverrideableHttpServletRequest.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/OverrideableHttpServletRequest.java
index 82d2b93a7..5da69c425 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/OverrideableHttpServletRequest.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/OverrideableHttpServletRequest.java
@@ -14,7 +14,7 @@ package org.apache.juneau.rest;
 
 import static org.apache.juneau.rest.util.RestUtils.*;
 
-import javax.servlet.http.*;
+import jakarta.servlet.http.*;
 
 /**
  * A wrapper class that allows you to override basic fields.
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestChildren.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestChildren.java
index 9faf9320e..2b7ae3ab7 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestChildren.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestChildren.java
@@ -16,7 +16,7 @@ import static org.apache.juneau.internal.CollectionUtils.*;
 
 import java.util.*;
 
-import javax.servlet.*;
+import jakarta.servlet.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.cp.*;
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
index da7e66eff..3103360c2 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
@@ -12,7 +12,7 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.rest;
 
-import static javax.servlet.http.HttpServletResponse.*;
+import static jakarta.servlet.http.HttpServletResponse.*;
 import static org.apache.juneau.collections.JsonMap.*;
 import static org.apache.juneau.common.internal.IOUtils.*;
 import static org.apache.juneau.common.internal.StringUtils.*;
@@ -36,8 +36,8 @@ import java.util.concurrent.atomic.*;
 import java.util.function.*;
 import java.util.logging.*;
 
-import javax.servlet.*;
-import javax.servlet.http.*;
+import jakarta.servlet.*;
+import jakarta.servlet.http.*;
 
 import org.apache.http.Header;
 import org.apache.juneau.*;
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOpContext.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOpContext.java
index 4796f1e85..b62b140e8 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOpContext.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOpContext.java
@@ -28,8 +28,8 @@ import java.util.*;
 import java.util.concurrent.*;
 import java.util.function.*;
 
-import javax.servlet.*;
-import javax.servlet.http.*;
+import jakarta.servlet.*;
+import jakarta.servlet.http.*;
 
 import org.apache.http.*;
 import org.apache.juneau.*;
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java
index 410a1c34d..5b0ed4add 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java
@@ -37,8 +37,8 @@ import java.util.*;
 import java.util.logging.*;
 import java.util.stream.*;
 
-import javax.servlet.*;
-import javax.servlet.http.*;
+import jakarta.servlet.*;
+import jakarta.servlet.http.*;
 
 import org.apache.http.*;
 import org.apache.http.message.*;
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestResponse.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestResponse.java
index 26dc1c95c..c4ac12ebb 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestResponse.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestResponse.java
@@ -21,8 +21,8 @@ import java.io.*;
 import java.nio.charset.*;
 import java.util.*;
 
-import javax.servlet.*;
-import javax.servlet.http.*;
+import jakarta.servlet.*;
+import jakarta.servlet.http.*;
 
 import org.apache.http.*;
 import org.apache.juneau.*;
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestSession.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestSession.java
index 5cda349f1..2d24b75b6 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestSession.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestSession.java
@@ -17,7 +17,7 @@ import static org.apache.juneau.internal.CollectionUtils.*;
 import java.io.*;
 import java.util.*;
 
-import javax.servlet.http.*;
+import jakarta.servlet.http.*;
 
 import org.apache.http.*;
 import org.apache.juneau.*;
@@ -284,10 +284,9 @@ public class RestSession extends ContextSession {
         * @param value The status code.
         * @return This object.
         */
-       @SuppressWarnings("deprecation")
        public RestSession status(StatusLine value) {
                if (value != null)
-                       res.setStatus(value.getStatusCode(), 
value.getReasonPhrase());
+                       res.setStatus(value.getStatusCode());
                return this;
        }
 
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestDestroy.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestDestroy.java
index 26469f12e..0a042bcb1 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestDestroy.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestDestroy.java
@@ -17,7 +17,7 @@ import static java.lang.annotation.RetentionPolicy.*;
 
 import java.lang.annotation.*;
 
-import javax.servlet.*;
+import jakarta.servlet.*;
 
 import org.apache.juneau.rest.*;
 
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestEndCall.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestEndCall.java
index 53384c82b..0d2e1bbc9 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestEndCall.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestEndCall.java
@@ -17,7 +17,7 @@ import static java.lang.annotation.RetentionPolicy.*;
 
 import java.lang.annotation.*;
 
-import javax.servlet.http.*;
+import jakarta.servlet.http.*;
 
 /**
  * Identifies a method that gets called right before we exit the servlet 
service method.
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestInit.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestInit.java
index b81172190..2884e7aab 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestInit.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestInit.java
@@ -17,7 +17,7 @@ import static java.lang.annotation.RetentionPolicy.*;
 
 import java.lang.annotation.*;
 
-import javax.servlet.*;
+import jakarta.servlet.*;
 
 import org.apache.juneau.rest.*;
 
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPostCall.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPostCall.java
index 3558f8e6a..8f63ed511 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPostCall.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPostCall.java
@@ -20,8 +20,8 @@ import java.lang.annotation.*;
 import java.util.*;
 import java.util.logging.*;
 
-import javax.servlet.*;
-import javax.servlet.http.*;
+import jakarta.servlet.*;
+import jakarta.servlet.http.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.config.*;
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPostInit.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPostInit.java
index 39bacea46..e93b911d4 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPostInit.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPostInit.java
@@ -17,7 +17,7 @@ import static java.lang.annotation.RetentionPolicy.*;
 
 import java.lang.annotation.*;
 
-import javax.servlet.*;
+import jakarta.servlet.*;
 
 import org.apache.juneau.rest.*;
 
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPreCall.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPreCall.java
index 81abc36f9..c5dd12e92 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPreCall.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPreCall.java
@@ -20,8 +20,8 @@ import java.lang.annotation.*;
 import java.util.*;
 import java.util.logging.*;
 
-import javax.servlet.*;
-import javax.servlet.http.*;
+import jakarta.servlet.*;
+import jakarta.servlet.http.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.config.*;
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestStartCall.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestStartCall.java
index f64b64e44..242732a63 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestStartCall.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestStartCall.java
@@ -17,7 +17,7 @@ import static java.lang.annotation.RetentionPolicy.*;
 
 import java.lang.annotation.*;
 
-import javax.servlet.http.*;
+import jakarta.servlet.http.*;
 
 import org.apache.juneau.http.response.*;
 
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/arg/CookieList.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/arg/CookieList.java
index caa721f40..8b4f204ef 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/arg/CookieList.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/arg/CookieList.java
@@ -16,7 +16,7 @@ import static org.apache.juneau.internal.CollectionUtils.*;
 
 import java.util.*;
 
-import javax.servlet.http.*;
+import jakarta.servlet.http.*;
 
 /**
  * A simple list of {@link Cookie} objects.
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/arg/HttpServletRequestArgs.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/arg/HttpServletRequestArgs.java
index 44e3147ac..3f4d9221e 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/arg/HttpServletRequestArgs.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/arg/HttpServletRequestArgs.java
@@ -14,8 +14,8 @@ package org.apache.juneau.rest.arg;
 
 import java.security.*;
 
-import javax.servlet.*;
-import javax.servlet.http.*;
+import jakarta.servlet.*;
+import jakarta.servlet.http.*;
 
 import org.apache.juneau.reflect.*;
 import org.apache.juneau.rest.annotation.*;
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/arg/HttpServletResponseArgs.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/arg/HttpServletResponseArgs.java
index 6b2c94cdc..e77a20016 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/arg/HttpServletResponseArgs.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/arg/HttpServletResponseArgs.java
@@ -12,7 +12,7 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.rest.arg;
 
-import javax.servlet.http.*;
+import jakarta.servlet.http.*;
 
 import org.apache.juneau.reflect.*;
 import org.apache.juneau.rest.annotation.*;
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/arg/HttpSessionArgs.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/arg/HttpSessionArgs.java
index 539017cfc..04ac36a53 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/arg/HttpSessionArgs.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/arg/HttpSessionArgs.java
@@ -12,7 +12,7 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.rest.arg;
 
-import javax.servlet.http.*;
+import jakarta.servlet.http.*;
 
 import org.apache.juneau.reflect.*;
 import org.apache.juneau.rest.annotation.*;
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/arg/RestRequestArgs.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/arg/RestRequestArgs.java
index ebaf0e12d..ddd64aea2 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/arg/RestRequestArgs.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/arg/RestRequestArgs.java
@@ -15,8 +15,8 @@ package org.apache.juneau.rest.arg;
 import java.io.*;
 import java.util.*;
 
-import javax.servlet.*;
-import javax.servlet.http.*;
+import jakarta.servlet.*;
+import jakarta.servlet.http.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.cp.*;
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/arg/RestResponseArgs.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/arg/RestResponseArgs.java
index 425e75876..1b9dd6ffd 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/arg/RestResponseArgs.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/arg/RestResponseArgs.java
@@ -13,7 +13,7 @@
 package org.apache.juneau.rest.arg;
 
 import java.io.*;
-import javax.servlet.*;
+import jakarta.servlet.*;
 
 import org.apache.juneau.reflect.*;
 import org.apache.juneau.rest.*;
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/debug/DebugEnablement.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/debug/DebugEnablement.java
index cb19fb725..a3cdf3fd9 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/debug/DebugEnablement.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/debug/DebugEnablement.java
@@ -18,7 +18,7 @@ import static org.apache.juneau.internal.ObjectUtils.*;
 import java.lang.reflect.Method;
 import java.util.function.*;
 
-import javax.servlet.http.*;
+import jakarta.servlet.http.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.cp.*;
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/httppart/RequestAttributes.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/httppart/RequestAttributes.java
index c0b29a606..e62b4bcdb 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/httppart/RequestAttributes.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/httppart/RequestAttributes.java
@@ -17,7 +17,7 @@ import static org.apache.juneau.internal.CollectionUtils.*;
 
 import java.util.*;
 
-import javax.servlet.http.*;
+import jakarta.servlet.http.*;
 
 import org.apache.juneau.collections.*;
 import org.apache.juneau.rest.*;
@@ -28,7 +28,7 @@ import org.apache.juneau.svl.*;
  *
  * <p>
  *     The {@link RequestAttributes} object is the API for accessing the 
standard servlet attributes on an HTTP request
- *     (i.e. {@link javax.servlet.ServletRequest#getAttribute(String)}).
+ *     (i.e. {@link jakarta.servlet.ServletRequest#getAttribute(String)}).
  * </p>
  *
  * <p class='bjava'>
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/httppart/RequestContent.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/httppart/RequestContent.java
index 236979a18..02816a867 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/httppart/RequestContent.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/httppart/RequestContent.java
@@ -20,7 +20,7 @@ import java.io.*;
 import java.lang.reflect.*;
 import java.util.*;
 
-import javax.servlet.*;
+import jakarta.servlet.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.collections.*;
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/httppart/RequestFormParam.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/httppart/RequestFormParam.java
index 3e2a22fd6..0be92eaed 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/httppart/RequestFormParam.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/httppart/RequestFormParam.java
@@ -92,7 +92,7 @@ import org.apache.juneau.rest.*;
  */
 public class RequestFormParam extends RequestHttpPart implements NameValuePair 
{
 
-       private final javax.servlet.http.Part part;
+       private final jakarta.servlet.http.Part part;
 
        /**
         * Constructor.
@@ -100,7 +100,7 @@ public class RequestFormParam extends RequestHttpPart 
implements NameValuePair {
         * @param request The request object.
         * @param part The HTTP part.
         */
-       public RequestFormParam(RestRequest request, javax.servlet.http.Part 
part) {
+       public RequestFormParam(RestRequest request, jakarta.servlet.http.Part 
part) {
                super(FORMDATA, request, part.getName(), null);
                this.part = part;
        }
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/httppart/RequestFormParams.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/httppart/RequestFormParams.java
index b17f1299d..b175b88a4 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/httppart/RequestFormParams.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/httppart/RequestFormParams.java
@@ -22,7 +22,7 @@ import static org.apache.juneau.internal.CollectionUtils.*;
 import java.util.*;
 import java.util.stream.*;
 
-import javax.servlet.http.*;
+import jakarta.servlet.http.*;
 
 import org.apache.http.*;
 import org.apache.juneau.*;
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/logger/BasicTestCallLogger.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/logger/BasicTestCallLogger.java
index aaf5cc497..882d2e38b 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/logger/BasicTestCallLogger.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/logger/BasicTestCallLogger.java
@@ -17,7 +17,7 @@ import static org.apache.juneau.Enablement.*;
 import static org.apache.juneau.common.internal.StringUtils.*;
 import static java.util.logging.Level.*;
 
-import javax.servlet.http.*;
+import jakarta.servlet.http.*;
 
 import org.apache.juneau.cp.*;
 import org.apache.juneau.rest.*;
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/logger/CallLogger.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/logger/CallLogger.java
index 3eba21a23..8779c340a 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/logger/CallLogger.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/logger/CallLogger.java
@@ -25,7 +25,7 @@ import java.util.*;
 import java.util.function.*;
 import java.util.logging.*;
 
-import javax.servlet.http.*;
+import jakarta.servlet.http.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.common.internal.*;
@@ -685,9 +685,6 @@ public class CallLogger {
                        sb.append("\n=== END 
======================================================================");
                }
 
-               if (rule.isLogStackTrace() && e == null)
-                       e = new Throwable("Stacktrace");
-
                log(level, sb.toString(), e);
 
        }
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/logger/CallLoggerRule.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/logger/CallLoggerRule.java
index 3c3300f87..010dc4898 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/logger/CallLoggerRule.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/logger/CallLoggerRule.java
@@ -17,7 +17,7 @@ import static org.apache.juneau.collections.JsonMap.*;
 import java.util.function.*;
 import java.util.logging.*;
 
-import javax.servlet.http.*;
+import jakarta.servlet.http.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.cp.*;
@@ -332,7 +332,6 @@ public class CallLoggerRule {
        private final Enablement enabled;
        private final Predicate<HttpServletRequest> enabledTest;
        private final CallLoggingDetail requestDetail, responseDetail;
-       private final boolean logStackTrace;
 
        /**
         * Constructor.
@@ -349,7 +348,6 @@ public class CallLoggerRule {
                this.enabledTest = b.enabledTest;
                this.requestDetail = b.requestDetail;
                this.responseDetail = b.responseDetail;
-               this.logStackTrace = b.logStackTrace;
        }
 
        /**
@@ -419,15 +417,6 @@ public class CallLoggerRule {
                return enabledTest;
        }
 
-       /**
-        * Returns <jk>true</jk> if a stack trace should be logged.
-        *
-        * @return <jk>true</jk> if a stack trace should be logged.
-        */
-       public boolean isLogStackTrace() {
-               return logStackTrace;
-       }
-
        @Override /* Object */
        public String toString() {
                return filteredMap()
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/matcher/ClientVersionMatcher.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/matcher/ClientVersionMatcher.java
index 31f97738a..fc9b91ae0 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/matcher/ClientVersionMatcher.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/matcher/ClientVersionMatcher.java
@@ -15,7 +15,7 @@ package org.apache.juneau.rest.matcher;
 import static org.apache.juneau.common.internal.StringUtils.*;
 import static org.apache.juneau.rest.annotation.RestOpAnnotation.*;
 
-import javax.servlet.http.*;
+import jakarta.servlet.http.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.internal.*;
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/matcher/MultipartFormDataMatcher.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/matcher/MultipartFormDataMatcher.java
index 466b6824e..2826aa213 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/matcher/MultipartFormDataMatcher.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/matcher/MultipartFormDataMatcher.java
@@ -12,7 +12,7 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.rest.matcher;
 
-import javax.servlet.http.*;
+import jakarta.servlet.http.*;
 
 /**
  * Predefined matcher for matching requests with content type 
<js>"multipart/form-data"</js>.
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/matcher/RestMatcher.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/matcher/RestMatcher.java
index 16bbc34aa..6c8db62a6 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/matcher/RestMatcher.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/matcher/RestMatcher.java
@@ -12,7 +12,7 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.rest.matcher;
 
-import javax.servlet.http.*;
+import jakarta.servlet.http.*;
 
 import org.apache.juneau.rest.annotation.*;
 
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/matcher/UrlEncodedFormMatcher.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/matcher/UrlEncodedFormMatcher.java
index bf99e4d11..c0285a9c4 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/matcher/UrlEncodedFormMatcher.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/matcher/UrlEncodedFormMatcher.java
@@ -12,7 +12,7 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.rest.matcher;
 
-import javax.servlet.http.*;
+import jakarta.servlet.http.*;
 
 /**
  * Predefined matcher for matching requests with content type 
<js>"application/x-www-form-urlencoded"</js>.
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/processor/ResponseProcessor.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/processor/ResponseProcessor.java
index f3a5a276e..06ae56b26 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/processor/ResponseProcessor.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/processor/ResponseProcessor.java
@@ -14,7 +14,7 @@ package org.apache.juneau.rest.processor;
 
 import java.io.*;
 
-import javax.servlet.http.*;
+import jakarta.servlet.http.*;
 
 import org.apache.juneau.http.response.*;
 import org.apache.juneau.rest.*;
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/rrpc/RrpcRestOpContext.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/rrpc/RrpcRestOpContext.java
index b440a0ae7..acc3dce92 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/rrpc/RrpcRestOpContext.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/rrpc/RrpcRestOpContext.java
@@ -12,7 +12,7 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.rest.rrpc;
 
-import javax.servlet.*;
+import jakarta.servlet.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.http.remote.*;
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/servlet/BasicRestObject.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/servlet/BasicRestObject.java
index 3954540c2..7fad8e159 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/servlet/BasicRestObject.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/servlet/BasicRestObject.java
@@ -14,7 +14,7 @@ package org.apache.juneau.rest.servlet;
 
 import java.util.*;
 
-import javax.servlet.http.*;
+import jakarta.servlet.http.*;
 
 import org.apache.juneau.dto.swagger.Swagger;
 import org.apache.juneau.rest.*;
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/servlet/BasicRestObjectGroup.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/servlet/BasicRestObjectGroup.java
index bca213771..c48aefdb9 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/servlet/BasicRestObjectGroup.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/servlet/BasicRestObjectGroup.java
@@ -12,7 +12,7 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.rest.servlet;
 
-import javax.servlet.http.*;
+import jakarta.servlet.http.*;
 
 import org.apache.juneau.rest.*;
 import org.apache.juneau.rest.annotation.*;
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/servlet/RestObject.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/servlet/RestObject.java
index f826219b9..97478fa17 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/servlet/RestObject.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/servlet/RestObject.java
@@ -19,8 +19,8 @@ import java.util.concurrent.atomic.*;
 import java.util.function.*;
 import java.util.logging.*;
 
-import javax.servlet.*;
-import javax.servlet.http.*;
+import jakarta.servlet.*;
+import jakarta.servlet.http.*;
 
 import org.apache.juneau.common.internal.*;
 import org.apache.juneau.http.response.*;
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/servlet/RestServlet.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/servlet/RestServlet.java
index 1e48fc4ce..d56639309 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/servlet/RestServlet.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/servlet/RestServlet.java
@@ -13,7 +13,7 @@
 package org.apache.juneau.rest.servlet;
 
 import static java.util.logging.Level.*;
-import static javax.servlet.http.HttpServletResponse.*;
+import static jakarta.servlet.http.HttpServletResponse.*;
 import static org.apache.juneau.common.internal.StringUtils.*;
 import static org.apache.juneau.internal.ClassUtils.*;
 
@@ -23,8 +23,8 @@ import java.util.concurrent.atomic.*;
 import java.util.function.*;
 import java.util.logging.*;
 
-import javax.servlet.*;
-import javax.servlet.http.*;
+import jakarta.servlet.*;
+import jakarta.servlet.http.*;
 
 import org.apache.juneau.reflect.*;
 import org.apache.juneau.rest.*;
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/swagger/BasicSwaggerProviderSession.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/swagger/BasicSwaggerProviderSession.java
index 72d0995af..23bc7f576 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/swagger/BasicSwaggerProviderSession.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/swagger/BasicSwaggerProviderSession.java
@@ -24,7 +24,7 @@ import java.lang.reflect.Method;
 import java.util.*;
 import java.util.function.*;
 
-import javax.servlet.*;
+import jakarta.servlet.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/util/BoundedServletInputStream.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/util/BoundedServletInputStream.java
index 844d337a4..f7de326be 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/util/BoundedServletInputStream.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/util/BoundedServletInputStream.java
@@ -14,7 +14,7 @@ package org.apache.juneau.rest.util;
 
 import java.io.*;
 
-import javax.servlet.*;
+import jakarta.servlet.*;
 
 /**
  * ServletInputStream wrapper around a normal input stream with support for 
limiting input.
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/util/CachingHttpServletRequest.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/util/CachingHttpServletRequest.java
index 78187c69e..7d892d588 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/util/CachingHttpServletRequest.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/util/CachingHttpServletRequest.java
@@ -16,9 +16,9 @@ import static org.apache.juneau.common.internal.IOUtils.*;
 
 import java.io.IOException;
 
-import javax.servlet.ServletInputStream;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletRequestWrapper;
+import jakarta.servlet.ServletInputStream;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequestWrapper;
 
 /**
  * Wraps an {@link HttpServletRequest} and preloads the content into memory 
for debugging purposes.
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/util/CachingHttpServletResponse.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/util/CachingHttpServletResponse.java
index dc7b97c60..9cb5518ea 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/util/CachingHttpServletResponse.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/util/CachingHttpServletResponse.java
@@ -15,9 +15,9 @@ package org.apache.juneau.rest.util;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 
-import javax.servlet.ServletOutputStream;
-import javax.servlet.WriteListener;
-import javax.servlet.http.*;
+import jakarta.servlet.ServletOutputStream;
+import jakarta.servlet.WriteListener;
+import jakarta.servlet.http.*;
 
 /**
  * Wraps an {@link HttpServletResponse} and caches the output stream in a 
separate buffer for debugging purposes.
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/util/FinishableServletOutputStream.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/util/FinishableServletOutputStream.java
index f6742228b..346d8151f 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/util/FinishableServletOutputStream.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/util/FinishableServletOutputStream.java
@@ -14,7 +14,7 @@ package org.apache.juneau.rest.util;
 
 import java.io.*;
 
-import javax.servlet.*;
+import jakarta.servlet.*;
 
 import org.apache.juneau.encoders.*;
 
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/util/RestUtils.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/util/RestUtils.java
index 59b97b927..e04cddb9e 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/util/RestUtils.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/util/RestUtils.java
@@ -21,7 +21,7 @@ import java.io.*;
 import java.util.*;
 import java.util.regex.*;
 
-import javax.servlet.http.*;
+import jakarta.servlet.http.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.json.*;
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/RequestAttributeVar.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/RequestAttributeVar.java
index a278dcda4..3776a747d 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/RequestAttributeVar.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/RequestAttributeVar.java
@@ -12,7 +12,7 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.rest.vars;
 
-import javax.servlet.http.*;
+import jakarta.servlet.http.*;
 
 import org.apache.juneau.http.response.*;
 import org.apache.juneau.rest.*;
diff --git a/juneau-sc/juneau-sc-server/pom.xml 
b/juneau-sc/juneau-sc-server/pom.xml
index 9d2325f88..859a9b227 100644
--- a/juneau-sc/juneau-sc-server/pom.xml
+++ b/juneau-sc/juneau-sc-server/pom.xml
@@ -60,6 +60,11 @@
                        <type>test-jar</type>
                        <scope>test</scope>
                </dependency>
+               
+               <dependency>
+                       <groupId>jakarta.servlet</groupId>
+                       <artifactId>jakarta.servlet-api</artifactId>
+               </dependency>
 
                <!-- Other -->
                <dependency>
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/remote/Remote_CommonInterfaces_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/remote/Remote_CommonInterfaces_Test.java
index 95ec64334..2f1833eaa 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/remote/Remote_CommonInterfaces_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/remote/Remote_CommonInterfaces_Test.java
@@ -172,24 +172,24 @@ public class Remote_CommonInterfaces_Test {
                // HttpClient goes into loop if status code is less than 200 so 
we can't test those.
 
                C x = 
MockRestClient.create(C1.class).json().disableRedirectHandling().build().getRemote(C.class);
-               assertObject(x.ok()).asString().isContains("HTTP/1.1 200 OK");
-               assertObject(x.accepted()).asString().isContains("HTTP/1.1 202 
Accepted");
-               
assertObject(x.alreadyReported()).asString().isContains("HTTP/1.1 208 Already 
Reported");
-               assertObject(x.created()).asString().isContains("HTTP/1.1 201 
Created");
-               assertObject(x.found()).asString().isContains("HTTP/1.1 302 
Found");
-               assertObject(x.iMUsed()).asString().isContains("HTTP/1.1 226 IM 
Used");
-               
assertObject(x.movedPermanently()).asString().isContains("HTTP/1.1 301 Moved 
Permanently");
-               
assertObject(x.multipleChoices()).asString().isContains("HTTP/1.1 300 Multiple 
Choices");
-               assertObject(x.multiStatus()).asString().isContains("HTTP/1.1 
207 Multi-Status");
-               assertObject(x.noContent()).asString().isContains("HTTP/1.1 204 
No Content");
-               
assertObject(x.nonAuthoritiveInformation()).asString().isContains("HTTP/1.1 203 
Non-Authoritative Information");
-               assertObject(x.notModified()).asString().isContains("HTTP/1.1 
304 Not Modified");
-               
assertObject(x.partialContent()).asString().isContains("HTTP/1.1 206 Partial 
Content");
-               
assertObject(x.permanentRedirect()).asString().isContains("HTTP/1.1 308 
Permanent Redirect");
-               assertObject(x.resetContent()).asString().isContains("HTTP/1.1 
205 Reset Content");
-               assertObject(x.seeOther()).asString().isContains("HTTP/1.1 303 
See Other");
-               
assertObject(x.temporaryRedirect()).asString().isContains("HTTP/1.1 307 
Temporary Redirect");
-               assertObject(x.useProxy()).asString().isContains("HTTP/1.1 305 
Use Proxy");
+               assertObject(x.ok()).asString().isContains("HTTP/1.1 200");
+               assertObject(x.accepted()).asString().isContains("HTTP/1.1 
202");
+               
assertObject(x.alreadyReported()).asString().isContains("HTTP/1.1 208");
+               assertObject(x.created()).asString().isContains("HTTP/1.1 201");
+               assertObject(x.found()).asString().isContains("HTTP/1.1 302");
+               assertObject(x.iMUsed()).asString().isContains("HTTP/1.1 226");
+               
assertObject(x.movedPermanently()).asString().isContains("HTTP/1.1 301");
+               
assertObject(x.multipleChoices()).asString().isContains("HTTP/1.1 300");
+               assertObject(x.multiStatus()).asString().isContains("HTTP/1.1 
207");
+               assertObject(x.noContent()).asString().isContains("HTTP/1.1 
204");
+               
assertObject(x.nonAuthoritiveInformation()).asString().isContains("HTTP/1.1 
203");
+               assertObject(x.notModified()).asString().isContains("HTTP/1.1 
304");
+               
assertObject(x.partialContent()).asString().isContains("HTTP/1.1 206");
+               
assertObject(x.permanentRedirect()).asString().isContains("HTTP/1.1 308");
+               assertObject(x.resetContent()).asString().isContains("HTTP/1.1 
205");
+               assertObject(x.seeOther()).asString().isContains("HTTP/1.1 
303");
+               
assertObject(x.temporaryRedirect()).asString().isContains("HTTP/1.1 307");
+               assertObject(x.useProxy()).asString().isContains("HTTP/1.1 
305");
        }
 
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/rest/RestOp_Params_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/rest/RestOp_Params_Test.java
index 3e17d1bf0..411230f6b 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/rest/RestOp_Params_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/rest/RestOp_Params_Test.java
@@ -19,7 +19,7 @@ import static org.junit.runners.MethodSorters.*;
 import java.io.*;
 import java.util.*;
 
-import javax.servlet.*;
+import jakarta.servlet.*;
 
 import org.apache.juneau.config.*;
 import org.apache.juneau.cp.Messages;
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/rest/Rest_PredefinedStatusCodes_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/rest/Rest_PredefinedStatusCodes_Test.java
index fea2de5cf..e44549768 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/rest/Rest_PredefinedStatusCodes_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/rest/Rest_PredefinedStatusCodes_Test.java
@@ -18,7 +18,7 @@ import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 
-import javax.servlet.http.*;
+import jakarta.servlet.http.*;
 
 import org.apache.juneau.http.annotation.Content;
 import org.apache.juneau.http.annotation.Header;
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/RestInit_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/RestInit_Test.java
index 3a4454416..0f79f362d 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/RestInit_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/RestInit_Test.java
@@ -14,7 +14,7 @@ package org.apache.juneau.rest.annotation;
 
 import static org.junit.runners.MethodSorters.*;
 
-import javax.servlet.*;
+import jakarta.servlet.*;
 
 import org.apache.juneau.collections.*;
 import org.apache.juneau.rest.*;
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/RestOp_Matchers_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/RestOp_Matchers_Test.java
index 698710151..0cb26b4ec 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/RestOp_Matchers_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/RestOp_Matchers_Test.java
@@ -14,7 +14,7 @@ package org.apache.juneau.rest.annotation;
 
 import static org.junit.runners.MethodSorters.*;
 
-import javax.servlet.http.*;
+import jakarta.servlet.http.*;
 
 import org.apache.juneau.common.internal.*;
 import org.apache.juneau.rest.client.*;
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/RestPostCall_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/RestPostCall_Test.java
index b43154e83..88439a75c 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/RestPostCall_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/RestPostCall_Test.java
@@ -14,7 +14,7 @@ package org.apache.juneau.rest.annotation;
 
 import static org.junit.runners.MethodSorters.*;
 
-import javax.servlet.http.*;
+import jakarta.servlet.http.*;
 
 import org.apache.juneau.http.header.*;
 import org.apache.juneau.rest.RestRequest;
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/RestPreCall_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/RestPreCall_Test.java
index c3a16c996..d85305656 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/RestPreCall_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/RestPreCall_Test.java
@@ -14,7 +14,7 @@ package org.apache.juneau.rest.annotation;
 
 import static org.junit.runners.MethodSorters.*;
 
-import javax.servlet.http.*;
+import jakarta.servlet.http.*;
 
 import org.apache.juneau.collections.*;
 import org.apache.juneau.http.header.*;
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/RestStartCall_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/RestStartCall_Test.java
index 0c22415f1..ddd8794cd 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/RestStartCall_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/RestStartCall_Test.java
@@ -14,7 +14,7 @@ package org.apache.juneau.rest.annotation;
 
 import static org.junit.runners.MethodSorters.*;
 
-import javax.servlet.http.*;
+import jakarta.servlet.http.*;
 
 import org.apache.juneau.collections.*;
 import org.apache.juneau.rest.RestRequest;
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/rest/test/client/ThirdPartyProxyResource.java
 
b/juneau-utest/src/test/java/org/apache/juneau/rest/test/client/ThirdPartyProxyResource.java
index 09a0e5b98..3ff4416c9 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/rest/test/client/ThirdPartyProxyResource.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/rest/test/client/ThirdPartyProxyResource.java
@@ -20,7 +20,7 @@ import static org.junit.Assert.*;
 import java.io.*;
 import java.util.*;
 
-import javax.servlet.http.*;
+import jakarta.servlet.http.*;
 
 import org.apache.juneau.annotation.*;
 import org.apache.juneau.http.annotation.*;
diff --git a/pom.xml b/pom.xml
index 762d797d7..43cd1736e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -38,17 +38,17 @@
                <jaxb.version>2.3.1</jaxb.version>
                <junit.version>4.13.2</junit.version>
                <jaxrs.version>1.1.1</jaxrs.version>
-               <servlet.version>4.0.4</servlet.version>
+               <servlet.version>6.0.0</servlet.version>
                <httpcore.version>4.4.15</httpcore.version>
                <httpclient.version>4.5.13</httpclient.version>
-               <jetty.version>10.0.12</jetty.version>
+               <jetty.version>11.0.12</jetty.version>
                <juneau.compare.version>8.0.0</juneau.compare.version>
                <javadoc.juneau.version>9.0.0</javadoc.juneau.version>
                <juneauVersion>9.0.0</juneauVersion>
                <juneauVersionNext>9.0.1</juneauVersionNext>
                <derby.version>10.16.1.1</derby.version>
                <hibernate.version>5.6.14.Final</hibernate.version>
-               <springboot.version>2.7.5</springboot.version>
+               <springboot.version>3.0.0</springboot.version>
                <xml.apis.version>2.0.2</xml.apis.version>
                <javadoc.executable />
                <javadoc.plugin.version>3.4.1</javadoc.plugin.version>

Reply via email to