You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2020/01/13 11:55:52 UTC

[tomcat] branch master updated (93ca69c -> 782a2ba)

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

markt pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/tomcat.git.


    from 93ca69c  Tab police
     new fabe5e7  First pass at version updates for Tomcat 10.0.0.x
     new 4ed2dc8  Rename "javax.annotation.*" to "jakarta.annotation.*"
     new c91bf7f  Rename javax.ejb.* to jakarta.ejb.*
     new fddd4fd  Rename javax.el.* to jakarta.el.*
     new d96186c  Disable tests that depend on JSTL since it is not Jakarta EE compatible
     new 8cd528d  Rename "javax.mail.*" to "jakarta.mail.*"
     new d6f305e  Rename "javax.persistence.*" to "jakarta.persistence.*"
     new 35dc7b9  Rename "javax.security.auth.message" to "jakarta.security.auth.message"
     new ab35110  Rename "javax.servlet.*" to "jakartax.servlet.*" and fix tests
     new 6c3e928  Rename "javax.transaction" to "jakarta.transation"
     new 8f9e7bc  Rename "javax.websocket.*" to "jakarta.websocket.*"
     new aade5ed  Update spec versions in MANIFESTs and parameterise from build script
     new c9fa030  Update powered by header
     new 05da26a  Update Servlet version returned by API
     new 4f86530  Update referenced version in comments
     new 7d4b08c  Update JSP version in code to 3.0
     new 9cd22e9  Clear out the changelog for 10.0.0.x
     new 782a2ba  Update more version references

The 18 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 build.properties.default                           |    4 +-
 build.xml                                          |  145 +-
 java/jakarta/annotation/Generated.java             |   37 +
 java/jakarta/annotation/ManagedBean.java           |   31 +
 java/jakarta/annotation/PostConstruct.java         |   33 +
 java/jakarta/annotation/PreDestroy.java            |   33 +
 java/jakarta/annotation/Priority.java              |   33 +
 java/jakarta/annotation/Resource.java              |   51 +
 java/jakarta/annotation/Resources.java             |   33 +
 java/jakarta/annotation/security/DeclareRoles.java |   33 +
 java/jakarta/annotation/security/DenyAll.java      |   33 +
 java/jakarta/annotation/security/PermitAll.java    |   33 +
 java/jakarta/annotation/security/RolesAllowed.java |   33 +
 java/jakarta/annotation/security/RunAs.java        |   33 +
 .../annotation/sql/DataSourceDefinition.java       |   48 +
 .../annotation/sql/DataSourceDefinitions.java      |   31 +
 java/jakarta/ejb/EJB.java                          |   37 +
 java/jakarta/ejb/EJBs.java                         |   31 +
 java/jakarta/el/ArrayELResolver.java               |  150 +
 java/jakarta/el/BeanELResolver.java                |  372 +
 java/jakarta/el/BeanNameELResolver.java            |  155 +
 java/jakarta/el/BeanNameResolver.java              |   91 +
 java/jakarta/el/CompositeELResolver.java           |  233 +
 java/jakarta/el/ELClass.java                       |   33 +
 java/jakarta/el/ELContext.java                     |  306 +
 java/jakarta/el/ELContextEvent.java                |   37 +
 java/jakarta/el/ELContextListener.java             |   28 +
 java/jakarta/el/ELException.java                   |   68 +
 java/jakarta/el/ELManager.java                     |   90 +
 java/jakarta/el/ELProcessor.java                   |  362 +
 java/jakarta/el/ELResolver.java                    |  142 +
 java/jakarta/el/EvaluationListener.java            |   55 +
 java/jakarta/el/Expression.java                    |   39 +
 java/jakarta/el/ExpressionFactory.java             |  432 +
 java/jakarta/el/FunctionMapper.java                |   37 +
 java/jakarta/el/ImportHandler.java                 |  492 ++
 java/jakarta/el/Jre9Compat.java                    |   83 +
 java/jakarta/el/JreCompat.java                     |   73 +
 java/jakarta/el/LambdaExpression.java              |   93 +
 java/jakarta/el/ListELResolver.java                |  155 +
 java/{javax => jakarta}/el/LocalStrings.properties |    0
 .../el/LocalStrings_cs.properties                  |    0
 .../el/LocalStrings_de.properties                  |    0
 .../el/LocalStrings_es.properties                  |    0
 .../el/LocalStrings_fr.properties                  |    0
 .../el/LocalStrings_ja.properties                  |    0
 .../el/LocalStrings_ko.properties                  |    0
 .../el/LocalStrings_pt_BR.properties               |    0
 .../el/LocalStrings_zh_CN.properties               |    0
 java/jakarta/el/MapELResolver.java                 |  136 +
 java/jakarta/el/MethodExpression.java              |   84 +
 java/jakarta/el/MethodInfo.java                    |   44 +
 java/jakarta/el/MethodNotFoundException.java       |   38 +
 java/jakarta/el/PropertyNotFoundException.java     |   38 +
 java/jakarta/el/PropertyNotWritableException.java  |   38 +
 java/jakarta/el/ResourceBundleELResolver.java      |  124 +
 java/jakarta/el/StandardELContext.java             |  210 +
 java/jakarta/el/StaticFieldELResolver.java         |  209 +
 java/jakarta/el/TypeConverter.java                 |   62 +
 java/jakarta/el/Util.java                          |  832 ++
 java/jakarta/el/ValueExpression.java               |  106 +
 java/jakarta/el/ValueReference.java                |   44 +
 java/jakarta/el/VariableMapper.java                |   28 +
 java/jakarta/mail/Authenticator.java               |   23 +
 java/jakarta/mail/PasswordAuthentication.java      |   24 +
 java/jakarta/mail/Session.java                     |   29 +
 java/jakarta/mail/internet/InternetAddress.java    |   24 +
 java/jakarta/mail/internet/MimeMessage.java        |   32 +
 java/jakarta/mail/internet/MimePart.java           |   21 +
 java/jakarta/mail/internet/MimePartDataSource.java |   24 +
 java/jakarta/persistence/PersistenceContext.java   |   33 +
 .../persistence/PersistenceContextType.java        |   24 +
 java/jakarta/persistence/PersistenceContexts.java  |   31 +
 java/jakarta/persistence/PersistenceProperty.java  |   30 +
 java/jakarta/persistence/PersistenceUnit.java      |   32 +
 java/jakarta/persistence/PersistenceUnits.java     |   31 +
 java/jakarta/persistence/SynchronizationType.java  |   22 +
 .../security/auth/message/AuthException.java       |   30 +
 java/jakarta/security/auth/message/AuthStatus.java |   37 +
 java/jakarta/security/auth/message/ClientAuth.java |   30 +
 .../jakarta/security/auth/message/MessageInfo.java |   33 +
 .../security/auth/message/MessagePolicy.java       |   85 +
 java/jakarta/security/auth/message/ServerAuth.java |   29 +
 .../message/callback/CallerPrincipalCallback.java  |   57 +
 .../auth/message/callback/CertStoreCallback.java   |   41 +
 .../message/callback/GroupPrincipalCallback.java   |   43 +
 .../callback/PasswordValidationCallback.java       |   65 +
 .../auth/message/callback/PrivateKeyCallback.java  |  123 +
 .../auth/message/callback/SecretKeyCallback.java   |   62 +
 .../auth/message/callback/TrustStoreCallback.java  |   38 +
 .../security/auth/message/config/AuthConfig.java   |   32 +
 .../auth/message/config/AuthConfigFactory.java     |  153 +
 .../auth/message/config/AuthConfigProvider.java    |   32 +
 .../auth/message/config/ClientAuthConfig.java      |   30 +
 .../auth/message/config/ClientAuthContext.java     |   22 +
 .../auth/message/config/RegistrationListener.java  |   22 +
 .../auth/message/config/ServerAuthConfig.java      |   30 +
 .../auth/message/config/ServerAuthContext.java     |   22 +
 .../auth/message/module/ClientAuthModule.java      |   35 +
 .../auth/message/module/ServerAuthModule.java      |   35 +
 java/jakarta/servlet/AsyncContext.java             |  108 +
 java/jakarta/servlet/AsyncEvent.java               |   74 +
 java/jakarta/servlet/AsyncListener.java            |   31 +
 java/jakarta/servlet/DispatcherType.java           |   28 +
 java/jakarta/servlet/Filter.java                   |  120 +
 java/jakarta/servlet/FilterChain.java              |   53 +
 java/jakarta/servlet/FilterConfig.java             |   75 +
 java/jakarta/servlet/FilterRegistration.java       |   81 +
 java/jakarta/servlet/GenericFilter.java            |   81 +
 java/jakarta/servlet/GenericServlet.java           |  238 +
 java/jakarta/servlet/HttpConstraintElement.java    |  125 +
 .../servlet/HttpMethodConstraintElement.java       |   57 +
 .../servlet/LocalStrings.properties                |    0
 .../servlet/LocalStrings_cs.properties             |    0
 .../servlet/LocalStrings_de.properties             |    0
 .../servlet/LocalStrings_es.properties             |    0
 .../servlet/LocalStrings_fr.properties             |    0
 .../servlet/LocalStrings_ja.properties             |    0
 .../servlet/LocalStrings_ko.properties             |    0
 .../servlet/LocalStrings_zh_CN.properties          |    0
 java/jakarta/servlet/MultipartConfigElement.java   |   85 +
 java/jakarta/servlet/ReadListener.java             |   52 +
 java/jakarta/servlet/Registration.java             |   94 +
 java/jakarta/servlet/RequestDispatcher.java        |  316 +
 java/jakarta/servlet/Servlet.java                  |  178 +
 java/jakarta/servlet/ServletConfig.java            |   69 +
 .../servlet/ServletContainerInitializer.java       |   53 +
 java/jakarta/servlet/ServletContext.java           | 1094 +++
 .../servlet/ServletContextAttributeEvent.java      |   68 +
 .../servlet/ServletContextAttributeListener.java   |   58 +
 java/jakarta/servlet/ServletContextEvent.java      |   48 +
 java/jakarta/servlet/ServletContextListener.java   |   52 +
 java/jakarta/servlet/ServletException.java         |   91 +
 java/jakarta/servlet/ServletInputStream.java       |  121 +
 java/jakarta/servlet/ServletOutputStream.java      |  309 +
 java/jakarta/servlet/ServletRegistration.java      |   49 +
 java/jakarta/servlet/ServletRequest.java           |  507 ++
 .../servlet/ServletRequestAttributeEvent.java      |   73 +
 .../servlet/ServletRequestAttributeListener.java   |   61 +
 java/jakarta/servlet/ServletRequestEvent.java      |   60 +
 java/jakarta/servlet/ServletRequestListener.java   |   48 +
 java/jakarta/servlet/ServletRequestWrapper.java    |  485 ++
 java/jakarta/servlet/ServletResponse.java          |  370 +
 java/jakarta/servlet/ServletResponseWrapper.java   |  266 +
 java/jakarta/servlet/ServletSecurityElement.java   |  135 +
 java/jakarta/servlet/SessionCookieConfig.java      |  110 +
 java/jakarta/servlet/SessionTrackingMode.java      |   26 +
 java/jakarta/servlet/SingleThreadModel.java        |   43 +
 java/jakarta/servlet/UnavailableException.java     |  175 +
 java/jakarta/servlet/WriteListener.java            |   45 +
 java/jakarta/servlet/annotation/HandlesTypes.java  |   39 +
 .../jakarta/servlet/annotation/HttpConstraint.java |   69 +
 .../servlet/annotation/HttpMethodConstraint.java   |   74 +
 .../servlet/annotation/MultipartConfig.java        |   68 +
 .../servlet/annotation/ServletSecurity.java        |   90 +
 java/jakarta/servlet/annotation/WebFilter.java     |  122 +
 java/jakarta/servlet/annotation/WebInitParam.java  |   57 +
 java/jakarta/servlet/annotation/WebListener.java   |   54 +
 java/jakarta/servlet/annotation/WebServlet.java    |  113 +
 .../servlet/descriptor/JspConfigDescriptor.java    |   28 +
 .../descriptor/JspPropertyGroupDescriptor.java     |   38 +
 .../servlet/descriptor/TaglibDescriptor.java       |   26 +
 java/jakarta/servlet/http/Cookie.java              |  495 ++
 java/jakarta/servlet/http/HttpFilter.java          |   94 +
 java/jakarta/servlet/http/HttpServlet.java         |  908 ++
 java/jakarta/servlet/http/HttpServletMapping.java  |   53 +
 java/jakarta/servlet/http/HttpServletRequest.java  |  613 ++
 .../servlet/http/HttpServletRequestWrapper.java    |  433 +
 java/jakarta/servlet/http/HttpServletResponse.java |  642 ++
 .../servlet/http/HttpServletResponseWrapper.java   |  299 +
 java/jakarta/servlet/http/HttpSession.java         |  281 +
 .../http/HttpSessionActivationListener.java        |   50 +
 .../servlet/http/HttpSessionAttributeListener.java |   58 +
 .../servlet/http/HttpSessionBindingEvent.java      |  119 +
 .../servlet/http/HttpSessionBindingListener.java   |   57 +
 java/jakarta/servlet/http/HttpSessionContext.java  |   54 +
 java/jakarta/servlet/http/HttpSessionEvent.java    |   45 +
 .../servlet/http/HttpSessionIdListener.java        |   41 +
 java/jakarta/servlet/http/HttpSessionListener.java |   51 +
 java/jakarta/servlet/http/HttpUpgradeHandler.java  |   42 +
 java/jakarta/servlet/http/HttpUtils.java           |  280 +
 .../servlet/http/LocalStrings.properties           |    0
 .../servlet/http/LocalStrings_de.properties        |    0
 .../servlet/http/LocalStrings_es.properties        |    0
 .../servlet/http/LocalStrings_fr.properties        |    0
 .../servlet/http/LocalStrings_ja.properties        |    0
 .../servlet/http/LocalStrings_ko.properties        |    0
 .../servlet/http/LocalStrings_zh_CN.properties     |    0
 java/jakarta/servlet/http/MappingMatch.java        |   31 +
 java/jakarta/servlet/http/Part.java                |  137 +
 java/jakarta/servlet/http/PushBuilder.java         |  196 +
 java/jakarta/servlet/http/WebConnection.java       |   51 +
 java/jakarta/servlet/http/package.html             |   30 +
 java/jakarta/servlet/jsp/ErrorData.java            |   90 +
 java/jakarta/servlet/jsp/HttpJspPage.java          |   60 +
 .../jakarta/servlet/jsp/JspApplicationContext.java |   80 +
 java/jakarta/servlet/jsp/JspContext.java           |  282 +
 java/jakarta/servlet/jsp/JspEngineInfo.java        |   49 +
 java/jakarta/servlet/jsp/JspException.java         |  101 +
 java/jakarta/servlet/jsp/JspFactory.java           |  157 +
 java/jakarta/servlet/jsp/JspPage.java              |   90 +
 java/jakarta/servlet/jsp/JspTagException.java      |   85 +
 java/jakarta/servlet/jsp/JspWriter.java            |  458 +
 java/jakarta/servlet/jsp/PageContext.java          |  535 ++
 java/jakarta/servlet/jsp/SkipPageException.java    |   77 +
 java/jakarta/servlet/jsp/el/ELException.java       |   81 +
 java/jakarta/servlet/jsp/el/ELParseException.java  |   53 +
 java/jakarta/servlet/jsp/el/Expression.java        |   54 +
 .../servlet/jsp/el/ExpressionEvaluator.java        |  115 +
 java/jakarta/servlet/jsp/el/FunctionMapper.java    |   41 +
 .../servlet/jsp/el/ImplicitObjectELResolver.java   |  609 ++
 .../servlet/jsp/el/ScopedAttributeELResolver.java  |  238 +
 java/jakarta/servlet/jsp/el/VariableResolver.java  |   51 +
 .../{javax => jakarta}/servlet/jsp/el/package.html |    0
 java/jakarta/servlet/jsp/package.html              |   29 +
 .../servlet/jsp/resources/jspxml.dtd               |    0
 .../servlet/jsp/resources/jspxml.xsd               |    0
 java/jakarta/servlet/jsp/tagext/BodyContent.java   |  125 +
 java/jakarta/servlet/jsp/tagext/BodyTag.java       |  162 +
 .../jakarta/servlet/jsp/tagext/BodyTagSupport.java |  153 +
 .../servlet/jsp/tagext/DynamicAttributes.java      |   52 +
 java/jakarta/servlet/jsp/tagext/FunctionInfo.java  |   79 +
 java/jakarta/servlet/jsp/tagext/IterationTag.java  |  121 +
 java/jakarta/servlet/jsp/tagext/JspFragment.java   |   85 +
 java/jakarta/servlet/jsp/tagext/JspIdConsumer.java |   21 +
 java/jakarta/servlet/jsp/tagext/JspTag.java        |   27 +
 java/jakarta/servlet/jsp/tagext/PageData.java      |   50 +
 java/jakarta/servlet/jsp/tagext/SimpleTag.java     |  140 +
 .../servlet/jsp/tagext/SimpleTagSupport.java       |  216 +
 java/jakarta/servlet/jsp/tagext/Tag.java           |  264 +
 java/jakarta/servlet/jsp/tagext/TagAdapter.java    |  167 +
 .../servlet/jsp/tagext/TagAttributeInfo.java       |  263 +
 java/jakarta/servlet/jsp/tagext/TagData.java       |  153 +
 java/jakarta/servlet/jsp/tagext/TagExtraInfo.java  |  145 +
 java/jakarta/servlet/jsp/tagext/TagFileInfo.java   |   86 +
 java/jakarta/servlet/jsp/tagext/TagInfo.java       |  457 +
 .../jakarta/servlet/jsp/tagext/TagLibraryInfo.java |  286 +
 .../servlet/jsp/tagext/TagLibraryValidator.java    |  144 +
 java/jakarta/servlet/jsp/tagext/TagSupport.java    |  291 +
 .../servlet/jsp/tagext/TagVariableInfo.java        |  109 +
 .../servlet/jsp/tagext/TryCatchFinally.java        |   99 +
 .../servlet/jsp/tagext/ValidationMessage.java      |   77 +
 java/jakarta/servlet/jsp/tagext/VariableInfo.java  |  258 +
 .../jsp/tagext/doc-files/BodyTagProtocol.gif       |  Bin
 .../jsp/tagext/doc-files/IterationTagProtocol.gif  |  Bin
 .../servlet/jsp/tagext/doc-files/TagProtocol.gif   |  Bin
 .../jsp/tagext/doc-files/VariableInfo-1.gif        |  Bin
 .../servlet/jsp/tagext/package.html                |    0
 java/jakarta/servlet/package.html                  |   30 +
 .../servlet/resources/XMLSchema.dtd                |    0
 .../servlet/resources/datatypes.dtd                |    0
 .../servlet/resources/j2ee_1_4.xsd                 |    0
 .../servlet/resources/j2ee_web_services_1_1.xsd    |    0
 .../resources/j2ee_web_services_client_1_1.xsd     |    0
 .../servlet/resources/javaee_5.xsd                 |    0
 .../servlet/resources/javaee_6.xsd                 |    0
 .../servlet/resources/javaee_7.xsd                 |    0
 .../servlet/resources/javaee_8.xsd                 |    0
 .../servlet/resources/javaee_web_services_1_2.xsd  |    0
 .../servlet/resources/javaee_web_services_1_3.xsd  |    0
 .../servlet/resources/javaee_web_services_1_4.xsd  |    0
 .../resources/javaee_web_services_client_1_2.xsd   |    0
 .../resources/javaee_web_services_client_1_3.xsd   |    0
 .../resources/javaee_web_services_client_1_4.xsd   |    0
 .../servlet/resources/jsp_2_0.xsd                  |    0
 .../servlet/resources/jsp_2_1.xsd                  |    0
 .../servlet/resources/jsp_2_2.xsd                  |    0
 .../servlet/resources/jsp_2_3.xsd                  |    0
 .../servlet/resources/web-app_2_2.dtd              |    0
 .../servlet/resources/web-app_2_3.dtd              |    0
 .../servlet/resources/web-app_2_4.xsd              |    0
 .../servlet/resources/web-app_2_5.xsd              |    0
 .../servlet/resources/web-app_3_0.xsd              |    0
 .../servlet/resources/web-app_3_1.xsd              |    0
 .../servlet/resources/web-app_4_0.xsd              |    0
 .../servlet/resources/web-common_3_0.xsd           |    0
 .../servlet/resources/web-common_3_1.xsd           |    0
 .../servlet/resources/web-common_4_0.xsd           |    0
 .../servlet/resources/web-fragment_3_0.xsd         |    0
 .../servlet/resources/web-fragment_3_1.xsd         |    0
 .../servlet/resources/web-fragment_4_0.xsd         |    0
 .../servlet/resources/web-jsptaglibrary_1_1.dtd    |    0
 .../servlet/resources/web-jsptaglibrary_1_2.dtd    |    0
 .../servlet/resources/web-jsptaglibrary_2_0.xsd    |    0
 .../servlet/resources/web-jsptaglibrary_2_1.xsd    |    0
 java/{javax => jakarta}/servlet/resources/xml.xsd  |    0
 .../transaction/HeuristicCommitException.java      |   30 +
 .../transaction/HeuristicMixedException.java       |   30 +
 .../transaction/HeuristicRollbackException.java    |   30 +
 .../transaction/InvalidTransactionException.java   |   30 +
 .../jakarta/transaction/NotSupportedException.java |   30 +
 java/jakarta/transaction/RollbackException.java    |   30 +
 java/jakarta/transaction/Status.java               |   30 +
 java/jakarta/transaction/Synchronization.java      |   22 +
 java/jakarta/transaction/SystemException.java      |   38 +
 java/jakarta/transaction/Transaction.java          |   42 +
 java/jakarta/transaction/TransactionManager.java   |   41 +
 .../transaction/TransactionRequiredException.java  |   30 +
 .../TransactionRolledbackException.java            |   30 +
 .../TransactionSynchronizationRegistry.java        |   33 +
 java/jakarta/transaction/UserTransaction.java      |   34 +
 java/jakarta/websocket/ClientEndpoint.java         |   34 +
 java/jakarta/websocket/ClientEndpointConfig.java   |  138 +
 java/jakarta/websocket/CloseReason.java            |  122 +
 java/jakarta/websocket/ContainerProvider.java      |   63 +
 java/jakarta/websocket/DecodeException.java        |   56 +
 java/jakarta/websocket/Decoder.java                |   53 +
 .../websocket/DefaultClientEndpointConfig.java     |   80 +
 java/jakarta/websocket/DeploymentException.java    |   30 +
 java/jakarta/websocket/EncodeException.java        |   38 +
 java/jakarta/websocket/Encoder.java                |   51 +
 java/jakarta/websocket/Endpoint.java               |   49 +
 java/jakarta/websocket/EndpointConfig.java         |   29 +
 java/jakarta/websocket/Extension.java              |   29 +
 java/jakarta/websocket/HandshakeResponse.java      |   30 +
 java/jakarta/websocket/MessageHandler.java         |   42 +
 java/jakarta/websocket/OnClose.java                |   27 +
 java/jakarta/websocket/OnError.java                |   27 +
 java/jakarta/websocket/OnMessage.java              |   28 +
 java/jakarta/websocket/OnOpen.java                 |   27 +
 java/jakarta/websocket/PongMessage.java            |   32 +
 java/jakarta/websocket/RemoteEndpoint.java         |  229 +
 java/jakarta/websocket/SendHandler.java            |   22 +
 java/jakarta/websocket/SendResult.java             |   39 +
 java/jakarta/websocket/Session.java                |  193 +
 java/jakarta/websocket/SessionException.java       |   35 +
 java/jakarta/websocket/WebSocketContainer.java     |  131 +
 .../server/DefaultServerEndpointConfig.java        |   95 +
 .../jakarta/websocket/server/HandshakeRequest.java |   53 +
 java/jakarta/websocket/server/PathParam.java       |   33 +
 .../websocket/server/ServerApplicationConfig.java  |   51 +
 java/jakarta/websocket/server/ServerContainer.java |   30 +
 java/jakarta/websocket/server/ServerEndpoint.java  |   46 +
 .../websocket/server/ServerEndpointConfig.java     |  229 +
 java/javax/annotation/Generated.java               |   37 -
 java/javax/annotation/ManagedBean.java             |   31 -
 java/javax/annotation/PostConstruct.java           |   33 -
 java/javax/annotation/PreDestroy.java              |   33 -
 java/javax/annotation/Priority.java                |   33 -
 java/javax/annotation/Resource.java                |   51 -
 java/javax/annotation/Resources.java               |   33 -
 java/javax/annotation/security/DeclareRoles.java   |   33 -
 java/javax/annotation/security/DenyAll.java        |   33 -
 java/javax/annotation/security/PermitAll.java      |   33 -
 java/javax/annotation/security/RolesAllowed.java   |   33 -
 java/javax/annotation/security/RunAs.java          |   33 -
 .../javax/annotation/sql/DataSourceDefinition.java |   48 -
 .../annotation/sql/DataSourceDefinitions.java      |   31 -
 java/javax/ejb/EJB.java                            |   37 -
 java/javax/ejb/EJBs.java                           |   31 -
 java/javax/el/ArrayELResolver.java                 |  150 -
 java/javax/el/BeanELResolver.java                  |  372 -
 java/javax/el/BeanNameELResolver.java              |  155 -
 java/javax/el/BeanNameResolver.java                |   91 -
 java/javax/el/CompositeELResolver.java             |  233 -
 java/javax/el/ELClass.java                         |   33 -
 java/javax/el/ELContext.java                       |  306 -
 java/javax/el/ELContextEvent.java                  |   37 -
 java/javax/el/ELContextListener.java               |   28 -
 java/javax/el/ELException.java                     |   68 -
 java/javax/el/ELManager.java                       |   90 -
 java/javax/el/ELProcessor.java                     |  362 -
 java/javax/el/ELResolver.java                      |  142 -
 java/javax/el/EvaluationListener.java              |   55 -
 java/javax/el/Expression.java                      |   39 -
 java/javax/el/ExpressionFactory.java               |  432 -
 java/javax/el/FunctionMapper.java                  |   37 -
 java/javax/el/ImportHandler.java                   |  492 --
 java/javax/el/Jre9Compat.java                      |   83 -
 java/javax/el/JreCompat.java                       |   73 -
 java/javax/el/LambdaExpression.java                |   93 -
 java/javax/el/ListELResolver.java                  |  155 -
 java/javax/el/MapELResolver.java                   |  136 -
 java/javax/el/MethodExpression.java                |   84 -
 java/javax/el/MethodInfo.java                      |   44 -
 java/javax/el/MethodNotFoundException.java         |   38 -
 java/javax/el/PropertyNotFoundException.java       |   38 -
 java/javax/el/PropertyNotWritableException.java    |   38 -
 java/javax/el/ResourceBundleELResolver.java        |  124 -
 java/javax/el/StandardELContext.java               |  210 -
 java/javax/el/StaticFieldELResolver.java           |  209 -
 java/javax/el/TypeConverter.java                   |   62 -
 java/javax/el/Util.java                            |  832 --
 java/javax/el/ValueExpression.java                 |  106 -
 java/javax/el/ValueReference.java                  |   44 -
 java/javax/el/VariableMapper.java                  |   28 -
 java/javax/mail/Authenticator.java                 |   23 -
 java/javax/mail/PasswordAuthentication.java        |   24 -
 java/javax/mail/Session.java                       |   29 -
 java/javax/mail/internet/InternetAddress.java      |   24 -
 java/javax/mail/internet/MimeMessage.java          |   32 -
 java/javax/mail/internet/MimePart.java             |   21 -
 java/javax/mail/internet/MimePartDataSource.java   |   24 -
 java/javax/persistence/PersistenceContext.java     |   33 -
 java/javax/persistence/PersistenceContextType.java |   24 -
 java/javax/persistence/PersistenceContexts.java    |   31 -
 java/javax/persistence/PersistenceProperty.java    |   30 -
 java/javax/persistence/PersistenceUnit.java        |   32 -
 java/javax/persistence/PersistenceUnits.java       |   31 -
 java/javax/persistence/SynchronizationType.java    |   22 -
 .../javax/security/auth/message/AuthException.java |   30 -
 java/javax/security/auth/message/AuthStatus.java   |   37 -
 java/javax/security/auth/message/ClientAuth.java   |   30 -
 java/javax/security/auth/message/MessageInfo.java  |   33 -
 .../javax/security/auth/message/MessagePolicy.java |   85 -
 java/javax/security/auth/message/ServerAuth.java   |   29 -
 .../message/callback/CallerPrincipalCallback.java  |   57 -
 .../auth/message/callback/CertStoreCallback.java   |   41 -
 .../message/callback/GroupPrincipalCallback.java   |   43 -
 .../callback/PasswordValidationCallback.java       |   65 -
 .../auth/message/callback/PrivateKeyCallback.java  |  123 -
 .../auth/message/callback/SecretKeyCallback.java   |   62 -
 .../auth/message/callback/TrustStoreCallback.java  |   38 -
 .../security/auth/message/config/AuthConfig.java   |   32 -
 .../auth/message/config/AuthConfigFactory.java     |  153 -
 .../auth/message/config/AuthConfigProvider.java    |   31 -
 .../auth/message/config/ClientAuthConfig.java      |   29 -
 .../auth/message/config/ClientAuthContext.java     |   22 -
 .../auth/message/config/RegistrationListener.java  |   22 -
 .../auth/message/config/ServerAuthConfig.java      |   29 -
 .../auth/message/config/ServerAuthContext.java     |   22 -
 .../auth/message/module/ClientAuthModule.java      |   34 -
 .../auth/message/module/ServerAuthModule.java      |   34 -
 java/javax/servlet/AsyncContext.java               |  108 -
 java/javax/servlet/AsyncEvent.java                 |   74 -
 java/javax/servlet/AsyncListener.java              |   31 -
 java/javax/servlet/DispatcherType.java             |   28 -
 java/javax/servlet/Filter.java                     |  120 -
 java/javax/servlet/FilterChain.java                |   53 -
 java/javax/servlet/FilterConfig.java               |   75 -
 java/javax/servlet/FilterRegistration.java         |   81 -
 java/javax/servlet/GenericFilter.java              |   81 -
 java/javax/servlet/GenericServlet.java             |  238 -
 java/javax/servlet/HttpConstraintElement.java      |  125 -
 .../javax/servlet/HttpMethodConstraintElement.java |   57 -
 java/javax/servlet/MultipartConfigElement.java     |   85 -
 java/javax/servlet/ReadListener.java               |   52 -
 java/javax/servlet/Registration.java               |   94 -
 java/javax/servlet/RequestDispatcher.java          |  316 -
 java/javax/servlet/Servlet.java                    |  178 -
 java/javax/servlet/ServletConfig.java              |   69 -
 .../javax/servlet/ServletContainerInitializer.java |   53 -
 java/javax/servlet/ServletContext.java             | 1094 ---
 .../servlet/ServletContextAttributeEvent.java      |   68 -
 .../servlet/ServletContextAttributeListener.java   |   58 -
 java/javax/servlet/ServletContextEvent.java        |   48 -
 java/javax/servlet/ServletContextListener.java     |   52 -
 java/javax/servlet/ServletException.java           |   91 -
 java/javax/servlet/ServletInputStream.java         |  121 -
 java/javax/servlet/ServletOutputStream.java        |  309 -
 java/javax/servlet/ServletRegistration.java        |   49 -
 java/javax/servlet/ServletRequest.java             |  507 --
 .../servlet/ServletRequestAttributeEvent.java      |   73 -
 .../servlet/ServletRequestAttributeListener.java   |   61 -
 java/javax/servlet/ServletRequestEvent.java        |   60 -
 java/javax/servlet/ServletRequestListener.java     |   48 -
 java/javax/servlet/ServletRequestWrapper.java      |  485 --
 java/javax/servlet/ServletResponse.java            |  370 -
 java/javax/servlet/ServletResponseWrapper.java     |  266 -
 java/javax/servlet/ServletSecurityElement.java     |  135 -
 java/javax/servlet/SessionCookieConfig.java        |  110 -
 java/javax/servlet/SessionTrackingMode.java        |   26 -
 java/javax/servlet/SingleThreadModel.java          |   43 -
 java/javax/servlet/UnavailableException.java       |  175 -
 java/javax/servlet/WriteListener.java              |   45 -
 java/javax/servlet/annotation/HandlesTypes.java    |   39 -
 java/javax/servlet/annotation/HttpConstraint.java  |   69 -
 .../servlet/annotation/HttpMethodConstraint.java   |   74 -
 java/javax/servlet/annotation/MultipartConfig.java |   68 -
 java/javax/servlet/annotation/ServletSecurity.java |   90 -
 java/javax/servlet/annotation/WebFilter.java       |  122 -
 java/javax/servlet/annotation/WebInitParam.java    |   57 -
 java/javax/servlet/annotation/WebListener.java     |   54 -
 java/javax/servlet/annotation/WebServlet.java      |  113 -
 .../servlet/descriptor/JspConfigDescriptor.java    |   28 -
 .../descriptor/JspPropertyGroupDescriptor.java     |   38 -
 .../javax/servlet/descriptor/TaglibDescriptor.java |   26 -
 java/javax/servlet/http/Cookie.java                |  495 --
 java/javax/servlet/http/HttpFilter.java            |   94 -
 java/javax/servlet/http/HttpServlet.java           |  908 --
 java/javax/servlet/http/HttpServletMapping.java    |   53 -
 java/javax/servlet/http/HttpServletRequest.java    |  613 --
 .../servlet/http/HttpServletRequestWrapper.java    |  433 -
 java/javax/servlet/http/HttpServletResponse.java   |  642 --
 .../servlet/http/HttpServletResponseWrapper.java   |  299 -
 java/javax/servlet/http/HttpSession.java           |  281 -
 .../http/HttpSessionActivationListener.java        |   50 -
 .../servlet/http/HttpSessionAttributeListener.java |   58 -
 .../servlet/http/HttpSessionBindingEvent.java      |  119 -
 .../servlet/http/HttpSessionBindingListener.java   |   57 -
 java/javax/servlet/http/HttpSessionContext.java    |   54 -
 java/javax/servlet/http/HttpSessionEvent.java      |   45 -
 java/javax/servlet/http/HttpSessionIdListener.java |   41 -
 java/javax/servlet/http/HttpSessionListener.java   |   51 -
 java/javax/servlet/http/HttpUpgradeHandler.java    |   42 -
 java/javax/servlet/http/HttpUtils.java             |  280 -
 java/javax/servlet/http/MappingMatch.java          |   31 -
 java/javax/servlet/http/Part.java                  |  137 -
 java/javax/servlet/http/PushBuilder.java           |  196 -
 java/javax/servlet/http/WebConnection.java         |   51 -
 java/javax/servlet/http/package.html               |   30 -
 java/javax/servlet/jsp/ErrorData.java              |   90 -
 java/javax/servlet/jsp/HttpJspPage.java            |   60 -
 java/javax/servlet/jsp/JspApplicationContext.java  |   80 -
 java/javax/servlet/jsp/JspContext.java             |  282 -
 java/javax/servlet/jsp/JspEngineInfo.java          |   49 -
 java/javax/servlet/jsp/JspException.java           |  101 -
 java/javax/servlet/jsp/JspFactory.java             |  157 -
 java/javax/servlet/jsp/JspPage.java                |   90 -
 java/javax/servlet/jsp/JspTagException.java        |   85 -
 java/javax/servlet/jsp/JspWriter.java              |  458 -
 java/javax/servlet/jsp/PageContext.java            |  535 --
 java/javax/servlet/jsp/SkipPageException.java      |   77 -
 java/javax/servlet/jsp/el/ELException.java         |   81 -
 java/javax/servlet/jsp/el/ELParseException.java    |   53 -
 java/javax/servlet/jsp/el/Expression.java          |   54 -
 java/javax/servlet/jsp/el/ExpressionEvaluator.java |  115 -
 java/javax/servlet/jsp/el/FunctionMapper.java      |   41 -
 .../servlet/jsp/el/ImplicitObjectELResolver.java   |  609 --
 .../servlet/jsp/el/ScopedAttributeELResolver.java  |  238 -
 java/javax/servlet/jsp/el/VariableResolver.java    |   51 -
 java/javax/servlet/jsp/package.html                |   29 -
 java/javax/servlet/jsp/tagext/BodyContent.java     |  125 -
 java/javax/servlet/jsp/tagext/BodyTag.java         |  162 -
 java/javax/servlet/jsp/tagext/BodyTagSupport.java  |  153 -
 .../servlet/jsp/tagext/DynamicAttributes.java      |   52 -
 java/javax/servlet/jsp/tagext/FunctionInfo.java    |   79 -
 java/javax/servlet/jsp/tagext/IterationTag.java    |  121 -
 java/javax/servlet/jsp/tagext/JspFragment.java     |   85 -
 java/javax/servlet/jsp/tagext/JspIdConsumer.java   |   21 -
 java/javax/servlet/jsp/tagext/JspTag.java          |   27 -
 java/javax/servlet/jsp/tagext/PageData.java        |   50 -
 java/javax/servlet/jsp/tagext/SimpleTag.java       |  140 -
 .../javax/servlet/jsp/tagext/SimpleTagSupport.java |  216 -
 java/javax/servlet/jsp/tagext/Tag.java             |  264 -
 java/javax/servlet/jsp/tagext/TagAdapter.java      |  167 -
 .../javax/servlet/jsp/tagext/TagAttributeInfo.java |  263 -
 java/javax/servlet/jsp/tagext/TagData.java         |  153 -
 java/javax/servlet/jsp/tagext/TagExtraInfo.java    |  145 -
 java/javax/servlet/jsp/tagext/TagFileInfo.java     |   86 -
 java/javax/servlet/jsp/tagext/TagInfo.java         |  457 -
 java/javax/servlet/jsp/tagext/TagLibraryInfo.java  |  286 -
 .../servlet/jsp/tagext/TagLibraryValidator.java    |  144 -
 java/javax/servlet/jsp/tagext/TagSupport.java      |  291 -
 java/javax/servlet/jsp/tagext/TagVariableInfo.java |  109 -
 java/javax/servlet/jsp/tagext/TryCatchFinally.java |   99 -
 .../servlet/jsp/tagext/ValidationMessage.java      |   77 -
 java/javax/servlet/jsp/tagext/VariableInfo.java    |  258 -
 java/javax/servlet/package.html                    |   30 -
 .../transaction/HeuristicCommitException.java      |   30 -
 .../javax/transaction/HeuristicMixedException.java |   30 -
 .../transaction/HeuristicRollbackException.java    |   30 -
 .../transaction/InvalidTransactionException.java   |   30 -
 java/javax/transaction/NotSupportedException.java  |   30 -
 java/javax/transaction/RollbackException.java      |   30 -
 java/javax/transaction/Status.java                 |   30 -
 java/javax/transaction/Synchronization.java        |   22 -
 java/javax/transaction/SystemException.java        |   38 -
 java/javax/transaction/Transaction.java            |   42 -
 java/javax/transaction/TransactionManager.java     |   41 -
 .../transaction/TransactionRequiredException.java  |   30 -
 .../TransactionRolledbackException.java            |   30 -
 .../TransactionSynchronizationRegistry.java        |   33 -
 java/javax/transaction/UserTransaction.java        |   34 -
 java/javax/websocket/ClientEndpoint.java           |   34 -
 java/javax/websocket/ClientEndpointConfig.java     |  138 -
 java/javax/websocket/CloseReason.java              |  122 -
 java/javax/websocket/ContainerProvider.java        |   63 -
 java/javax/websocket/DecodeException.java          |   56 -
 java/javax/websocket/Decoder.java                  |   53 -
 .../websocket/DefaultClientEndpointConfig.java     |   80 -
 java/javax/websocket/DeploymentException.java      |   30 -
 java/javax/websocket/EncodeException.java          |   38 -
 java/javax/websocket/Encoder.java                  |   51 -
 java/javax/websocket/Endpoint.java                 |   49 -
 java/javax/websocket/EndpointConfig.java           |   29 -
 java/javax/websocket/Extension.java                |   29 -
 java/javax/websocket/HandshakeResponse.java        |   30 -
 java/javax/websocket/MessageHandler.java           |   42 -
 java/javax/websocket/OnClose.java                  |   27 -
 java/javax/websocket/OnError.java                  |   27 -
 java/javax/websocket/OnMessage.java                |   28 -
 java/javax/websocket/OnOpen.java                   |   27 -
 java/javax/websocket/PongMessage.java              |   32 -
 java/javax/websocket/RemoteEndpoint.java           |  229 -
 java/javax/websocket/SendHandler.java              |   22 -
 java/javax/websocket/SendResult.java               |   39 -
 java/javax/websocket/Session.java                  |  193 -
 java/javax/websocket/SessionException.java         |   35 -
 java/javax/websocket/WebSocketContainer.java       |  131 -
 .../server/DefaultServerEndpointConfig.java        |   95 -
 java/javax/websocket/server/HandshakeRequest.java  |   53 -
 java/javax/websocket/server/PathParam.java         |   33 -
 .../websocket/server/ServerApplicationConfig.java  |   51 -
 java/javax/websocket/server/ServerContainer.java   |   30 -
 java/javax/websocket/server/ServerEndpoint.java    |   46 -
 .../websocket/server/ServerEndpointConfig.java     |  229 -
 java/org/apache/catalina/AsyncDispatcher.java      |    6 +-
 java/org/apache/catalina/Authenticator.java        |    4 +-
 java/org/apache/catalina/Context.java              |   26 +-
 java/org/apache/catalina/Globals.java              |   10 +-
 java/org/apache/catalina/Manager.java              |   20 +-
 java/org/apache/catalina/Session.java              |    2 +-
 java/org/apache/catalina/Valve.java                |    2 +-
 java/org/apache/catalina/Wrapper.java              |    8 +-
 .../catalina/authenticator/AuthenticatorBase.java  |   33 +-
 .../catalina/authenticator/BasicAuthenticator.java |    4 +-
 .../authenticator/DigestAuthenticator.java         |    4 +-
 .../catalina/authenticator/FormAuthenticator.java  |    8 +-
 .../authenticator/NonLoginAuthenticator.java       |    2 +-
 .../catalina/authenticator/SSLAuthenticator.java   |    4 +-
 .../catalina/authenticator/SavedRequest.java       |    2 +-
 .../catalina/authenticator/SingleSignOn.java       |    4 +-
 .../catalina/authenticator/SingleSignOnEntry.java  |    2 +-
 .../authenticator/SpnegoAuthenticator.java         |    3 +-
 .../jaspic/AuthConfigFactoryImpl.java              |    6 +-
 .../authenticator/jaspic/CallbackHandlerImpl.java  |    5 +-
 .../authenticator/jaspic/MessageInfoImpl.java      |    8 +-
 .../jaspic/SimpleAuthConfigProvider.java           |   13 +-
 .../jaspic/SimpleServerAuthConfig.java             |   11 +-
 .../jaspic/SimpleServerAuthContext.java            |   11 +-
 .../apache/catalina/connector/CoyoteAdapter.java   |   14 +-
 .../catalina/connector/CoyoteInputStream.java      |    4 +-
 .../catalina/connector/CoyoteOutputStream.java     |    4 +-
 .../org/apache/catalina/connector/InputBuffer.java |    2 +-
 .../apache/catalina/connector/OutputBuffer.java    |    4 +-
 java/org/apache/catalina/connector/Request.java    |   45 +-
 .../apache/catalina/connector/RequestFacade.java   |   32 +-
 java/org/apache/catalina/connector/Response.java   |   12 +-
 .../apache/catalina/connector/ResponseFacade.java  |    6 +-
 .../apache/catalina/core/ApplicationContext.java   |   45 +-
 .../catalina/core/ApplicationContextFacade.java    |   22 +-
 .../catalina/core/ApplicationDispatcher.java       |   32 +-
 .../catalina/core/ApplicationFilterChain.java      |   18 +-
 .../catalina/core/ApplicationFilterConfig.java     |   15 +-
 .../catalina/core/ApplicationFilterFactory.java    |    6 +-
 .../core/ApplicationFilterRegistration.java        |    4 +-
 .../catalina/core/ApplicationHttpRequest.java      |   24 +-
 .../catalina/core/ApplicationHttpResponse.java     |   10 +-
 .../apache/catalina/core/ApplicationMapping.java   |    4 +-
 java/org/apache/catalina/core/ApplicationPart.java |    2 +-
 .../catalina/core/ApplicationPushBuilder.java      |   10 +-
 .../apache/catalina/core/ApplicationRequest.java   |   10 +-
 .../apache/catalina/core/ApplicationResponse.java  |    8 +-
 .../core/ApplicationServletRegistration.java       |    6 +-
 .../core/ApplicationSessionCookieConfig.java       |    4 +-
 .../org/apache/catalina/core/AsyncContextImpl.java |   21 +-
 .../apache/catalina/core/AsyncListenerWrapper.java |    8 +-
 java/org/apache/catalina/core/Constants.java       |    2 +-
 .../catalina/core/DefaultInstanceManager.java      |   17 +-
 java/org/apache/catalina/core/StandardContext.java |   55 +-
 .../apache/catalina/core/StandardContextValve.java |    6 +-
 .../apache/catalina/core/StandardEngineValve.java  |    2 +-
 .../apache/catalina/core/StandardHostValve.java    |   10 +-
 java/org/apache/catalina/core/StandardWrapper.java |   21 +-
 .../catalina/core/StandardWrapperFacade.java       |    4 +-
 .../apache/catalina/core/StandardWrapperValve.java |   12 +-
 .../catalina/filters/AddDefaultCharsetFilter.java  |   14 +-
 java/org/apache/catalina/filters/CorsFilter.java   |   28 +-
 .../catalina/filters/CsrfPreventionFilter.java     |   18 +-
 .../catalina/filters/CsrfPreventionFilterBase.java |    8 +-
 .../org/apache/catalina/filters/ExpiresFilter.java |   22 +-
 .../catalina/filters/FailedRequestFilter.java      |   10 +-
 java/org/apache/catalina/filters/FilterBase.java   |    6 +-
 .../catalina/filters/HttpHeaderSecurityFilter.java |   12 +-
 .../apache/catalina/filters/RemoteAddrFilter.java  |    8 +-
 .../apache/catalina/filters/RemoteCIDRFilter.java  |   10 +-
 .../apache/catalina/filters/RemoteHostFilter.java  |    8 +-
 .../apache/catalina/filters/RemoteIpFilter.java    |   20 +-
 .../catalina/filters/RequestDumperFilter.java      |   16 +-
 .../org/apache/catalina/filters/RequestFilter.java |   12 +-
 .../catalina/filters/RestCsrfPreventionFilter.java |   16 +-
 .../catalina/filters/SessionInitializerFilter.java |   16 +-
 .../filters/SetCharacterEncodingFilter.java        |    8 +-
 .../apache/catalina/filters/WebdavFixFilter.java   |   14 +-
 java/org/apache/catalina/ha/ClusterSession.java    |    2 +-
 .../catalina/ha/context/ReplicatedContext.java     |    2 +-
 .../catalina/ha/session/JvmRouteBinderValve.java   |    2 +-
 .../apache/catalina/ha/tcp/ReplicationValve.java   |    2 +-
 .../catalina/loader/WebappClassLoaderBase.java     |   47 +-
 java/org/apache/catalina/loader/WebappLoader.java  |    3 +-
 .../apache/catalina/manager/DummyProxySession.java |    2 +-
 .../catalina/manager/HTMLManagerServlet.java       |   14 +-
 .../apache/catalina/manager/JMXProxyServlet.java   |    9 +-
 .../apache/catalina/manager/ManagerServlet.java    |   15 +-
 .../catalina/manager/StatusManagerServlet.java     |    9 +-
 .../apache/catalina/manager/StatusTransformer.java |    3 +-
 .../manager/host/HTMLHostManagerServlet.java       |    6 +-
 .../catalina/manager/host/HostManagerServlet.java  |   11 +-
 .../apache/catalina/manager/util/SessionUtils.java |    7 +-
 java/org/apache/catalina/mapper/Mapper.java        |    2 +-
 java/org/apache/catalina/mapper/MappingData.java   |    4 +-
 .../catalina/realm/JAASMemoryLoginModule.java      |    3 +-
 java/org/apache/catalina/realm/JAASRealm.java      |    3 +-
 java/org/apache/catalina/realm/RealmBase.java      |    4 +-
 .../catalina/security/SecurityClassLoad.java       |    2 +-
 .../org/apache/catalina/security/SecurityUtil.java |   13 +-
 java/org/apache/catalina/servlets/CGIServlet.java  |   18 +-
 .../apache/catalina/servlets/DefaultServlet.java   |   23 +-
 .../apache/catalina/servlets/WebdavServlet.java    |   13 +-
 java/org/apache/catalina/session/FileStore.java    |    2 +-
 .../apache/catalina/session/StandardManager.java   |    4 +-
 .../apache/catalina/session/StandardSession.java   |   24 +-
 .../catalina/session/StandardSessionFacade.java    |    6 +-
 .../catalina/ssi/ByteArrayServletOutputStream.java |    4 +-
 .../catalina/ssi/ResponseIncludeWrapper.java       |    6 +-
 java/org/apache/catalina/ssi/SSIFilter.java        |   14 +-
 java/org/apache/catalina/ssi/SSIServlet.java       |   10 +-
 .../catalina/ssi/SSIServletExternalResolver.java   |   10 +-
 .../apache/catalina/ssi/SSIServletRequestUtil.java |    4 +-
 .../org/apache/catalina/startup/ContextConfig.java |   16 +-
 .../org/apache/catalina/startup/FailedContext.java |   12 +-
 java/org/apache/catalina/startup/Tomcat.java       |   24 +-
 .../apache/catalina/startup/WebAnnotationSet.java  |   16 +-
 .../catalina/startup/WebappServiceLoader.java      |    4 +-
 java/org/apache/catalina/util/RequestUtil.java     |    4 +-
 java/org/apache/catalina/util/SessionConfig.java   |    2 +-
 .../catalina/valves/AbstractAccessLogValve.java    |    8 +-
 .../valves/CrawlerSessionManagerValve.java         |    8 +-
 .../apache/catalina/valves/ErrorReportValve.java   |    8 +-
 .../catalina/valves/ExtendedAccessLogValve.java    |    4 +-
 .../apache/catalina/valves/HealthCheckValve.java   |    2 +-
 .../apache/catalina/valves/JDBCAccessLogValve.java |    2 +-
 .../catalina/valves/LoadBalancerDrainingValve.java |    6 +-
 .../apache/catalina/valves/PersistentValve.java    |    4 +-
 .../apache/catalina/valves/RemoteAddrValve.java    |    2 +-
 .../apache/catalina/valves/RemoteCIDRValve.java    |    4 +-
 .../apache/catalina/valves/RemoteHostValve.java    |    2 +-
 java/org/apache/catalina/valves/RemoteIpValve.java |    6 +-
 .../apache/catalina/valves/RequestFilterValve.java |    4 +-
 java/org/apache/catalina/valves/SSLValve.java      |    2 +-
 .../org/apache/catalina/valves/SemaphoreValve.java |    2 +-
 .../catalina/valves/StuckThreadDetectionValve.java |    2 +-
 .../catalina/valves/rewrite/RewriteValve.java      |    6 +-
 .../catalina/webresources/ExtractingRoot.java      |    2 +-
 java/org/apache/coyote/AbstractProcessor.java      |    2 +-
 java/org/apache/coyote/AbstractProtocol.java       |    5 +-
 java/org/apache/coyote/ActionCode.java             |    8 +-
 java/org/apache/coyote/AsyncContextCallback.java   |    2 +-
 java/org/apache/coyote/Request.java                |    2 +-
 java/org/apache/coyote/Response.java               |    2 +-
 java/org/apache/coyote/UpgradeToken.java           |    2 +-
 java/org/apache/coyote/ajp/AjpProcessor.java       |    2 +-
 .../coyote/http11/AbstractHttp11Protocol.java      |    2 +-
 java/org/apache/coyote/http11/Http11Processor.java |    2 +-
 .../http11/upgrade/InternalHttpUpgradeHandler.java |    2 +-
 .../http11/upgrade/UpgradeProcessorBase.java       |    2 +-
 .../http11/upgrade/UpgradeProcessorExternal.java   |    4 +-
 .../http11/upgrade/UpgradeProcessorInternal.java   |    4 +-
 .../http11/upgrade/UpgradeServletInputStream.java  |    4 +-
 .../http11/upgrade/UpgradeServletOutputStream.java |    4 +-
 java/org/apache/coyote/http2/Http2AsyncParser.java |    2 +-
 .../coyote/http2/Http2AsyncUpgradeHandler.java     |    2 +-
 java/org/apache/coyote/http2/Http2Parser.java      |    2 +-
 .../apache/coyote/http2/Http2UpgradeHandler.java   |    2 +-
 java/org/apache/el/ExpressionFactoryImpl.java      |   12 +-
 java/org/apache/el/MethodExpressionImpl.java       |   38 +-
 java/org/apache/el/MethodExpressionLiteral.java    |    8 +-
 java/org/apache/el/ValueExpressionImpl.java        |   50 +-
 java/org/apache/el/ValueExpressionLiteral.java     |    6 +-
 java/org/apache/el/lang/ELSupport.java             |    4 +-
 java/org/apache/el/lang/EvaluationContext.java     |   12 +-
 java/org/apache/el/lang/ExpressionBuilder.java     |   12 +-
 java/org/apache/el/lang/FunctionMapperFactory.java |    4 +-
 java/org/apache/el/lang/FunctionMapperImpl.java    |    4 +-
 java/org/apache/el/lang/VariableMapperFactory.java |    4 +-
 java/org/apache/el/lang/VariableMapperImpl.java    |    4 +-
 java/org/apache/el/parser/ArithmeticNode.java      |    2 +-
 java/org/apache/el/parser/AstAnd.java              |    2 +-
 java/org/apache/el/parser/AstAssign.java           |    2 +-
 java/org/apache/el/parser/AstBracketSuffix.java    |    2 +-
 java/org/apache/el/parser/AstChoice.java           |    2 +-
 .../apache/el/parser/AstCompositeExpression.java   |    2 +-
 java/org/apache/el/parser/AstConcatenation.java    |    2 +-
 .../apache/el/parser/AstDeferredExpression.java    |    2 +-
 java/org/apache/el/parser/AstDiv.java              |    2 +-
 java/org/apache/el/parser/AstDotSuffix.java        |    2 +-
 .../org/apache/el/parser/AstDynamicExpression.java |    2 +-
 java/org/apache/el/parser/AstEmpty.java            |    2 +-
 java/org/apache/el/parser/AstEqual.java            |    2 +-
 java/org/apache/el/parser/AstFalse.java            |    2 +-
 java/org/apache/el/parser/AstFloatingPoint.java    |    2 +-
 java/org/apache/el/parser/AstFunction.java         |   12 +-
 java/org/apache/el/parser/AstGreaterThan.java      |    2 +-
 java/org/apache/el/parser/AstGreaterThanEqual.java |    2 +-
 java/org/apache/el/parser/AstIdentifier.java       |   18 +-
 java/org/apache/el/parser/AstInteger.java          |    2 +-
 java/org/apache/el/parser/AstLambdaExpression.java |    4 +-
 java/org/apache/el/parser/AstLessThan.java         |    2 +-
 java/org/apache/el/parser/AstLessThanEqual.java    |    2 +-
 java/org/apache/el/parser/AstListData.java         |    2 +-
 .../org/apache/el/parser/AstLiteralExpression.java |    2 +-
 java/org/apache/el/parser/AstMapData.java          |    2 +-
 java/org/apache/el/parser/AstMinus.java            |    2 +-
 java/org/apache/el/parser/AstMod.java              |    2 +-
 java/org/apache/el/parser/AstMult.java             |    2 +-
 java/org/apache/el/parser/AstNegative.java         |    2 +-
 java/org/apache/el/parser/AstNot.java              |    2 +-
 java/org/apache/el/parser/AstNotEqual.java         |    2 +-
 java/org/apache/el/parser/AstNull.java             |    2 +-
 java/org/apache/el/parser/AstOr.java               |    2 +-
 java/org/apache/el/parser/AstPlus.java             |    2 +-
 java/org/apache/el/parser/AstSemicolon.java        |    2 +-
 java/org/apache/el/parser/AstSetData.java          |    2 +-
 java/org/apache/el/parser/AstString.java           |    2 +-
 java/org/apache/el/parser/AstTrue.java             |    2 +-
 java/org/apache/el/parser/AstValue.java            |   12 +-
 java/org/apache/el/parser/BooleanNode.java         |    2 +-
 java/org/apache/el/parser/ELParser.java            |    3 +-
 java/org/apache/el/parser/ELParser.jjt             |    4 +-
 java/org/apache/el/parser/Node.java                |    6 +-
 java/org/apache/el/parser/SimpleNode.java          |    8 +-
 java/org/apache/el/stream/Optional.java            |    4 +-
 java/org/apache/el/stream/Stream.java              |    4 +-
 .../org/apache/el/stream/StreamELResolverImpl.java |    4 +-
 java/org/apache/el/util/Jre9Compat.java            |    2 +-
 java/org/apache/el/util/JreCompat.java             |    2 +-
 java/org/apache/el/util/ReflectionUtil.java        |   16 +-
 java/org/apache/jasper/Constants.java              |    6 +-
 java/org/apache/jasper/EmbeddedServletOptions.java |    8 +-
 java/org/apache/jasper/JasperException.java        |    2 +-
 java/org/apache/jasper/JspC.java                   |    4 +-
 java/org/apache/jasper/JspCompilationContext.java  |    4 +-
 java/org/apache/jasper/Options.java                |    2 +-
 .../apache/jasper/compiler/ELFunctionMapper.java   |    2 +-
 java/org/apache/jasper/compiler/ELInterpreter.java |    2 +-
 .../jasper/compiler/ELInterpreterFactory.java      |    2 +-
 java/org/apache/jasper/compiler/ELNode.java        |    2 +-
 java/org/apache/jasper/compiler/Generator.java     |  200 +-
 .../jasper/compiler/ImplicitTagLibraryInfo.java    |   10 +-
 .../apache/jasper/compiler/JarScannerFactory.java  |    2 +-
 java/org/apache/jasper/compiler/JasperTagInfo.java |   10 +-
 java/org/apache/jasper/compiler/JspConfig.java     |    6 +-
 .../apache/jasper/compiler/JspDocumentParser.java  |    7 +-
 .../apache/jasper/compiler/JspRuntimeContext.java  |    4 +-
 java/org/apache/jasper/compiler/JspUtil.java       |    2 +-
 java/org/apache/jasper/compiler/Node.java          |   30 +-
 java/org/apache/jasper/compiler/PageDataImpl.java  |    4 +-
 java/org/apache/jasper/compiler/PageInfo.java      |    4 +-
 java/org/apache/jasper/compiler/Parser.java        |    8 +-
 .../apache/jasper/compiler/ScriptingVariabler.java |    4 +-
 .../apache/jasper/compiler/TagFileProcessor.java   |   16 +-
 .../apache/jasper/compiler/TagLibraryInfoImpl.java |   22 +-
 .../apache/jasper/compiler/TagPluginManager.java   |    2 +-
 java/org/apache/jasper/compiler/TldCache.java      |    2 +-
 java/org/apache/jasper/compiler/Validator.java     |   24 +-
 java/org/apache/jasper/el/ELContextImpl.java       |   28 +-
 java/org/apache/jasper/el/ELContextWrapper.java    |    8 +-
 java/org/apache/jasper/el/ELResolverImpl.java      |   16 +-
 .../apache/jasper/el/ExpressionEvaluatorImpl.java  |   18 +-
 java/org/apache/jasper/el/ExpressionImpl.java      |   12 +-
 java/org/apache/jasper/el/FunctionMapperImpl.java  |    4 +-
 java/org/apache/jasper/el/JasperELResolver.java    |   26 +-
 java/org/apache/jasper/el/JspELException.java      |    2 +-
 java/org/apache/jasper/el/JspMethodExpression.java |   12 +-
 .../jasper/el/JspMethodNotFoundException.java      |    2 +-
 .../jasper/el/JspPropertyNotFoundException.java    |    2 +-
 .../jasper/el/JspPropertyNotWritableException.java |    2 +-
 java/org/apache/jasper/el/JspValueExpression.java  |   10 +-
 .../org/apache/jasper/el/VariableResolverImpl.java |    6 +-
 .../jasper/resources/LocalStrings.properties       |    4 +-
 .../jasper/resources/LocalStrings_es.properties    |    4 +-
 .../jasper/resources/LocalStrings_fr.properties    |    4 +-
 .../jasper/resources/LocalStrings_ja.properties    |    4 +-
 .../jasper/resources/LocalStrings_ko.properties    |    4 +-
 .../org/apache/jasper/runtime/BodyContentImpl.java |    4 +-
 java/org/apache/jasper/runtime/HttpJspBase.java    |   12 +-
 .../jasper/runtime/InstanceManagerFactory.java     |    2 +-
 .../jasper/runtime/JspApplicationContextImpl.java  |   18 +-
 .../apache/jasper/runtime/JspContextWrapper.java   |   48 +-
 java/org/apache/jasper/runtime/JspFactoryImpl.java |   18 +-
 .../apache/jasper/runtime/JspFragmentHelper.java   |    8 +-
 .../apache/jasper/runtime/JspRuntimeLibrary.java   |   26 +-
 java/org/apache/jasper/runtime/JspWriterImpl.java  |    4 +-
 .../org/apache/jasper/runtime/PageContextImpl.java |   48 +-
 .../jasper/runtime/ProtectedFunctionMapper.java    |    4 +-
 .../runtime/ServletResponseWrapperInclude.java     |   10 +-
 java/org/apache/jasper/runtime/TagHandlerPool.java |    6 +-
 .../apache/jasper/servlet/JasperInitializer.java   |    8 +-
 .../apache/jasper/servlet/JspCServletContext.java  |   24 +-
 java/org/apache/jasper/servlet/JspServlet.java     |   16 +-
 .../apache/jasper/servlet/JspServletWrapper.java   |   20 +-
 java/org/apache/jasper/servlet/TldPreScanned.java  |    2 +-
 java/org/apache/jasper/servlet/TldScanner.java     |    6 +-
 java/org/apache/jasper/tagplugins/jstl/Util.java   |   16 +-
 .../apache/jasper/tagplugins/jstl/core/Out.java    |    2 +-
 java/org/apache/naming/TransactionRef.java         |    2 +-
 java/org/apache/naming/factory/EjbFactory.java     |    2 +-
 .../apache/naming/factory/MailSessionFactory.java  |   11 +-
 .../org/apache/naming/factory/ResourceFactory.java |    4 +-
 .../org/apache/naming/factory/SendMailFactory.java |   13 +-
 java/org/apache/tomcat/JarScanner.java             |    2 +-
 .../dbcp/dbcp2/managed/BasicManagedDataSource.java |    5 +-
 .../managed/DataSourceXAConnectionFactory.java     |    5 +-
 .../dbcp2/managed/LocalXAConnectionFactory.java    |    3 +-
 .../dbcp/dbcp2/managed/TransactionContext.java     |   13 +-
 .../dbcp/dbcp2/managed/TransactionRegistry.java    |    9 +-
 .../tomcat/util/descriptor/DigesterFactory.java    |    4 +-
 .../util/descriptor/tagplugin/TagPluginParser.java |    2 +-
 .../apache/tomcat/util/descriptor/tld/TagXml.java  |    6 +-
 .../tomcat/util/descriptor/tld/TaglibXml.java      |    2 +-
 .../tomcat/util/descriptor/tld/TldRuleSet.java     |   12 +-
 .../tomcat/util/descriptor/web/FilterDef.java      |    2 +-
 .../tomcat/util/descriptor/web/FilterMap.java      |    2 +-
 .../descriptor/web/JspConfigDescriptorImpl.java    |    6 +-
 .../web/JspPropertyGroupDescriptorImpl.java        |    2 +-
 .../util/descriptor/web/SecurityConstraint.java    |   10 +-
 .../tomcat/util/descriptor/web/SessionConfig.java  |    2 +-
 .../util/descriptor/web/TaglibDescriptorImpl.java  |    2 +-
 .../apache/tomcat/util/descriptor/web/WebXml.java  |   12 +-
 .../apache/tomcat/util/http/CookieProcessor.java   |    2 +-
 .../tomcat/util/http/LegacyCookieProcessor.java    |    2 +-
 java/org/apache/tomcat/util/http/RequestUtil.java  |    2 +-
 java/org/apache/tomcat/util/http/ResponseUtil.java |    2 +-
 .../tomcat/util/http/Rfc6265CookieProcessor.java   |    2 +-
 .../http/fileupload/disk/DiskFileItemFactory.java  |    2 +-
 .../http/fileupload/servlet/ServletFileUpload.java |    2 +-
 .../fileupload/servlet/ServletRequestContext.java  |    2 +-
 java/org/apache/tomcat/util/net/SSLSupport.java    |   10 +-
 .../tomcat/util/scan/StandardJarScanner.java       |    2 +-
 java/org/apache/tomcat/websocket/Constants.java    |    2 +-
 java/org/apache/tomcat/websocket/DecoderEntry.java |    2 +-
 .../tomcat/websocket/FutureToSendHandler.java      |    4 +-
 .../tomcat/websocket/MessageHandlerResult.java     |    2 +-
 java/org/apache/tomcat/websocket/MessagePart.java  |    2 +-
 .../apache/tomcat/websocket/PerMessageDeflate.java |    6 +-
 .../apache/tomcat/websocket/Transformation.java    |    2 +-
 .../tomcat/websocket/TransformationFactory.java    |    2 +-
 java/org/apache/tomcat/websocket/Util.java         |   28 +-
 .../tomcat/websocket/WrappedMessageHandler.java    |    2 +-
 .../tomcat/websocket/WsContainerProvider.java      |    4 +-
 java/org/apache/tomcat/websocket/WsExtension.java  |    2 +-
 .../tomcat/websocket/WsExtensionParameter.java     |    2 +-
 java/org/apache/tomcat/websocket/WsFrameBase.java  |   10 +-
 .../org/apache/tomcat/websocket/WsFrameClient.java |    4 +-
 .../tomcat/websocket/WsHandshakeResponse.java      |    2 +-
 .../org/apache/tomcat/websocket/WsIOException.java |    2 +-
 .../org/apache/tomcat/websocket/WsPongMessage.java |    2 +-
 .../tomcat/websocket/WsRemoteEndpointAsync.java    |    4 +-
 .../tomcat/websocket/WsRemoteEndpointBase.java     |    2 +-
 .../tomcat/websocket/WsRemoteEndpointBasic.java    |    4 +-
 .../tomcat/websocket/WsRemoteEndpointImplBase.java |   18 +-
 .../websocket/WsRemoteEndpointImplClient.java      |    4 +-
 java/org/apache/tomcat/websocket/WsSession.java    |   32 +-
 .../tomcat/websocket/WsWebSocketContainer.java     |   21 +-
 .../tomcat/websocket/pojo/PojoEndpointBase.java    |   10 +-
 .../tomcat/websocket/pojo/PojoEndpointClient.java  |   12 +-
 .../tomcat/websocket/pojo/PojoEndpointServer.java  |   10 +-
 .../websocket/pojo/PojoMessageHandlerBase.java     |    8 +-
 .../pojo/PojoMessageHandlerPartialBase.java        |    6 +-
 .../pojo/PojoMessageHandlerPartialBinary.java      |    2 +-
 .../pojo/PojoMessageHandlerPartialText.java        |    2 +-
 .../pojo/PojoMessageHandlerWholeBase.java          |    6 +-
 .../pojo/PojoMessageHandlerWholeBinary.java        |   12 +-
 .../pojo/PojoMessageHandlerWholePong.java          |    4 +-
 .../pojo/PojoMessageHandlerWholeText.java          |   12 +-
 .../tomcat/websocket/pojo/PojoMethodMapping.java   |   28 +-
 .../tomcat/websocket/pojo/PojoPathParam.java       |    8 +-
 .../apache/tomcat/websocket/pojo/package-info.java |    2 +-
 .../apache/tomcat/websocket/server/Constants.java  |    2 +-
 .../server/DefaultServerEndpointConfigurator.java  |    8 +-
 .../tomcat/websocket/server/UpgradeUtil.java       |   18 +-
 .../tomcat/websocket/server/UriTemplate.java       |    2 +-
 .../tomcat/websocket/server/WsContextListener.java |    6 +-
 .../apache/tomcat/websocket/server/WsFilter.java   |   14 +-
 .../websocket/server/WsHandshakeRequest.java       |    4 +-
 .../websocket/server/WsHttpUpgradeHandler.java     |   16 +-
 .../tomcat/websocket/server/WsMappingResult.java   |    2 +-
 .../server/WsPerSessionServerEndpointConfig.java   |    8 +-
 .../server/WsRemoteEndpointImplServer.java         |    8 +-
 java/org/apache/tomcat/websocket/server/WsSci.java |   22 +-
 .../tomcat/websocket/server/WsServerContainer.java |   28 +-
 .../tomcat/websocket/server/WsSessionListener.java |    4 +-
 .../tomcat/websocket/server/WsWriteTimeout.java    |    4 +-
 modules/cxf/pom.xml                                |    4 +-
 .../web/tomcat/OpenWebBeansSecurityFilter.java     |   12 +-
 .../web/tomcat/OpenWebBeansSecurityValve.java      |    2 +-
 .../apache/webbeans/web/tomcat/TomcatPlugin.java   |   20 +-
 .../webbeans/web/tomcat/TomcatSecurityService.java |    2 +-
 res/META-INF/annotations-api.jar.manifest          |   12 +-
 res/META-INF/el-api.jar.manifest                   |   12 +-
 ...=> jakarta.servlet.ServletContainerInitializer} |    0
 res/META-INF/jaspic-api.jar.manifest               |   14 +-
 res/META-INF/jsp-api.jar.manifest                  |   12 +-
 res/META-INF/servlet-api.jar.manifest              |   12 +-
 ...=> jakarta.servlet.ServletContainerInitializer} |    0
 ...rovider => jakarta.websocket.ContainerProvider} |    0
 ...ocket.server.ServerEndpointConfig$Configurator} |    0
 res/META-INF/websocket-api.jar.manifest            |   12 +-
 res/bnd/annotations-api.jar.tmp.bnd                |    6 +-
 res/bnd/el-api.jar.tmp.bnd                         |    2 +-
 res/bnd/jaspic-api.jar.tmp.bnd                     |    8 +-
 res/bnd/jsp-api.jar.tmp.bnd                        |    8 +-
 res/bnd/servlet-api.jar.tmp.bnd                    |   10 +-
 res/bnd/tomcat-embed-core.jar.tmp.bnd              |   18 +-
 res/bnd/tomcat-embed-el.jar.tmp.bnd                |    2 +-
 res/bnd/tomcat-embed-jasper.jar.tmp.bnd            |    8 +-
 res/bnd/tomcat-embed-websocket.jar.tmp.bnd         |    4 +-
 res/bnd/websocket-api.jar.tmp.bnd                  |    4 +-
 res/checkstyle/checkstyle.xml                      |    2 +-
 res/checkstyle/jakarta-checkstyle.xml              |   37 +
 res/checkstyle/jakarta-import-control.xml          |   75 +
 res/checkstyle/javax-import-control.xml            |   50 -
 res/checkstyle/org-import-control.xml              |   53 +-
 res/findbugs/filter-false-positives.xml            |   18 +-
 res/maven/tomcat-jaspic-api.pom                    |    2 +-
 res/maven/tomcat-servlet-api.pom                   |    2 +-
 res/rat/rat-excludes.txt                           |  126 +-
 res/tomcat-maven/pom.xml                           |    2 +-
 res/tomcat-maven/tomcat-reflection.json            |    2 +-
 res/tomcat-maven/tomcat-resource.json              |    6 +-
 ...=> jakarta.servlet.ServletContainerInitializer} |    0
 test/jakarta/el/TestArrayELResolver.java           |  554 ++
 test/jakarta/el/TestBeanELResolver.java            |  988 +++
 .../el/TestBeanELResolverVarargsInvocation.java    |  122 +
 test/jakarta/el/TestBeanNameELResolver.java        |  615 ++
 test/jakarta/el/TestCompositeELResolver.java       |   40 +
 test/jakarta/el/TestELContext.java                 |  175 +
 test/jakarta/el/TestELProcessor.java               |  211 +
 test/jakarta/el/TestELResolver.java                |  143 +
 test/jakarta/el/TestEvaluationListener.java        |  134 +
 test/jakarta/el/TestImportHandler.java             |  273 +
 .../el/TestImportHandlerStandardPackages.java      |  163 +
 test/jakarta/el/TestListELResolver.java            |  388 +
 test/jakarta/el/TestMapELResolver.java             |  318 +
 test/jakarta/el/TestResourceBundleELResolver.java  |  327 +
 test/jakarta/el/TestStaticFieldELResolver.java     |  489 ++
 test/jakarta/el/TestUtil.java                      |   56 +
 test/jakarta/el/TesterBean.java                    |   65 +
 test/jakarta/el/TesterBeanNameResolver.java        |   83 +
 test/jakarta/el/TesterClass.java                   |   47 +
 test/jakarta/el/TesterELContext.java               |   45 +
 test/jakarta/el/TesterELResolverOne.java           |   29 +
 test/jakarta/el/TesterELResolverTwo.java           |   29 +
 test/jakarta/el/TesterEvaluationListener.java      |   80 +
 test/jakarta/el/TesterFunctions.java               |   66 +
 .../jakarta/el/TesterImportHandlerPerformance.java |   49 +
 .../servlet/annotation/TestServletSecurity.java    |  108 +
 .../annotation/TestServletSecurityMappings.java    |  247 +
 test/jakarta/servlet/http/TestCookie.java          |  153 +
 .../servlet/http/TestCookieRFC2109Validator.java   |   37 +
 .../servlet/http/TestCookieRFC6265Validator.java   |   40 +
 test/jakarta/servlet/http/TestCookieStrict.java    |   44 +
 test/jakarta/servlet/http/TestHttpServlet.java     |  207 +
 .../http/TestHttpServletResponseSendError.java     |  366 +
 test/jakarta/servlet/jsp/TestPageContext.java      |   37 +
 test/jakarta/servlet/jsp/TesterPageContext.java    |  195 +
 .../jsp/el/TestScopedAttributeELResolver.java      |   41 +
 .../TestScopedAttributeELResolverPerformance.java  |   47 +
 .../servlet/resources/TestSchemaValidation.java    |  146 +
 .../TesterContainerProviderPerformance.java        |   55 +
 test/javax/el/TestArrayELResolver.java             |  554 --
 test/javax/el/TestBeanELResolver.java              |  988 ---
 .../el/TestBeanELResolverVarargsInvocation.java    |  122 -
 test/javax/el/TestBeanNameELResolver.java          |  615 --
 test/javax/el/TestCompositeELResolver.java         |   38 -
 test/javax/el/TestELContext.java                   |  175 -
 test/javax/el/TestELProcessor.java                 |  211 -
 test/javax/el/TestELResolver.java                  |  143 -
 test/javax/el/TestEvaluationListener.java          |  134 -
 test/javax/el/TestImportHandler.java               |  273 -
 .../el/TestImportHandlerStandardPackages.java      |  163 -
 test/javax/el/TestListELResolver.java              |  388 -
 test/javax/el/TestMapELResolver.java               |  318 -
 test/javax/el/TestResourceBundleELResolver.java    |  327 -
 test/javax/el/TestStaticFieldELResolver.java       |  489 --
 test/javax/el/TestUtil.java                        |   56 -
 test/javax/el/TesterBean.java                      |   65 -
 test/javax/el/TesterBeanNameResolver.java          |   83 -
 test/javax/el/TesterClass.java                     |   47 -
 test/javax/el/TesterELContext.java                 |   45 -
 test/javax/el/TesterELResolverOne.java             |   29 -
 test/javax/el/TesterELResolverTwo.java             |   29 -
 test/javax/el/TesterEvaluationListener.java        |   80 -
 test/javax/el/TesterFunctions.java                 |   66 -
 test/javax/el/TesterImportHandlerPerformance.java  |   49 -
 .../servlet/annotation/TestServletSecurity.java    |  108 -
 .../annotation/TestServletSecurityMappings.java    |  247 -
 test/javax/servlet/http/TestCookie.java            |  153 -
 .../servlet/http/TestCookieRFC2109Validator.java   |   37 -
 .../servlet/http/TestCookieRFC6265Validator.java   |   40 -
 test/javax/servlet/http/TestCookieStrict.java      |   44 -
 test/javax/servlet/http/TestHttpServlet.java       |  207 -
 .../http/TestHttpServletResponseSendError.java     |  366 -
 test/javax/servlet/jsp/TestPageContext.java        |   37 -
 test/javax/servlet/jsp/TesterPageContext.java      |  195 -
 .../jsp/el/TestScopedAttributeELResolver.java      |   39 -
 .../TestScopedAttributeELResolverPerformance.java  |   47 -
 .../servlet/resources/TestSchemaValidation.java    |  146 -
 .../TesterContainerProviderPerformance.java        |   55 -
 .../authenticator/TestAuthInfoResponseHeaders.java |    2 +-
 .../authenticator/TestFormAuthenticator.java       |    8 +-
 .../TestJaspicCallbackHandlerInAuthenticator.java  |    3 +-
 .../TestNonLoginAndBasicAuthenticator.java         |    2 +-
 .../TestSSOnonLoginAndBasicAuthenticator.java      |    2 +-
 .../TesterDigestAuthenticatorPerformance.java      |    2 +-
 .../jaspic/TestAuthConfigFactoryImpl.java          |    6 +-
 .../jaspic/TestSimpleServerAuthConfig.java         |    8 +-
 .../authenticator/jaspic/TesterMessageInfo.java    |    2 +-
 .../jaspic/TesterServerAuthModuleA.java            |   11 +-
 .../apache/catalina/connector/TestConnector.java   |    2 +-
 .../catalina/connector/TestCoyoteAdapter.java      |   10 +-
 .../catalina/connector/TestCoyoteInputStream.java  |    8 +-
 .../catalina/connector/TestCoyoteOutputStream.java |   14 +-
 .../apache/catalina/connector/TestInputBuffer.java |    8 +-
 .../catalina/connector/TestKeepAliveCount.java     |    8 +-
 .../catalina/connector/TestMaxConnections.java     |    8 +-
 .../catalina/connector/TestOutputBuffer.java       |    8 +-
 .../org/apache/catalina/connector/TestRequest.java |    8 +-
 .../apache/catalina/connector/TestResponse.java    |   10 +-
 .../apache/catalina/connector/TestSendFile.java    |    8 +-
 .../catalina/core/TestApplicationContext.java      |   18 +-
 ...TestApplicationContextGetRequestDispatcher.java |   12 +-
 ...estApplicationContextGetRequestDispatcherB.java |   42 +-
 .../catalina/core/TestApplicationHttpRequest.java  |    8 +-
 .../catalina/core/TestApplicationMapping.java      |   14 +-
 .../apache/catalina/core/TestAsyncContextImpl.java |   38 +-
 .../core/TestAsyncContextImplDispatch.java         |   10 +-
 .../core/TestAsyncContextStateChanges.java         |   18 +-
 .../catalina/core/TestNamingContextListener.java   |    5 +-
 .../apache/catalina/core/TestStandardContext.java  |   42 +-
 .../catalina/core/TestStandardContextAliases.java  |   10 +-
 .../core/TestStandardContextResources.java         |   10 +-
 .../catalina/core/TestStandardContextValve.java    |   12 +-
 .../catalina/core/TestStandardHostValve.java       |   12 +-
 .../apache/catalina/core/TestStandardWrapper.java  |   28 +-
 .../catalina/core/TestSwallowAbortedUploads.java   |   14 +-
 .../apache/catalina/core/TesterTldListener.java    |    6 +-
 .../catalina/filters/TestAddCharSetFilter.java     |    8 +-
 .../apache/catalina/filters/TestCorsFilter.java    |   12 +-
 .../catalina/filters/TestCsrfPreventionFilter.java |    2 +-
 .../apache/catalina/filters/TestExpiresFilter.java |    8 +-
 .../catalina/filters/TestRemoteIpFilter.java       |   14 +-
 .../filters/TestRestCsrfPreventionFilter.java      |   12 +-
 .../filters/TestRestCsrfPreventionFilter2.java     |    8 +-
 .../apache/catalina/filters/TesterFilterChain.java |    8 +-
 .../catalina/filters/TesterFilterConfigs.java      |    4 +-
 .../catalina/filters/TesterHttpServletRequest.java |   32 +-
 .../filters/TesterHttpServletResponse.java         |    8 +-
 .../catalina/ha/context/TestReplicatedContext.java |    8 +-
 test/org/apache/catalina/loader/EchoTag.java       |    4 +-
 .../apache/catalina/loader/MyAnnotatedServlet.java |   10 +-
 .../catalina/loader/TestWebappClassLoader.java     |   11 +-
 .../TestWebappClassLoaderExecutorMemoryLeak.java   |    8 +-
 .../loader/TestWebappClassLoaderMemoryLeak.java    |    8 +-
 ...TestWebappClassLoaderThreadLocalMemoryLeak.java |    2 +-
 .../apache/catalina/mapper/TestMapperWebapps.java  |    8 +-
 .../catalina/nonblocking/TestNonBlockingAPI.java   |   25 +-
 .../nonblocking/TesterAjpNonBlockingClient.java    |    3 +-
 test/org/apache/catalina/realm/TestRealmBase.java  |    6 +-
 .../catalina/realm/TesterServletSecurity01.java    |    6 +-
 .../servlets/DefaultServletEncodingBaseTest.java   |   10 +-
 .../catalina/servlets/ServletOptionsBaseTest.java  |    2 +-
 .../catalina/servlets/TestDefaultServlet.java      |    2 +-
 .../servlets/TestDefaultServletOptions.java        |    2 +-
 .../catalina/servlets/TestWebdavServlet.java       |    2 +-
 .../servlets/TestWebdavServletOptions.java         |    2 +-
 .../catalina/session/TestPersistentManager.java    |    6 +-
 .../session/TestPersistentManagerIntegration.java  |   10 +-
 .../session/TestStandardSessionIntegration.java    |   10 +-
 .../startup/DuplicateMappingParamFilter.java       |   12 +-
 .../startup/DuplicateMappingParamServlet.java      |   12 +-
 .../catalina/startup/NoMappingParamServlet.java    |   12 +-
 test/org/apache/catalina/startup/ParamFilter.java  |   16 +-
 test/org/apache/catalina/startup/ParamServlet.java |   12 +-
 .../apache/catalina/startup/TestContextConfig.java |   16 +-
 .../startup/TestContextConfigAnnotation.java       |   10 +-
 test/org/apache/catalina/startup/TestListener.java |   10 +-
 test/org/apache/catalina/startup/TestTomcat.java   |    9 +-
 .../catalina/startup/TestTomcatClassLoader.java    |    8 +-
 .../catalina/startup/TestWebappServiceLoader.java  |    6 +-
 .../org/apache/catalina/startup/TesterServlet.java |    8 +-
 .../TesterServletContainerInitializer1.java        |   10 +-
 .../TesterServletContainerInitializer2.java        |   10 +-
 .../catalina/startup/TesterServletEncodeUrl.java   |    8 +-
 .../startup/TesterServletWithAnnotations.java      |   10 +-
 .../startup/TesterServletWithLifeCycleMethods.java |   12 +-
 .../apache/catalina/startup/TomcatBaseTest.java    |   12 +-
 .../valves/TestCrawlerSessionManagerValve.java     |    6 +-
 .../catalina/valves/TestErrorReportValve.java      |   16 +-
 .../valves/TestLoadBalancerDrainingValve.java      |    6 +-
 .../apache/catalina/valves/TestRemoteIpValve.java  |    2 +-
 .../catalina/valves/TestRequestFilterValve.java    |    2 +-
 .../valves/TestStuckThreadDetectionValve.java      |    6 +-
 .../catalina/valves/TesterAccessLogValve.java      |    2 +-
 .../catalina/webresources/TestFileResource.java    |    2 +-
 test/org/apache/coyote/TestIoTimeouts.java         |   18 +-
 test/org/apache/coyote/TestResponse.java           |    8 +-
 .../coyote/ajp/TestAbstractAjpProcessor.java       |   10 +-
 .../coyote/http11/TestHttp11InputBuffer.java       |    8 +-
 .../apache/coyote/http11/TestHttp11Processor.java  |   14 +-
 .../http11/filters/TestChunkedInputFilter.java     |    8 +-
 .../apache/coyote/http11/upgrade/TestUpgrade.java  |   21 +-
 .../http11/upgrade/TestUpgradeInternalHandler.java |   13 +-
 test/org/apache/coyote/http2/Http2TestBase.java    |    9 +-
 .../org/apache/coyote/http2/TestAbortedUpload.java |    6 +-
 test/org/apache/coyote/http2/TestAsync.java        |   12 +-
 test/org/apache/coyote/http2/TestAsyncFlush.java   |   12 +-
 test/org/apache/coyote/http2/TestAsyncTimeout.java |   12 +-
 test/org/apache/coyote/http2/TestStream.java       |    8 +-
 .../apache/coyote/http2/TestStreamProcessor.java   |   10 +-
 .../apache/coyote/http2/TestStreamQueryString.java |    8 +-
 test/org/apache/el/TestELEvaluation.java           |    4 +-
 test/org/apache/el/TestELInJsp.java                |   14 +-
 test/org/apache/el/TestMethodExpressionImpl.java   |   10 +-
 test/org/apache/el/TestValueExpressionImpl.java    |    8 +-
 test/org/apache/el/TesterFunctions.java            |    2 +-
 test/org/apache/el/lang/TestELArithmetic.java      |    2 +-
 test/org/apache/el/lang/TestELSupport.java         |    4 +-
 .../apache/el/lang/TesterVariableMapperImpl.java   |   12 +-
 test/org/apache/el/parser/TestAstAnd.java          |    2 +-
 test/org/apache/el/parser/TestAstAssign.java       |   10 +-
 test/org/apache/el/parser/TestAstChoice.java       |    2 +-
 .../org/apache/el/parser/TestAstConcatenation.java |   10 +-
 test/org/apache/el/parser/TestAstFunction.java     |    2 +-
 test/org/apache/el/parser/TestAstIdentifier.java   |    2 +-
 .../apache/el/parser/TestAstLambdaExpression.java  |    6 +-
 test/org/apache/el/parser/TestAstListData.java     |   10 +-
 test/org/apache/el/parser/TestAstMapData.java      |   10 +-
 test/org/apache/el/parser/TestAstNot.java          |    2 +-
 test/org/apache/el/parser/TestAstOr.java           |    2 +-
 test/org/apache/el/parser/TestAstSemicolon.java    |   10 +-
 test/org/apache/el/parser/TestAstSetData.java      |   10 +-
 test/org/apache/el/parser/TestELParser.java        |    8 +-
 .../apache/el/stream/TestCollectionOperations.java |    4 +-
 test/org/apache/el/util/TestReflectionUtil.java    |    2 +-
 .../apache/jasper/TestJspCompilationContext.java   |    2 +-
 .../jasper/compiler/TestAttributeParser.java       |    2 +-
 .../jasper/compiler/TestELInterpreterFactory.java  |    6 +-
 test/org/apache/jasper/compiler/TestELParser.java  |   10 +-
 test/org/apache/jasper/compiler/TestGenerator.java |   12 +-
 .../jasper/compiler/TestJspDocumentParser.java     |    3 +-
 test/org/apache/jasper/compiler/TestParser.java    |    3 +
 .../jasper/compiler/TestScriptingVariabler.java    |    8 +-
 .../jasper/compiler/TestTagLibraryInfoImpl.java    |    2 +-
 .../jasper/compiler/TestTagPluginManager.java      |    6 +-
 test/org/apache/jasper/compiler/TestValidator.java |    6 +-
 test/org/apache/jasper/compiler/TesterTag.java     |    2 +-
 .../org/apache/jasper/el/TestJasperELResolver.java |    4 +-
 .../jasper/runtime/TestCustomHttpJspPage.java      |    2 +-
 .../jasper/runtime/TestJspContextWrapper.java      |   10 +-
 .../apache/jasper/runtime/TestJspWriterImpl.java   |    2 +-
 .../apache/jasper/runtime/TestPageContextImpl.java |   14 +-
 .../runtime/TestTagHandlerPoolPerformance.java     |    4 +-
 .../apache/jasper/runtime/TesterHttpJspBase.java   |   16 +-
 .../jasper/servlet/TestJspCServletContext.java     |    4 +-
 test/org/apache/jasper/servlet/TestJspServlet.java |    8 +-
 .../jasper/tagplugins/jstl/core/TestForEach.java   |    5 +-
 .../jasper/tagplugins/jstl/core/TestOut.java       |    5 +-
 .../jasper/tagplugins/jstl/core/TestSet.java       |    5 +-
 test/org/apache/naming/TestEnvEntry.java           |    2 +-
 test/org/apache/naming/TesterInjectionServlet.java |    8 +-
 .../apache/naming/resources/TestNamingContext.java |    9 +-
 test/org/apache/tomcat/unittest/TesterContext.java |   13 +-
 .../tomcat/unittest/TesterLeakingServlet1.java     |    8 +-
 .../tomcat/unittest/TesterLeakingServlet2.java     |    8 +-
 test/org/apache/tomcat/unittest/TesterRequest.java |    4 +-
 .../tomcat/unittest/TesterServletContext.java      |   28 +-
 .../tomcat/unittest/TesterSessionCookieConfig.java |    2 +-
 test/org/apache/tomcat/unittest/tags/Bug53545.java |    2 +-
 .../tomcat/util/descriptor/TestLocalResolver.java  |    2 +-
 .../tomcat/util/descriptor/tld/TestTldParser.java  |   14 +-
 .../web/TestJspConfigDescriptorImpl.java           |    6 +-
 .../descriptor/web/TestSecurityConstraint.java     |   10 +-
 .../apache/tomcat/util/http/CookiesBaseTest.java   |    8 +-
 test/org/apache/tomcat/util/http/TestBug49158.java |   10 +-
 .../apache/tomcat/util/http/TestCookieParsing.java |   10 +-
 .../util/http/TestCookieProcessorGeneration.java   |    2 +-
 .../http/TestCookieProcessorGenerationHttp.java    |   10 +-
 test/org/apache/tomcat/util/http/TestCookies.java  |    2 +-
 .../util/http/TestCookiesDefaultSysProps.java      |    2 +-
 .../util/http/TestCookiesNoFwdStrictSysProps.java  |    2 +-
 .../http/TestCookiesNoStrictNamingSysProps.java    |    2 +-
 .../util/http/TestCookiesStrictSysProps.java       |    2 +-
 .../util/http/TestMimeHeadersIntegration.java      |    8 +-
 .../util/http/TestRequestUtilSameOrigin.java       |    4 +-
 test/org/apache/tomcat/util/net/TesterSupport.java |    9 +-
 .../tomcat/websocket/TestConnectionLimit.java      |    8 +-
 .../tomcat/websocket/TestPerMessageDeflate.java    |    4 +-
 test/org/apache/tomcat/websocket/TestUtil.java     |   12 +-
 .../tomcat/websocket/TestWebSocketFrameClient.java |   10 +-
 .../websocket/TestWebSocketFrameClientSSL.java     |   10 +-
 .../tomcat/websocket/TestWsPingPongMessages.java   |   10 +-
 .../tomcat/websocket/TestWsRemoteEndpoint.java     |   10 +-
 .../websocket/TestWsSessionSuspendResume.java      |   16 +-
 .../tomcat/websocket/TestWsSubprotocols.java       |   16 +-
 .../tomcat/websocket/TestWsWebSocketContainer.java |   32 +-
 .../TestWsWebSocketContainerGetOpenSessions.java   |   28 +-
 .../apache/tomcat/websocket/TesterAsyncTiming.java |   12 +-
 .../tomcat/websocket/TesterBlockWebSocketSCI.java  |    6 +-
 .../apache/tomcat/websocket/TesterEchoServer.java  |   12 +-
 .../tomcat/websocket/TesterFirehoseServer.java     |   14 +-
 .../tomcat/websocket/TesterMessageCountClient.java |   18 +-
 .../tomcat/websocket/TesterWsClientAutobahn.java   |   20 +-
 .../websocket/pojo/TestEncodingDecoding.java       |   38 +-
 .../websocket/pojo/TestPojoEndpointBase.java       |   18 +-
 .../websocket/pojo/TestPojoMethodMapping.java      |   16 +-
 .../apache/tomcat/websocket/pojo/TesterUtil.java   |    4 +-
 .../tomcat/websocket/server/TestAsyncMessages.java |   10 +-
 .../tomcat/websocket/server/TestClassLoader.java   |   14 +-
 .../apache/tomcat/websocket/server/TestClose.java  |   18 +-
 .../tomcat/websocket/server/TestCloseBug58624.java |   26 +-
 .../tomcat/websocket/server/TestShutdown.java      |   16 +-
 .../server/TestWsRemoteEndpointImplServer.java     |   24 +-
 .../websocket/server/TestWsServerContainer.java    |   12 +-
 .../websocket/server/TesterEndpointConfig.java     |    8 +-
 .../tomcat/websocket/server/TesterWsClient.java    |    2 +-
 test/util/a/Foo.java                               |    2 +-
 test/util/b/Foo.java                               |    2 +-
 test/webapp-fragments/WEB-INF/lib/resources.jar    |  Bin 20061 -> 19989 bytes
 test/webapp/WEB-INF/tags/bug43400.tag              |    2 +-
 test/webapp/annotations.jsp                        |    2 +-
 test/webapp/bug5nnnn/bug58178c.jsp                 |   10 +-
 .../docs/appdev/sample/src/mypackage/Hello.java    |    8 +-
 webapps/docs/changelog.xml                         | 8934 +-------------------
 webapps/docs/class-loader-howto.xml                |   12 +-
 webapps/docs/config/context.xml                    |    4 +-
 webapps/docs/config/cookie-processor.xml           |    4 +-
 webapps/docs/config/filter.xml                     |    4 +-
 webapps/docs/config/host.xml                       |    2 +-
 webapps/docs/config/systemprops.xml                |    6 +-
 webapps/docs/config/valve.xml                      |    2 +-
 webapps/docs/funcspecs/fs-default.xml              |    2 +-
 webapps/docs/graal.xml                             |    2 +-
 webapps/docs/index.xml                             |    6 +-
 webapps/docs/jndi-resources-howto.xml              |   12 +-
 webapps/docs/logging.xml                           |    6 +-
 webapps/docs/manager-howto.xml                     |    4 +-
 webapps/docs/project.xml                           |   12 +-
 webapps/docs/ssi-howto.xml                         |    2 +-
 webapps/docs/ssl-howto.xml                         |   12 +-
 webapps/docs/web-socket-howto.xml                  |    6 +-
 .../examples/WEB-INF/classes/CookieExample.java    |   12 +-
 .../WEB-INF/classes/HelloWorldExample.java         |    8 +-
 .../WEB-INF/classes/RequestHeaderExample.java      |   10 +-
 .../WEB-INF/classes/RequestInfoExample.java        |   10 +-
 .../WEB-INF/classes/RequestParamExample.java       |    8 +-
 webapps/examples/WEB-INF/classes/ServletToJsp.java |    6 +-
 .../examples/WEB-INF/classes/SessionExample.java   |   10 +-
 webapps/examples/WEB-INF/classes/async/Async0.java |   10 +-
 webapps/examples/WEB-INF/classes/async/Async1.java |   10 +-
 webapps/examples/WEB-INF/classes/async/Async2.java |   10 +-
 webapps/examples/WEB-INF/classes/async/Async3.java |   10 +-
 .../classes/async/AsyncStockContextListener.java   |    6 +-
 .../WEB-INF/classes/async/AsyncStockServlet.java   |   16 +-
 webapps/examples/WEB-INF/classes/cal/Entries.java  |    2 +-
 .../examples/WEB-INF/classes/cal/TableBean.java    |    2 +-
 .../compressionFilters/CompressionFilter.java      |   16 +-
 .../CompressionFilterTestServlet.java              |   10 +-
 .../CompressionResponseStream.java                 |    4 +-
 .../CompressionServletResponseWrapper.java         |    6 +-
 .../WEB-INF/classes/examples/ExampleTagBase.java   |    8 +-
 .../examples/WEB-INF/classes/examples/FooTag.java  |    4 +-
 .../WEB-INF/classes/examples/FooTagExtraInfo.java  |    6 +-
 .../examples/WEB-INF/classes/examples/LogTag.java  |    4 +-
 .../WEB-INF/classes/examples/ValuesTag.java        |    8 +-
 .../WEB-INF/classes/filters/ExampleFilter.java     |   10 +-
 .../WEB-INF/classes/http2/SimpleImagePush.java     |   10 +-
 .../jsp2/examples/simpletag/EchoAttributesTag.java |    8 +-
 .../jsp2/examples/simpletag/FindBookSimpleTag.java |    4 +-
 .../examples/simpletag/HelloWorldSimpleTag.java    |    4 +-
 .../jsp2/examples/simpletag/RepeatSimpleTag.java   |    4 +-
 .../jsp2/examples/simpletag/ShuffleSimpleTag.java  |    6 +-
 .../jsp2/examples/simpletag/TileSimpleTag.java     |    4 +-
 .../WEB-INF/classes/listeners/ContextListener.java |   10 +-
 .../WEB-INF/classes/listeners/SessionListener.java |   14 +-
 .../WEB-INF/classes/nonblocking/ByteCounter.java   |   18 +-
 .../WEB-INF/classes/nonblocking/NumberWriter.java  |   18 +-
 .../WEB-INF/classes/trailers/ResponseTrailers.java |    8 +-
 .../WEB-INF/classes/validators/DebugValidator.java |    6 +-
 .../WEB-INF/classes/websocket/ExamplesConfig.java  |    6 +-
 .../classes/websocket/chat/ChatAnnotation.java     |   12 +-
 .../classes/websocket/drawboard/Client.java        |   12 +-
 .../drawboard/DrawboardContextListener.java        |    4 +-
 .../websocket/drawboard/DrawboardEndpoint.java     |   10 +-
 .../classes/websocket/echo/EchoAnnotation.java     |    8 +-
 .../websocket/echo/EchoAsyncAnnotation.java        |    8 +-
 .../classes/websocket/echo/EchoEndpoint.java       |   10 +-
 .../websocket/echo/EchoStreamAnnotation.java       |    8 +-
 .../WEB-INF/classes/websocket/snake/Snake.java     |    6 +-
 .../classes/websocket/snake/SnakeAnnotation.java   |   12 +-
 webapps/examples/servlets/cookies.html             |    4 +-
 webapps/examples/servlets/helloworld.html          |    4 +-
 webapps/examples/servlets/reqheaders.html          |    4 +-
 webapps/examples/servlets/reqinfo.html             |    4 +-
 webapps/examples/servlets/reqparams.html           |    4 +-
 webapps/examples/servlets/sessions.html            |    4 +-
 webapps/host-manager/WEB-INF/jsp/404.jsp           |    2 +-
 webapps/manager/WEB-INF/jsp/404.jsp                |    2 +-
 webapps/manager/WEB-INF/jsp/sessionDetail.jsp      |    2 +-
 1390 files changed, 40215 insertions(+), 48973 deletions(-)
 create mode 100644 java/jakarta/annotation/Generated.java
 create mode 100644 java/jakarta/annotation/ManagedBean.java
 create mode 100644 java/jakarta/annotation/PostConstruct.java
 create mode 100644 java/jakarta/annotation/PreDestroy.java
 create mode 100644 java/jakarta/annotation/Priority.java
 create mode 100644 java/jakarta/annotation/Resource.java
 create mode 100644 java/jakarta/annotation/Resources.java
 create mode 100644 java/jakarta/annotation/security/DeclareRoles.java
 create mode 100644 java/jakarta/annotation/security/DenyAll.java
 create mode 100644 java/jakarta/annotation/security/PermitAll.java
 create mode 100644 java/jakarta/annotation/security/RolesAllowed.java
 create mode 100644 java/jakarta/annotation/security/RunAs.java
 create mode 100644 java/jakarta/annotation/sql/DataSourceDefinition.java
 create mode 100644 java/jakarta/annotation/sql/DataSourceDefinitions.java
 create mode 100644 java/jakarta/ejb/EJB.java
 create mode 100644 java/jakarta/ejb/EJBs.java
 create mode 100644 java/jakarta/el/ArrayELResolver.java
 create mode 100644 java/jakarta/el/BeanELResolver.java
 create mode 100644 java/jakarta/el/BeanNameELResolver.java
 create mode 100644 java/jakarta/el/BeanNameResolver.java
 create mode 100644 java/jakarta/el/CompositeELResolver.java
 create mode 100644 java/jakarta/el/ELClass.java
 create mode 100644 java/jakarta/el/ELContext.java
 create mode 100644 java/jakarta/el/ELContextEvent.java
 create mode 100644 java/jakarta/el/ELContextListener.java
 create mode 100644 java/jakarta/el/ELException.java
 create mode 100644 java/jakarta/el/ELManager.java
 create mode 100644 java/jakarta/el/ELProcessor.java
 create mode 100644 java/jakarta/el/ELResolver.java
 create mode 100644 java/jakarta/el/EvaluationListener.java
 create mode 100644 java/jakarta/el/Expression.java
 create mode 100644 java/jakarta/el/ExpressionFactory.java
 create mode 100644 java/jakarta/el/FunctionMapper.java
 create mode 100644 java/jakarta/el/ImportHandler.java
 create mode 100644 java/jakarta/el/Jre9Compat.java
 create mode 100644 java/jakarta/el/JreCompat.java
 create mode 100644 java/jakarta/el/LambdaExpression.java
 create mode 100644 java/jakarta/el/ListELResolver.java
 rename java/{javax => jakarta}/el/LocalStrings.properties (100%)
 rename java/{javax => jakarta}/el/LocalStrings_cs.properties (100%)
 rename java/{javax => jakarta}/el/LocalStrings_de.properties (100%)
 rename java/{javax => jakarta}/el/LocalStrings_es.properties (100%)
 rename java/{javax => jakarta}/el/LocalStrings_fr.properties (100%)
 rename java/{javax => jakarta}/el/LocalStrings_ja.properties (100%)
 rename java/{javax => jakarta}/el/LocalStrings_ko.properties (100%)
 rename java/{javax => jakarta}/el/LocalStrings_pt_BR.properties (100%)
 rename java/{javax => jakarta}/el/LocalStrings_zh_CN.properties (100%)
 create mode 100644 java/jakarta/el/MapELResolver.java
 create mode 100644 java/jakarta/el/MethodExpression.java
 create mode 100644 java/jakarta/el/MethodInfo.java
 create mode 100644 java/jakarta/el/MethodNotFoundException.java
 create mode 100644 java/jakarta/el/PropertyNotFoundException.java
 create mode 100644 java/jakarta/el/PropertyNotWritableException.java
 create mode 100644 java/jakarta/el/ResourceBundleELResolver.java
 create mode 100644 java/jakarta/el/StandardELContext.java
 create mode 100644 java/jakarta/el/StaticFieldELResolver.java
 create mode 100644 java/jakarta/el/TypeConverter.java
 create mode 100644 java/jakarta/el/Util.java
 create mode 100644 java/jakarta/el/ValueExpression.java
 create mode 100644 java/jakarta/el/ValueReference.java
 create mode 100644 java/jakarta/el/VariableMapper.java
 create mode 100644 java/jakarta/mail/Authenticator.java
 create mode 100644 java/jakarta/mail/PasswordAuthentication.java
 create mode 100644 java/jakarta/mail/Session.java
 create mode 100644 java/jakarta/mail/internet/InternetAddress.java
 create mode 100644 java/jakarta/mail/internet/MimeMessage.java
 create mode 100644 java/jakarta/mail/internet/MimePart.java
 create mode 100644 java/jakarta/mail/internet/MimePartDataSource.java
 create mode 100644 java/jakarta/persistence/PersistenceContext.java
 create mode 100644 java/jakarta/persistence/PersistenceContextType.java
 create mode 100644 java/jakarta/persistence/PersistenceContexts.java
 create mode 100644 java/jakarta/persistence/PersistenceProperty.java
 create mode 100644 java/jakarta/persistence/PersistenceUnit.java
 create mode 100644 java/jakarta/persistence/PersistenceUnits.java
 create mode 100644 java/jakarta/persistence/SynchronizationType.java
 create mode 100644 java/jakarta/security/auth/message/AuthException.java
 create mode 100644 java/jakarta/security/auth/message/AuthStatus.java
 create mode 100644 java/jakarta/security/auth/message/ClientAuth.java
 create mode 100644 java/jakarta/security/auth/message/MessageInfo.java
 create mode 100644 java/jakarta/security/auth/message/MessagePolicy.java
 create mode 100644 java/jakarta/security/auth/message/ServerAuth.java
 create mode 100644 java/jakarta/security/auth/message/callback/CallerPrincipalCallback.java
 create mode 100644 java/jakarta/security/auth/message/callback/CertStoreCallback.java
 create mode 100644 java/jakarta/security/auth/message/callback/GroupPrincipalCallback.java
 create mode 100644 java/jakarta/security/auth/message/callback/PasswordValidationCallback.java
 create mode 100644 java/jakarta/security/auth/message/callback/PrivateKeyCallback.java
 create mode 100644 java/jakarta/security/auth/message/callback/SecretKeyCallback.java
 create mode 100644 java/jakarta/security/auth/message/callback/TrustStoreCallback.java
 create mode 100644 java/jakarta/security/auth/message/config/AuthConfig.java
 create mode 100644 java/jakarta/security/auth/message/config/AuthConfigFactory.java
 create mode 100644 java/jakarta/security/auth/message/config/AuthConfigProvider.java
 create mode 100644 java/jakarta/security/auth/message/config/ClientAuthConfig.java
 create mode 100644 java/jakarta/security/auth/message/config/ClientAuthContext.java
 create mode 100644 java/jakarta/security/auth/message/config/RegistrationListener.java
 create mode 100644 java/jakarta/security/auth/message/config/ServerAuthConfig.java
 create mode 100644 java/jakarta/security/auth/message/config/ServerAuthContext.java
 create mode 100644 java/jakarta/security/auth/message/module/ClientAuthModule.java
 create mode 100644 java/jakarta/security/auth/message/module/ServerAuthModule.java
 create mode 100644 java/jakarta/servlet/AsyncContext.java
 create mode 100644 java/jakarta/servlet/AsyncEvent.java
 create mode 100644 java/jakarta/servlet/AsyncListener.java
 create mode 100644 java/jakarta/servlet/DispatcherType.java
 create mode 100644 java/jakarta/servlet/Filter.java
 create mode 100644 java/jakarta/servlet/FilterChain.java
 create mode 100644 java/jakarta/servlet/FilterConfig.java
 create mode 100644 java/jakarta/servlet/FilterRegistration.java
 create mode 100644 java/jakarta/servlet/GenericFilter.java
 create mode 100644 java/jakarta/servlet/GenericServlet.java
 create mode 100644 java/jakarta/servlet/HttpConstraintElement.java
 create mode 100644 java/jakarta/servlet/HttpMethodConstraintElement.java
 rename java/{javax => jakarta}/servlet/LocalStrings.properties (100%)
 rename java/{javax => jakarta}/servlet/LocalStrings_cs.properties (100%)
 rename java/{javax => jakarta}/servlet/LocalStrings_de.properties (100%)
 rename java/{javax => jakarta}/servlet/LocalStrings_es.properties (100%)
 rename java/{javax => jakarta}/servlet/LocalStrings_fr.properties (100%)
 rename java/{javax => jakarta}/servlet/LocalStrings_ja.properties (100%)
 rename java/{javax => jakarta}/servlet/LocalStrings_ko.properties (100%)
 rename java/{javax => jakarta}/servlet/LocalStrings_zh_CN.properties (100%)
 create mode 100644 java/jakarta/servlet/MultipartConfigElement.java
 create mode 100644 java/jakarta/servlet/ReadListener.java
 create mode 100644 java/jakarta/servlet/Registration.java
 create mode 100644 java/jakarta/servlet/RequestDispatcher.java
 create mode 100644 java/jakarta/servlet/Servlet.java
 create mode 100644 java/jakarta/servlet/ServletConfig.java
 create mode 100644 java/jakarta/servlet/ServletContainerInitializer.java
 create mode 100644 java/jakarta/servlet/ServletContext.java
 create mode 100644 java/jakarta/servlet/ServletContextAttributeEvent.java
 create mode 100644 java/jakarta/servlet/ServletContextAttributeListener.java
 create mode 100644 java/jakarta/servlet/ServletContextEvent.java
 create mode 100644 java/jakarta/servlet/ServletContextListener.java
 create mode 100644 java/jakarta/servlet/ServletException.java
 create mode 100644 java/jakarta/servlet/ServletInputStream.java
 create mode 100644 java/jakarta/servlet/ServletOutputStream.java
 create mode 100644 java/jakarta/servlet/ServletRegistration.java
 create mode 100644 java/jakarta/servlet/ServletRequest.java
 create mode 100644 java/jakarta/servlet/ServletRequestAttributeEvent.java
 create mode 100644 java/jakarta/servlet/ServletRequestAttributeListener.java
 create mode 100644 java/jakarta/servlet/ServletRequestEvent.java
 create mode 100644 java/jakarta/servlet/ServletRequestListener.java
 create mode 100644 java/jakarta/servlet/ServletRequestWrapper.java
 create mode 100644 java/jakarta/servlet/ServletResponse.java
 create mode 100644 java/jakarta/servlet/ServletResponseWrapper.java
 create mode 100644 java/jakarta/servlet/ServletSecurityElement.java
 create mode 100644 java/jakarta/servlet/SessionCookieConfig.java
 create mode 100644 java/jakarta/servlet/SessionTrackingMode.java
 create mode 100644 java/jakarta/servlet/SingleThreadModel.java
 create mode 100644 java/jakarta/servlet/UnavailableException.java
 create mode 100644 java/jakarta/servlet/WriteListener.java
 create mode 100644 java/jakarta/servlet/annotation/HandlesTypes.java
 create mode 100644 java/jakarta/servlet/annotation/HttpConstraint.java
 create mode 100644 java/jakarta/servlet/annotation/HttpMethodConstraint.java
 create mode 100644 java/jakarta/servlet/annotation/MultipartConfig.java
 create mode 100644 java/jakarta/servlet/annotation/ServletSecurity.java
 create mode 100644 java/jakarta/servlet/annotation/WebFilter.java
 create mode 100644 java/jakarta/servlet/annotation/WebInitParam.java
 create mode 100644 java/jakarta/servlet/annotation/WebListener.java
 create mode 100644 java/jakarta/servlet/annotation/WebServlet.java
 create mode 100644 java/jakarta/servlet/descriptor/JspConfigDescriptor.java
 create mode 100644 java/jakarta/servlet/descriptor/JspPropertyGroupDescriptor.java
 create mode 100644 java/jakarta/servlet/descriptor/TaglibDescriptor.java
 create mode 100644 java/jakarta/servlet/http/Cookie.java
 create mode 100644 java/jakarta/servlet/http/HttpFilter.java
 create mode 100644 java/jakarta/servlet/http/HttpServlet.java
 create mode 100644 java/jakarta/servlet/http/HttpServletMapping.java
 create mode 100644 java/jakarta/servlet/http/HttpServletRequest.java
 create mode 100644 java/jakarta/servlet/http/HttpServletRequestWrapper.java
 create mode 100644 java/jakarta/servlet/http/HttpServletResponse.java
 create mode 100644 java/jakarta/servlet/http/HttpServletResponseWrapper.java
 create mode 100644 java/jakarta/servlet/http/HttpSession.java
 create mode 100644 java/jakarta/servlet/http/HttpSessionActivationListener.java
 create mode 100644 java/jakarta/servlet/http/HttpSessionAttributeListener.java
 create mode 100644 java/jakarta/servlet/http/HttpSessionBindingEvent.java
 create mode 100644 java/jakarta/servlet/http/HttpSessionBindingListener.java
 create mode 100644 java/jakarta/servlet/http/HttpSessionContext.java
 create mode 100644 java/jakarta/servlet/http/HttpSessionEvent.java
 create mode 100644 java/jakarta/servlet/http/HttpSessionIdListener.java
 create mode 100644 java/jakarta/servlet/http/HttpSessionListener.java
 create mode 100644 java/jakarta/servlet/http/HttpUpgradeHandler.java
 create mode 100644 java/jakarta/servlet/http/HttpUtils.java
 rename java/{javax => jakarta}/servlet/http/LocalStrings.properties (100%)
 rename java/{javax => jakarta}/servlet/http/LocalStrings_de.properties (100%)
 rename java/{javax => jakarta}/servlet/http/LocalStrings_es.properties (100%)
 rename java/{javax => jakarta}/servlet/http/LocalStrings_fr.properties (100%)
 rename java/{javax => jakarta}/servlet/http/LocalStrings_ja.properties (100%)
 rename java/{javax => jakarta}/servlet/http/LocalStrings_ko.properties (100%)
 rename java/{javax => jakarta}/servlet/http/LocalStrings_zh_CN.properties (100%)
 create mode 100644 java/jakarta/servlet/http/MappingMatch.java
 create mode 100644 java/jakarta/servlet/http/Part.java
 create mode 100644 java/jakarta/servlet/http/PushBuilder.java
 create mode 100644 java/jakarta/servlet/http/WebConnection.java
 create mode 100644 java/jakarta/servlet/http/package.html
 create mode 100644 java/jakarta/servlet/jsp/ErrorData.java
 create mode 100644 java/jakarta/servlet/jsp/HttpJspPage.java
 create mode 100644 java/jakarta/servlet/jsp/JspApplicationContext.java
 create mode 100644 java/jakarta/servlet/jsp/JspContext.java
 create mode 100644 java/jakarta/servlet/jsp/JspEngineInfo.java
 create mode 100644 java/jakarta/servlet/jsp/JspException.java
 create mode 100644 java/jakarta/servlet/jsp/JspFactory.java
 create mode 100644 java/jakarta/servlet/jsp/JspPage.java
 create mode 100644 java/jakarta/servlet/jsp/JspTagException.java
 create mode 100644 java/jakarta/servlet/jsp/JspWriter.java
 create mode 100644 java/jakarta/servlet/jsp/PageContext.java
 create mode 100644 java/jakarta/servlet/jsp/SkipPageException.java
 create mode 100644 java/jakarta/servlet/jsp/el/ELException.java
 create mode 100644 java/jakarta/servlet/jsp/el/ELParseException.java
 create mode 100644 java/jakarta/servlet/jsp/el/Expression.java
 create mode 100644 java/jakarta/servlet/jsp/el/ExpressionEvaluator.java
 create mode 100644 java/jakarta/servlet/jsp/el/FunctionMapper.java
 create mode 100644 java/jakarta/servlet/jsp/el/ImplicitObjectELResolver.java
 create mode 100644 java/jakarta/servlet/jsp/el/ScopedAttributeELResolver.java
 create mode 100644 java/jakarta/servlet/jsp/el/VariableResolver.java
 rename java/{javax => jakarta}/servlet/jsp/el/package.html (100%)
 create mode 100644 java/jakarta/servlet/jsp/package.html
 rename java/{javax => jakarta}/servlet/jsp/resources/jspxml.dtd (100%)
 rename java/{javax => jakarta}/servlet/jsp/resources/jspxml.xsd (100%)
 create mode 100644 java/jakarta/servlet/jsp/tagext/BodyContent.java
 create mode 100644 java/jakarta/servlet/jsp/tagext/BodyTag.java
 create mode 100644 java/jakarta/servlet/jsp/tagext/BodyTagSupport.java
 create mode 100644 java/jakarta/servlet/jsp/tagext/DynamicAttributes.java
 create mode 100644 java/jakarta/servlet/jsp/tagext/FunctionInfo.java
 create mode 100644 java/jakarta/servlet/jsp/tagext/IterationTag.java
 create mode 100644 java/jakarta/servlet/jsp/tagext/JspFragment.java
 create mode 100644 java/jakarta/servlet/jsp/tagext/JspIdConsumer.java
 create mode 100644 java/jakarta/servlet/jsp/tagext/JspTag.java
 create mode 100644 java/jakarta/servlet/jsp/tagext/PageData.java
 create mode 100644 java/jakarta/servlet/jsp/tagext/SimpleTag.java
 create mode 100644 java/jakarta/servlet/jsp/tagext/SimpleTagSupport.java
 create mode 100644 java/jakarta/servlet/jsp/tagext/Tag.java
 create mode 100644 java/jakarta/servlet/jsp/tagext/TagAdapter.java
 create mode 100644 java/jakarta/servlet/jsp/tagext/TagAttributeInfo.java
 create mode 100644 java/jakarta/servlet/jsp/tagext/TagData.java
 create mode 100644 java/jakarta/servlet/jsp/tagext/TagExtraInfo.java
 create mode 100644 java/jakarta/servlet/jsp/tagext/TagFileInfo.java
 create mode 100644 java/jakarta/servlet/jsp/tagext/TagInfo.java
 create mode 100644 java/jakarta/servlet/jsp/tagext/TagLibraryInfo.java
 create mode 100644 java/jakarta/servlet/jsp/tagext/TagLibraryValidator.java
 create mode 100644 java/jakarta/servlet/jsp/tagext/TagSupport.java
 create mode 100644 java/jakarta/servlet/jsp/tagext/TagVariableInfo.java
 create mode 100644 java/jakarta/servlet/jsp/tagext/TryCatchFinally.java
 create mode 100644 java/jakarta/servlet/jsp/tagext/ValidationMessage.java
 create mode 100644 java/jakarta/servlet/jsp/tagext/VariableInfo.java
 rename java/{javax => jakarta}/servlet/jsp/tagext/doc-files/BodyTagProtocol.gif (100%)
 rename java/{javax => jakarta}/servlet/jsp/tagext/doc-files/IterationTagProtocol.gif (100%)
 rename java/{javax => jakarta}/servlet/jsp/tagext/doc-files/TagProtocol.gif (100%)
 rename java/{javax => jakarta}/servlet/jsp/tagext/doc-files/VariableInfo-1.gif (100%)
 rename java/{javax => jakarta}/servlet/jsp/tagext/package.html (100%)
 create mode 100644 java/jakarta/servlet/package.html
 rename java/{javax => jakarta}/servlet/resources/XMLSchema.dtd (100%)
 rename java/{javax => jakarta}/servlet/resources/datatypes.dtd (100%)
 rename java/{javax => jakarta}/servlet/resources/j2ee_1_4.xsd (100%)
 rename java/{javax => jakarta}/servlet/resources/j2ee_web_services_1_1.xsd (100%)
 rename java/{javax => jakarta}/servlet/resources/j2ee_web_services_client_1_1.xsd (100%)
 rename java/{javax => jakarta}/servlet/resources/javaee_5.xsd (100%)
 rename java/{javax => jakarta}/servlet/resources/javaee_6.xsd (100%)
 rename java/{javax => jakarta}/servlet/resources/javaee_7.xsd (100%)
 rename java/{javax => jakarta}/servlet/resources/javaee_8.xsd (100%)
 rename java/{javax => jakarta}/servlet/resources/javaee_web_services_1_2.xsd (100%)
 rename java/{javax => jakarta}/servlet/resources/javaee_web_services_1_3.xsd (100%)
 rename java/{javax => jakarta}/servlet/resources/javaee_web_services_1_4.xsd (100%)
 rename java/{javax => jakarta}/servlet/resources/javaee_web_services_client_1_2.xsd (100%)
 rename java/{javax => jakarta}/servlet/resources/javaee_web_services_client_1_3.xsd (100%)
 rename java/{javax => jakarta}/servlet/resources/javaee_web_services_client_1_4.xsd (100%)
 rename java/{javax => jakarta}/servlet/resources/jsp_2_0.xsd (100%)
 rename java/{javax => jakarta}/servlet/resources/jsp_2_1.xsd (100%)
 rename java/{javax => jakarta}/servlet/resources/jsp_2_2.xsd (100%)
 rename java/{javax => jakarta}/servlet/resources/jsp_2_3.xsd (100%)
 rename java/{javax => jakarta}/servlet/resources/web-app_2_2.dtd (100%)
 rename java/{javax => jakarta}/servlet/resources/web-app_2_3.dtd (100%)
 rename java/{javax => jakarta}/servlet/resources/web-app_2_4.xsd (100%)
 rename java/{javax => jakarta}/servlet/resources/web-app_2_5.xsd (100%)
 rename java/{javax => jakarta}/servlet/resources/web-app_3_0.xsd (100%)
 rename java/{javax => jakarta}/servlet/resources/web-app_3_1.xsd (100%)
 rename java/{javax => jakarta}/servlet/resources/web-app_4_0.xsd (100%)
 rename java/{javax => jakarta}/servlet/resources/web-common_3_0.xsd (100%)
 rename java/{javax => jakarta}/servlet/resources/web-common_3_1.xsd (100%)
 rename java/{javax => jakarta}/servlet/resources/web-common_4_0.xsd (100%)
 rename java/{javax => jakarta}/servlet/resources/web-fragment_3_0.xsd (100%)
 rename java/{javax => jakarta}/servlet/resources/web-fragment_3_1.xsd (100%)
 rename java/{javax => jakarta}/servlet/resources/web-fragment_4_0.xsd (100%)
 rename java/{javax => jakarta}/servlet/resources/web-jsptaglibrary_1_1.dtd (100%)
 rename java/{javax => jakarta}/servlet/resources/web-jsptaglibrary_1_2.dtd (100%)
 rename java/{javax => jakarta}/servlet/resources/web-jsptaglibrary_2_0.xsd (100%)
 rename java/{javax => jakarta}/servlet/resources/web-jsptaglibrary_2_1.xsd (100%)
 rename java/{javax => jakarta}/servlet/resources/xml.xsd (100%)
 create mode 100644 java/jakarta/transaction/HeuristicCommitException.java
 create mode 100644 java/jakarta/transaction/HeuristicMixedException.java
 create mode 100644 java/jakarta/transaction/HeuristicRollbackException.java
 create mode 100644 java/jakarta/transaction/InvalidTransactionException.java
 create mode 100644 java/jakarta/transaction/NotSupportedException.java
 create mode 100644 java/jakarta/transaction/RollbackException.java
 create mode 100644 java/jakarta/transaction/Status.java
 create mode 100644 java/jakarta/transaction/Synchronization.java
 create mode 100644 java/jakarta/transaction/SystemException.java
 create mode 100644 java/jakarta/transaction/Transaction.java
 create mode 100644 java/jakarta/transaction/TransactionManager.java
 create mode 100644 java/jakarta/transaction/TransactionRequiredException.java
 create mode 100644 java/jakarta/transaction/TransactionRolledbackException.java
 create mode 100644 java/jakarta/transaction/TransactionSynchronizationRegistry.java
 create mode 100644 java/jakarta/transaction/UserTransaction.java
 create mode 100644 java/jakarta/websocket/ClientEndpoint.java
 create mode 100644 java/jakarta/websocket/ClientEndpointConfig.java
 create mode 100644 java/jakarta/websocket/CloseReason.java
 create mode 100644 java/jakarta/websocket/ContainerProvider.java
 create mode 100644 java/jakarta/websocket/DecodeException.java
 create mode 100644 java/jakarta/websocket/Decoder.java
 create mode 100644 java/jakarta/websocket/DefaultClientEndpointConfig.java
 create mode 100644 java/jakarta/websocket/DeploymentException.java
 create mode 100644 java/jakarta/websocket/EncodeException.java
 create mode 100644 java/jakarta/websocket/Encoder.java
 create mode 100644 java/jakarta/websocket/Endpoint.java
 create mode 100644 java/jakarta/websocket/EndpointConfig.java
 create mode 100644 java/jakarta/websocket/Extension.java
 create mode 100644 java/jakarta/websocket/HandshakeResponse.java
 create mode 100644 java/jakarta/websocket/MessageHandler.java
 create mode 100644 java/jakarta/websocket/OnClose.java
 create mode 100644 java/jakarta/websocket/OnError.java
 create mode 100644 java/jakarta/websocket/OnMessage.java
 create mode 100644 java/jakarta/websocket/OnOpen.java
 create mode 100644 java/jakarta/websocket/PongMessage.java
 create mode 100644 java/jakarta/websocket/RemoteEndpoint.java
 create mode 100644 java/jakarta/websocket/SendHandler.java
 create mode 100644 java/jakarta/websocket/SendResult.java
 create mode 100644 java/jakarta/websocket/Session.java
 create mode 100644 java/jakarta/websocket/SessionException.java
 create mode 100644 java/jakarta/websocket/WebSocketContainer.java
 create mode 100644 java/jakarta/websocket/server/DefaultServerEndpointConfig.java
 create mode 100644 java/jakarta/websocket/server/HandshakeRequest.java
 create mode 100644 java/jakarta/websocket/server/PathParam.java
 create mode 100644 java/jakarta/websocket/server/ServerApplicationConfig.java
 create mode 100644 java/jakarta/websocket/server/ServerContainer.java
 create mode 100644 java/jakarta/websocket/server/ServerEndpoint.java
 create mode 100644 java/jakarta/websocket/server/ServerEndpointConfig.java
 delete mode 100644 java/javax/annotation/Generated.java
 delete mode 100644 java/javax/annotation/ManagedBean.java
 delete mode 100644 java/javax/annotation/PostConstruct.java
 delete mode 100644 java/javax/annotation/PreDestroy.java
 delete mode 100644 java/javax/annotation/Priority.java
 delete mode 100644 java/javax/annotation/Resource.java
 delete mode 100644 java/javax/annotation/Resources.java
 delete mode 100644 java/javax/annotation/security/DeclareRoles.java
 delete mode 100644 java/javax/annotation/security/DenyAll.java
 delete mode 100644 java/javax/annotation/security/PermitAll.java
 delete mode 100644 java/javax/annotation/security/RolesAllowed.java
 delete mode 100644 java/javax/annotation/security/RunAs.java
 delete mode 100644 java/javax/annotation/sql/DataSourceDefinition.java
 delete mode 100644 java/javax/annotation/sql/DataSourceDefinitions.java
 delete mode 100644 java/javax/ejb/EJB.java
 delete mode 100644 java/javax/ejb/EJBs.java
 delete mode 100644 java/javax/el/ArrayELResolver.java
 delete mode 100644 java/javax/el/BeanELResolver.java
 delete mode 100644 java/javax/el/BeanNameELResolver.java
 delete mode 100644 java/javax/el/BeanNameResolver.java
 delete mode 100644 java/javax/el/CompositeELResolver.java
 delete mode 100644 java/javax/el/ELClass.java
 delete mode 100644 java/javax/el/ELContext.java
 delete mode 100644 java/javax/el/ELContextEvent.java
 delete mode 100644 java/javax/el/ELContextListener.java
 delete mode 100644 java/javax/el/ELException.java
 delete mode 100644 java/javax/el/ELManager.java
 delete mode 100644 java/javax/el/ELProcessor.java
 delete mode 100644 java/javax/el/ELResolver.java
 delete mode 100644 java/javax/el/EvaluationListener.java
 delete mode 100644 java/javax/el/Expression.java
 delete mode 100644 java/javax/el/ExpressionFactory.java
 delete mode 100644 java/javax/el/FunctionMapper.java
 delete mode 100644 java/javax/el/ImportHandler.java
 delete mode 100644 java/javax/el/Jre9Compat.java
 delete mode 100644 java/javax/el/JreCompat.java
 delete mode 100644 java/javax/el/LambdaExpression.java
 delete mode 100644 java/javax/el/ListELResolver.java
 delete mode 100644 java/javax/el/MapELResolver.java
 delete mode 100644 java/javax/el/MethodExpression.java
 delete mode 100644 java/javax/el/MethodInfo.java
 delete mode 100644 java/javax/el/MethodNotFoundException.java
 delete mode 100644 java/javax/el/PropertyNotFoundException.java
 delete mode 100644 java/javax/el/PropertyNotWritableException.java
 delete mode 100644 java/javax/el/ResourceBundleELResolver.java
 delete mode 100644 java/javax/el/StandardELContext.java
 delete mode 100644 java/javax/el/StaticFieldELResolver.java
 delete mode 100644 java/javax/el/TypeConverter.java
 delete mode 100644 java/javax/el/Util.java
 delete mode 100644 java/javax/el/ValueExpression.java
 delete mode 100644 java/javax/el/ValueReference.java
 delete mode 100644 java/javax/el/VariableMapper.java
 delete mode 100644 java/javax/mail/Authenticator.java
 delete mode 100644 java/javax/mail/PasswordAuthentication.java
 delete mode 100644 java/javax/mail/Session.java
 delete mode 100644 java/javax/mail/internet/InternetAddress.java
 delete mode 100644 java/javax/mail/internet/MimeMessage.java
 delete mode 100644 java/javax/mail/internet/MimePart.java
 delete mode 100644 java/javax/mail/internet/MimePartDataSource.java
 delete mode 100644 java/javax/persistence/PersistenceContext.java
 delete mode 100644 java/javax/persistence/PersistenceContextType.java
 delete mode 100644 java/javax/persistence/PersistenceContexts.java
 delete mode 100644 java/javax/persistence/PersistenceProperty.java
 delete mode 100644 java/javax/persistence/PersistenceUnit.java
 delete mode 100644 java/javax/persistence/PersistenceUnits.java
 delete mode 100644 java/javax/persistence/SynchronizationType.java
 delete mode 100644 java/javax/security/auth/message/AuthException.java
 delete mode 100644 java/javax/security/auth/message/AuthStatus.java
 delete mode 100644 java/javax/security/auth/message/ClientAuth.java
 delete mode 100644 java/javax/security/auth/message/MessageInfo.java
 delete mode 100644 java/javax/security/auth/message/MessagePolicy.java
 delete mode 100644 java/javax/security/auth/message/ServerAuth.java
 delete mode 100644 java/javax/security/auth/message/callback/CallerPrincipalCallback.java
 delete mode 100644 java/javax/security/auth/message/callback/CertStoreCallback.java
 delete mode 100644 java/javax/security/auth/message/callback/GroupPrincipalCallback.java
 delete mode 100644 java/javax/security/auth/message/callback/PasswordValidationCallback.java
 delete mode 100644 java/javax/security/auth/message/callback/PrivateKeyCallback.java
 delete mode 100644 java/javax/security/auth/message/callback/SecretKeyCallback.java
 delete mode 100644 java/javax/security/auth/message/callback/TrustStoreCallback.java
 delete mode 100644 java/javax/security/auth/message/config/AuthConfig.java
 delete mode 100644 java/javax/security/auth/message/config/AuthConfigFactory.java
 delete mode 100644 java/javax/security/auth/message/config/AuthConfigProvider.java
 delete mode 100644 java/javax/security/auth/message/config/ClientAuthConfig.java
 delete mode 100644 java/javax/security/auth/message/config/ClientAuthContext.java
 delete mode 100644 java/javax/security/auth/message/config/RegistrationListener.java
 delete mode 100644 java/javax/security/auth/message/config/ServerAuthConfig.java
 delete mode 100644 java/javax/security/auth/message/config/ServerAuthContext.java
 delete mode 100644 java/javax/security/auth/message/module/ClientAuthModule.java
 delete mode 100644 java/javax/security/auth/message/module/ServerAuthModule.java
 delete mode 100644 java/javax/servlet/AsyncContext.java
 delete mode 100644 java/javax/servlet/AsyncEvent.java
 delete mode 100644 java/javax/servlet/AsyncListener.java
 delete mode 100644 java/javax/servlet/DispatcherType.java
 delete mode 100644 java/javax/servlet/Filter.java
 delete mode 100644 java/javax/servlet/FilterChain.java
 delete mode 100644 java/javax/servlet/FilterConfig.java
 delete mode 100644 java/javax/servlet/FilterRegistration.java
 delete mode 100644 java/javax/servlet/GenericFilter.java
 delete mode 100644 java/javax/servlet/GenericServlet.java
 delete mode 100644 java/javax/servlet/HttpConstraintElement.java
 delete mode 100644 java/javax/servlet/HttpMethodConstraintElement.java
 delete mode 100644 java/javax/servlet/MultipartConfigElement.java
 delete mode 100644 java/javax/servlet/ReadListener.java
 delete mode 100644 java/javax/servlet/Registration.java
 delete mode 100644 java/javax/servlet/RequestDispatcher.java
 delete mode 100644 java/javax/servlet/Servlet.java
 delete mode 100644 java/javax/servlet/ServletConfig.java
 delete mode 100644 java/javax/servlet/ServletContainerInitializer.java
 delete mode 100644 java/javax/servlet/ServletContext.java
 delete mode 100644 java/javax/servlet/ServletContextAttributeEvent.java
 delete mode 100644 java/javax/servlet/ServletContextAttributeListener.java
 delete mode 100644 java/javax/servlet/ServletContextEvent.java
 delete mode 100644 java/javax/servlet/ServletContextListener.java
 delete mode 100644 java/javax/servlet/ServletException.java
 delete mode 100644 java/javax/servlet/ServletInputStream.java
 delete mode 100644 java/javax/servlet/ServletOutputStream.java
 delete mode 100644 java/javax/servlet/ServletRegistration.java
 delete mode 100644 java/javax/servlet/ServletRequest.java
 delete mode 100644 java/javax/servlet/ServletRequestAttributeEvent.java
 delete mode 100644 java/javax/servlet/ServletRequestAttributeListener.java
 delete mode 100644 java/javax/servlet/ServletRequestEvent.java
 delete mode 100644 java/javax/servlet/ServletRequestListener.java
 delete mode 100644 java/javax/servlet/ServletRequestWrapper.java
 delete mode 100644 java/javax/servlet/ServletResponse.java
 delete mode 100644 java/javax/servlet/ServletResponseWrapper.java
 delete mode 100644 java/javax/servlet/ServletSecurityElement.java
 delete mode 100644 java/javax/servlet/SessionCookieConfig.java
 delete mode 100644 java/javax/servlet/SessionTrackingMode.java
 delete mode 100644 java/javax/servlet/SingleThreadModel.java
 delete mode 100644 java/javax/servlet/UnavailableException.java
 delete mode 100644 java/javax/servlet/WriteListener.java
 delete mode 100644 java/javax/servlet/annotation/HandlesTypes.java
 delete mode 100644 java/javax/servlet/annotation/HttpConstraint.java
 delete mode 100644 java/javax/servlet/annotation/HttpMethodConstraint.java
 delete mode 100644 java/javax/servlet/annotation/MultipartConfig.java
 delete mode 100644 java/javax/servlet/annotation/ServletSecurity.java
 delete mode 100644 java/javax/servlet/annotation/WebFilter.java
 delete mode 100644 java/javax/servlet/annotation/WebInitParam.java
 delete mode 100644 java/javax/servlet/annotation/WebListener.java
 delete mode 100644 java/javax/servlet/annotation/WebServlet.java
 delete mode 100644 java/javax/servlet/descriptor/JspConfigDescriptor.java
 delete mode 100644 java/javax/servlet/descriptor/JspPropertyGroupDescriptor.java
 delete mode 100644 java/javax/servlet/descriptor/TaglibDescriptor.java
 delete mode 100644 java/javax/servlet/http/Cookie.java
 delete mode 100644 java/javax/servlet/http/HttpFilter.java
 delete mode 100644 java/javax/servlet/http/HttpServlet.java
 delete mode 100644 java/javax/servlet/http/HttpServletMapping.java
 delete mode 100644 java/javax/servlet/http/HttpServletRequest.java
 delete mode 100644 java/javax/servlet/http/HttpServletRequestWrapper.java
 delete mode 100644 java/javax/servlet/http/HttpServletResponse.java
 delete mode 100644 java/javax/servlet/http/HttpServletResponseWrapper.java
 delete mode 100644 java/javax/servlet/http/HttpSession.java
 delete mode 100644 java/javax/servlet/http/HttpSessionActivationListener.java
 delete mode 100644 java/javax/servlet/http/HttpSessionAttributeListener.java
 delete mode 100644 java/javax/servlet/http/HttpSessionBindingEvent.java
 delete mode 100644 java/javax/servlet/http/HttpSessionBindingListener.java
 delete mode 100644 java/javax/servlet/http/HttpSessionContext.java
 delete mode 100644 java/javax/servlet/http/HttpSessionEvent.java
 delete mode 100644 java/javax/servlet/http/HttpSessionIdListener.java
 delete mode 100644 java/javax/servlet/http/HttpSessionListener.java
 delete mode 100644 java/javax/servlet/http/HttpUpgradeHandler.java
 delete mode 100644 java/javax/servlet/http/HttpUtils.java
 delete mode 100644 java/javax/servlet/http/MappingMatch.java
 delete mode 100644 java/javax/servlet/http/Part.java
 delete mode 100644 java/javax/servlet/http/PushBuilder.java
 delete mode 100644 java/javax/servlet/http/WebConnection.java
 delete mode 100644 java/javax/servlet/http/package.html
 delete mode 100644 java/javax/servlet/jsp/ErrorData.java
 delete mode 100644 java/javax/servlet/jsp/HttpJspPage.java
 delete mode 100644 java/javax/servlet/jsp/JspApplicationContext.java
 delete mode 100644 java/javax/servlet/jsp/JspContext.java
 delete mode 100644 java/javax/servlet/jsp/JspEngineInfo.java
 delete mode 100644 java/javax/servlet/jsp/JspException.java
 delete mode 100644 java/javax/servlet/jsp/JspFactory.java
 delete mode 100644 java/javax/servlet/jsp/JspPage.java
 delete mode 100644 java/javax/servlet/jsp/JspTagException.java
 delete mode 100644 java/javax/servlet/jsp/JspWriter.java
 delete mode 100644 java/javax/servlet/jsp/PageContext.java
 delete mode 100644 java/javax/servlet/jsp/SkipPageException.java
 delete mode 100644 java/javax/servlet/jsp/el/ELException.java
 delete mode 100644 java/javax/servlet/jsp/el/ELParseException.java
 delete mode 100644 java/javax/servlet/jsp/el/Expression.java
 delete mode 100644 java/javax/servlet/jsp/el/ExpressionEvaluator.java
 delete mode 100644 java/javax/servlet/jsp/el/FunctionMapper.java
 delete mode 100644 java/javax/servlet/jsp/el/ImplicitObjectELResolver.java
 delete mode 100644 java/javax/servlet/jsp/el/ScopedAttributeELResolver.java
 delete mode 100644 java/javax/servlet/jsp/el/VariableResolver.java
 delete mode 100644 java/javax/servlet/jsp/package.html
 delete mode 100644 java/javax/servlet/jsp/tagext/BodyContent.java
 delete mode 100644 java/javax/servlet/jsp/tagext/BodyTag.java
 delete mode 100644 java/javax/servlet/jsp/tagext/BodyTagSupport.java
 delete mode 100644 java/javax/servlet/jsp/tagext/DynamicAttributes.java
 delete mode 100644 java/javax/servlet/jsp/tagext/FunctionInfo.java
 delete mode 100644 java/javax/servlet/jsp/tagext/IterationTag.java
 delete mode 100644 java/javax/servlet/jsp/tagext/JspFragment.java
 delete mode 100644 java/javax/servlet/jsp/tagext/JspIdConsumer.java
 delete mode 100644 java/javax/servlet/jsp/tagext/JspTag.java
 delete mode 100644 java/javax/servlet/jsp/tagext/PageData.java
 delete mode 100644 java/javax/servlet/jsp/tagext/SimpleTag.java
 delete mode 100644 java/javax/servlet/jsp/tagext/SimpleTagSupport.java
 delete mode 100644 java/javax/servlet/jsp/tagext/Tag.java
 delete mode 100644 java/javax/servlet/jsp/tagext/TagAdapter.java
 delete mode 100644 java/javax/servlet/jsp/tagext/TagAttributeInfo.java
 delete mode 100644 java/javax/servlet/jsp/tagext/TagData.java
 delete mode 100644 java/javax/servlet/jsp/tagext/TagExtraInfo.java
 delete mode 100644 java/javax/servlet/jsp/tagext/TagFileInfo.java
 delete mode 100644 java/javax/servlet/jsp/tagext/TagInfo.java
 delete mode 100644 java/javax/servlet/jsp/tagext/TagLibraryInfo.java
 delete mode 100644 java/javax/servlet/jsp/tagext/TagLibraryValidator.java
 delete mode 100644 java/javax/servlet/jsp/tagext/TagSupport.java
 delete mode 100644 java/javax/servlet/jsp/tagext/TagVariableInfo.java
 delete mode 100644 java/javax/servlet/jsp/tagext/TryCatchFinally.java
 delete mode 100644 java/javax/servlet/jsp/tagext/ValidationMessage.java
 delete mode 100644 java/javax/servlet/jsp/tagext/VariableInfo.java
 delete mode 100644 java/javax/servlet/package.html
 delete mode 100644 java/javax/transaction/HeuristicCommitException.java
 delete mode 100644 java/javax/transaction/HeuristicMixedException.java
 delete mode 100644 java/javax/transaction/HeuristicRollbackException.java
 delete mode 100644 java/javax/transaction/InvalidTransactionException.java
 delete mode 100644 java/javax/transaction/NotSupportedException.java
 delete mode 100644 java/javax/transaction/RollbackException.java
 delete mode 100644 java/javax/transaction/Status.java
 delete mode 100644 java/javax/transaction/Synchronization.java
 delete mode 100644 java/javax/transaction/SystemException.java
 delete mode 100644 java/javax/transaction/Transaction.java
 delete mode 100644 java/javax/transaction/TransactionManager.java
 delete mode 100644 java/javax/transaction/TransactionRequiredException.java
 delete mode 100644 java/javax/transaction/TransactionRolledbackException.java
 delete mode 100644 java/javax/transaction/TransactionSynchronizationRegistry.java
 delete mode 100644 java/javax/transaction/UserTransaction.java
 delete mode 100644 java/javax/websocket/ClientEndpoint.java
 delete mode 100644 java/javax/websocket/ClientEndpointConfig.java
 delete mode 100644 java/javax/websocket/CloseReason.java
 delete mode 100644 java/javax/websocket/ContainerProvider.java
 delete mode 100644 java/javax/websocket/DecodeException.java
 delete mode 100644 java/javax/websocket/Decoder.java
 delete mode 100644 java/javax/websocket/DefaultClientEndpointConfig.java
 delete mode 100644 java/javax/websocket/DeploymentException.java
 delete mode 100644 java/javax/websocket/EncodeException.java
 delete mode 100644 java/javax/websocket/Encoder.java
 delete mode 100644 java/javax/websocket/Endpoint.java
 delete mode 100644 java/javax/websocket/EndpointConfig.java
 delete mode 100644 java/javax/websocket/Extension.java
 delete mode 100644 java/javax/websocket/HandshakeResponse.java
 delete mode 100644 java/javax/websocket/MessageHandler.java
 delete mode 100644 java/javax/websocket/OnClose.java
 delete mode 100644 java/javax/websocket/OnError.java
 delete mode 100644 java/javax/websocket/OnMessage.java
 delete mode 100644 java/javax/websocket/OnOpen.java
 delete mode 100644 java/javax/websocket/PongMessage.java
 delete mode 100644 java/javax/websocket/RemoteEndpoint.java
 delete mode 100644 java/javax/websocket/SendHandler.java
 delete mode 100644 java/javax/websocket/SendResult.java
 delete mode 100644 java/javax/websocket/Session.java
 delete mode 100644 java/javax/websocket/SessionException.java
 delete mode 100644 java/javax/websocket/WebSocketContainer.java
 delete mode 100644 java/javax/websocket/server/DefaultServerEndpointConfig.java
 delete mode 100644 java/javax/websocket/server/HandshakeRequest.java
 delete mode 100644 java/javax/websocket/server/PathParam.java
 delete mode 100644 java/javax/websocket/server/ServerApplicationConfig.java
 delete mode 100644 java/javax/websocket/server/ServerContainer.java
 delete mode 100644 java/javax/websocket/server/ServerEndpoint.java
 delete mode 100644 java/javax/websocket/server/ServerEndpointConfig.java
 rename res/META-INF/jasper.jar/services/{javax.servlet.ServletContainerInitializer => jakarta.servlet.ServletContainerInitializer} (100%)
 rename res/META-INF/tomcat-websocket.jar/services/{javax.servlet.ServletContainerInitializer => jakarta.servlet.ServletContainerInitializer} (100%)
 rename res/META-INF/tomcat-websocket.jar/services/{javax.websocket.ContainerProvider => jakarta.websocket.ContainerProvider} (100%)
 rename res/META-INF/tomcat-websocket.jar/services/{javax.websocket.server.ServerEndpointConfig$Configurator => jakarta.websocket.server.ServerEndpointConfig$Configurator} (100%)
 create mode 100644 res/checkstyle/jakarta-checkstyle.xml
 create mode 100644 res/checkstyle/jakarta-import-control.xml
 rename test/META-INF/services/{javax.servlet.ServletContainerInitializer => jakarta.servlet.ServletContainerInitializer} (100%)
 create mode 100644 test/jakarta/el/TestArrayELResolver.java
 create mode 100644 test/jakarta/el/TestBeanELResolver.java
 create mode 100644 test/jakarta/el/TestBeanELResolverVarargsInvocation.java
 create mode 100644 test/jakarta/el/TestBeanNameELResolver.java
 create mode 100644 test/jakarta/el/TestCompositeELResolver.java
 create mode 100644 test/jakarta/el/TestELContext.java
 create mode 100644 test/jakarta/el/TestELProcessor.java
 create mode 100644 test/jakarta/el/TestELResolver.java
 create mode 100644 test/jakarta/el/TestEvaluationListener.java
 create mode 100644 test/jakarta/el/TestImportHandler.java
 create mode 100644 test/jakarta/el/TestImportHandlerStandardPackages.java
 create mode 100644 test/jakarta/el/TestListELResolver.java
 create mode 100644 test/jakarta/el/TestMapELResolver.java
 create mode 100644 test/jakarta/el/TestResourceBundleELResolver.java
 create mode 100644 test/jakarta/el/TestStaticFieldELResolver.java
 create mode 100644 test/jakarta/el/TestUtil.java
 create mode 100644 test/jakarta/el/TesterBean.java
 create mode 100644 test/jakarta/el/TesterBeanNameResolver.java
 create mode 100644 test/jakarta/el/TesterClass.java
 create mode 100644 test/jakarta/el/TesterELContext.java
 create mode 100644 test/jakarta/el/TesterELResolverOne.java
 create mode 100644 test/jakarta/el/TesterELResolverTwo.java
 create mode 100644 test/jakarta/el/TesterEvaluationListener.java
 create mode 100644 test/jakarta/el/TesterFunctions.java
 create mode 100644 test/jakarta/el/TesterImportHandlerPerformance.java
 create mode 100644 test/jakarta/servlet/annotation/TestServletSecurity.java
 create mode 100644 test/jakarta/servlet/annotation/TestServletSecurityMappings.java
 create mode 100644 test/jakarta/servlet/http/TestCookie.java
 create mode 100644 test/jakarta/servlet/http/TestCookieRFC2109Validator.java
 create mode 100644 test/jakarta/servlet/http/TestCookieRFC6265Validator.java
 create mode 100644 test/jakarta/servlet/http/TestCookieStrict.java
 create mode 100644 test/jakarta/servlet/http/TestHttpServlet.java
 create mode 100644 test/jakarta/servlet/http/TestHttpServletResponseSendError.java
 create mode 100644 test/jakarta/servlet/jsp/TestPageContext.java
 create mode 100644 test/jakarta/servlet/jsp/TesterPageContext.java
 create mode 100644 test/jakarta/servlet/jsp/el/TestScopedAttributeELResolver.java
 create mode 100644 test/jakarta/servlet/jsp/el/TestScopedAttributeELResolverPerformance.java
 create mode 100644 test/jakarta/servlet/resources/TestSchemaValidation.java
 create mode 100644 test/jakarta/websocket/TesterContainerProviderPerformance.java
 delete mode 100644 test/javax/el/TestArrayELResolver.java
 delete mode 100644 test/javax/el/TestBeanELResolver.java
 delete mode 100644 test/javax/el/TestBeanELResolverVarargsInvocation.java
 delete mode 100644 test/javax/el/TestBeanNameELResolver.java
 delete mode 100644 test/javax/el/TestCompositeELResolver.java
 delete mode 100644 test/javax/el/TestELContext.java
 delete mode 100644 test/javax/el/TestELProcessor.java
 delete mode 100644 test/javax/el/TestELResolver.java
 delete mode 100644 test/javax/el/TestEvaluationListener.java
 delete mode 100644 test/javax/el/TestImportHandler.java
 delete mode 100644 test/javax/el/TestImportHandlerStandardPackages.java
 delete mode 100644 test/javax/el/TestListELResolver.java
 delete mode 100644 test/javax/el/TestMapELResolver.java
 delete mode 100644 test/javax/el/TestResourceBundleELResolver.java
 delete mode 100644 test/javax/el/TestStaticFieldELResolver.java
 delete mode 100644 test/javax/el/TestUtil.java
 delete mode 100644 test/javax/el/TesterBean.java
 delete mode 100644 test/javax/el/TesterBeanNameResolver.java
 delete mode 100644 test/javax/el/TesterClass.java
 delete mode 100644 test/javax/el/TesterELContext.java
 delete mode 100644 test/javax/el/TesterELResolverOne.java
 delete mode 100644 test/javax/el/TesterELResolverTwo.java
 delete mode 100644 test/javax/el/TesterEvaluationListener.java
 delete mode 100644 test/javax/el/TesterFunctions.java
 delete mode 100644 test/javax/el/TesterImportHandlerPerformance.java
 delete mode 100644 test/javax/servlet/annotation/TestServletSecurity.java
 delete mode 100644 test/javax/servlet/annotation/TestServletSecurityMappings.java
 delete mode 100644 test/javax/servlet/http/TestCookie.java
 delete mode 100644 test/javax/servlet/http/TestCookieRFC2109Validator.java
 delete mode 100644 test/javax/servlet/http/TestCookieRFC6265Validator.java
 delete mode 100644 test/javax/servlet/http/TestCookieStrict.java
 delete mode 100644 test/javax/servlet/http/TestHttpServlet.java
 delete mode 100644 test/javax/servlet/http/TestHttpServletResponseSendError.java
 delete mode 100644 test/javax/servlet/jsp/TestPageContext.java
 delete mode 100644 test/javax/servlet/jsp/TesterPageContext.java
 delete mode 100644 test/javax/servlet/jsp/el/TestScopedAttributeELResolver.java
 delete mode 100644 test/javax/servlet/jsp/el/TestScopedAttributeELResolverPerformance.java
 delete mode 100644 test/javax/servlet/resources/TestSchemaValidation.java
 delete mode 100644 test/javax/websocket/TesterContainerProviderPerformance.java


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


[tomcat] 02/18: Rename "javax.annotation.*" to "jakarta.annotation.*"

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tomcat.git

commit 4ed2dc843a59ef204f93082d610f8d6f547051ab
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Wed Nov 27 23:25:20 2019 +0000

    Rename "javax.annotation.*" to "jakarta.annotation.*"
---
 build.xml                                          | 10 ++++--
 java/{javax => jakarta}/annotation/Generated.java  |  2 +-
 .../{javax => jakarta}/annotation/ManagedBean.java |  2 +-
 .../annotation/PostConstruct.java                  |  2 +-
 java/{javax => jakarta}/annotation/PreDestroy.java |  2 +-
 java/{javax => jakarta}/annotation/Priority.java   |  2 +-
 java/{javax => jakarta}/annotation/Resource.java   |  2 +-
 java/{javax => jakarta}/annotation/Resources.java  |  2 +-
 .../annotation/security/DeclareRoles.java          |  2 +-
 .../annotation/security/DenyAll.java               |  2 +-
 .../annotation/security/PermitAll.java             |  2 +-
 .../annotation/security/RolesAllowed.java          |  2 +-
 .../annotation/security/RunAs.java                 |  2 +-
 .../annotation/sql/DataSourceDefinition.java       |  2 +-
 .../annotation/sql/DataSourceDefinitions.java      |  2 +-
 .../catalina/core/DefaultInstanceManager.java      |  7 ++--
 .../apache/catalina/startup/WebAnnotationSet.java  |  9 +++---
 modules/cxf/pom.xml                                |  2 +-
 res/META-INF/annotations-api.jar.manifest          |  4 +--
 res/bnd/annotations-api.jar.tmp.bnd                |  6 ++--
 res/checkstyle/checkstyle.xml                      |  2 +-
 res/checkstyle/jakarta-checkstyle.xml              | 37 ++++++++++++++++++++++
 ...port-control.xml => jakarta-import-control.xml} |  4 +--
 res/checkstyle/javax-import-control.xml            |  2 +-
 res/checkstyle/org-import-control.xml              |  8 ++---
 .../startup/TesterServletWithAnnotations.java      |  3 +-
 .../startup/TesterServletWithLifeCycleMethods.java |  5 +--
 test/webapp/annotations.jsp                        |  2 +-
 28 files changed, 88 insertions(+), 41 deletions(-)

diff --git a/build.xml b/build.xml
index 4141d0a..133fb74 100644
--- a/build.xml
+++ b/build.xml
@@ -327,7 +327,7 @@
   <!-- ========= Pattern sets used to control content of JAR files ========= -->
   <!-- Pattern sets for jar files in standard distributions -->
   <patternset id="files.annotations-api">
-    <include name="javax/annotation/**" />
+    <include name="jakarta/annotation/**" />
   </patternset>
 
   <patternset id="files.servlet-api">
@@ -627,6 +627,12 @@
         <exclude name="build.properties" />
       </fileset>
     </checkstyle>
+    <!-- jakarta package checks -->
+    <checkstyle config="res/checkstyle/jakarta-checkstyle.xml">
+      <fileset dir="java/jakarta" >
+        <include name="**/*.java"/>
+      </fileset>
+    </checkstyle>
     <!-- javax package checks -->
     <checkstyle config="res/checkstyle/javax-checkstyle.xml">
       <fileset dir="java/javax" >
@@ -1879,7 +1885,7 @@ Apache Tomcat ${version} native binaries for Win64 AMD64/EMT64 platform.
 
   <target name="javadoc" depends="dist-source"
     description="Create the Tomcat javadoc" >
-    <javadoc packagenames="javax.annotation.*"
+    <javadoc packagenames="jakarta.annotation.*"
       sourcepath="${tomcat.dist}/src/java"
       destdir="${tomcat.dist}/webapps/docs/annotationapi"
       version="true"
diff --git a/java/javax/annotation/Generated.java b/java/jakarta/annotation/Generated.java
similarity index 98%
rename from java/javax/annotation/Generated.java
rename to java/jakarta/annotation/Generated.java
index 06d99bd..a2f6913 100644
--- a/java/javax/annotation/Generated.java
+++ b/java/jakarta/annotation/Generated.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.annotation;
+package jakarta.annotation;
 
 import java.lang.annotation.Documented;
 import java.lang.annotation.ElementType;
diff --git a/java/javax/annotation/ManagedBean.java b/java/jakarta/annotation/ManagedBean.java
similarity index 97%
rename from java/javax/annotation/ManagedBean.java
rename to java/jakarta/annotation/ManagedBean.java
index f2739a4..a602b04 100644
--- a/java/javax/annotation/ManagedBean.java
+++ b/java/jakarta/annotation/ManagedBean.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.annotation;
+package jakarta.annotation;
 
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;
diff --git a/java/javax/annotation/PostConstruct.java b/java/jakarta/annotation/PostConstruct.java
similarity index 97%
rename from java/javax/annotation/PostConstruct.java
rename to java/jakarta/annotation/PostConstruct.java
index 3ecb25b..62e6096 100644
--- a/java/javax/annotation/PostConstruct.java
+++ b/java/jakarta/annotation/PostConstruct.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.annotation;
+package jakarta.annotation;
 
 import java.lang.annotation.Documented;
 import java.lang.annotation.ElementType;
diff --git a/java/javax/annotation/PreDestroy.java b/java/jakarta/annotation/PreDestroy.java
similarity index 97%
rename from java/javax/annotation/PreDestroy.java
rename to java/jakarta/annotation/PreDestroy.java
index eb1d578..6a07a95 100644
--- a/java/javax/annotation/PreDestroy.java
+++ b/java/jakarta/annotation/PreDestroy.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.annotation;
+package jakarta.annotation;
 
 import java.lang.annotation.Documented;
 import java.lang.annotation.ElementType;
diff --git a/java/javax/annotation/Priority.java b/java/jakarta/annotation/Priority.java
similarity index 97%
rename from java/javax/annotation/Priority.java
rename to java/jakarta/annotation/Priority.java
index a4980da..f5b59c1 100644
--- a/java/javax/annotation/Priority.java
+++ b/java/jakarta/annotation/Priority.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.annotation;
+package jakarta.annotation;
 
 import java.lang.annotation.Documented;
 import java.lang.annotation.ElementType;
diff --git a/java/javax/annotation/Resource.java b/java/jakarta/annotation/Resource.java
similarity index 98%
rename from java/javax/annotation/Resource.java
rename to java/jakarta/annotation/Resource.java
index 498ca22..70b4d76 100644
--- a/java/javax/annotation/Resource.java
+++ b/java/jakarta/annotation/Resource.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.annotation;
+package jakarta.annotation;
 
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;
diff --git a/java/javax/annotation/Resources.java b/java/jakarta/annotation/Resources.java
similarity index 97%
rename from java/javax/annotation/Resources.java
rename to java/jakarta/annotation/Resources.java
index 7b79dda..12317ed 100644
--- a/java/javax/annotation/Resources.java
+++ b/java/jakarta/annotation/Resources.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.annotation;
+package jakarta.annotation;
 
 import java.lang.annotation.Documented;
 import java.lang.annotation.ElementType;
diff --git a/java/javax/annotation/security/DeclareRoles.java b/java/jakarta/annotation/security/DeclareRoles.java
similarity index 96%
rename from java/javax/annotation/security/DeclareRoles.java
rename to java/jakarta/annotation/security/DeclareRoles.java
index d50e30d..e0f93df 100644
--- a/java/javax/annotation/security/DeclareRoles.java
+++ b/java/jakarta/annotation/security/DeclareRoles.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.annotation.security;
+package jakarta.annotation.security;
 
 import java.lang.annotation.Documented;
 import java.lang.annotation.ElementType;
diff --git a/java/javax/annotation/security/DenyAll.java b/java/jakarta/annotation/security/DenyAll.java
similarity index 96%
rename from java/javax/annotation/security/DenyAll.java
rename to java/jakarta/annotation/security/DenyAll.java
index 069aca2..f722de3 100644
--- a/java/javax/annotation/security/DenyAll.java
+++ b/java/jakarta/annotation/security/DenyAll.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.annotation.security;
+package jakarta.annotation.security;
 
 import java.lang.annotation.Documented;
 import java.lang.annotation.ElementType;
diff --git a/java/javax/annotation/security/PermitAll.java b/java/jakarta/annotation/security/PermitAll.java
similarity index 96%
rename from java/javax/annotation/security/PermitAll.java
rename to java/jakarta/annotation/security/PermitAll.java
index db1d7b6..5ceaa32 100644
--- a/java/javax/annotation/security/PermitAll.java
+++ b/java/jakarta/annotation/security/PermitAll.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.annotation.security;
+package jakarta.annotation.security;
 
 import java.lang.annotation.Documented;
 import java.lang.annotation.ElementType;
diff --git a/java/javax/annotation/security/RolesAllowed.java b/java/jakarta/annotation/security/RolesAllowed.java
similarity index 97%
rename from java/javax/annotation/security/RolesAllowed.java
rename to java/jakarta/annotation/security/RolesAllowed.java
index f916b6d..5c4d14f 100644
--- a/java/javax/annotation/security/RolesAllowed.java
+++ b/java/jakarta/annotation/security/RolesAllowed.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.annotation.security;
+package jakarta.annotation.security;
 
 import java.lang.annotation.Documented;
 import java.lang.annotation.ElementType;
diff --git a/java/javax/annotation/security/RunAs.java b/java/jakarta/annotation/security/RunAs.java
similarity index 96%
rename from java/javax/annotation/security/RunAs.java
rename to java/jakarta/annotation/security/RunAs.java
index 8a366e2..f980219 100644
--- a/java/javax/annotation/security/RunAs.java
+++ b/java/jakarta/annotation/security/RunAs.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.annotation.security;
+package jakarta.annotation.security;
 
 import java.lang.annotation.Documented;
 import java.lang.annotation.ElementType;
diff --git a/java/javax/annotation/sql/DataSourceDefinition.java b/java/jakarta/annotation/sql/DataSourceDefinition.java
similarity index 98%
rename from java/javax/annotation/sql/DataSourceDefinition.java
rename to java/jakarta/annotation/sql/DataSourceDefinition.java
index feb0758..dd003a7 100644
--- a/java/javax/annotation/sql/DataSourceDefinition.java
+++ b/java/jakarta/annotation/sql/DataSourceDefinition.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.annotation.sql;
+package jakarta.annotation.sql;
 
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;
diff --git a/java/javax/annotation/sql/DataSourceDefinitions.java b/java/jakarta/annotation/sql/DataSourceDefinitions.java
similarity index 97%
rename from java/javax/annotation/sql/DataSourceDefinitions.java
rename to java/jakarta/annotation/sql/DataSourceDefinitions.java
index 7fcbc050..23f5a65 100644
--- a/java/javax/annotation/sql/DataSourceDefinitions.java
+++ b/java/jakarta/annotation/sql/DataSourceDefinitions.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.annotation.sql;
+package jakarta.annotation.sql;
 
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;
diff --git a/java/org/apache/catalina/core/DefaultInstanceManager.java b/java/org/apache/catalina/core/DefaultInstanceManager.java
index cd47c02..18c98d4 100644
--- a/java/org/apache/catalina/core/DefaultInstanceManager.java
+++ b/java/org/apache/catalina/core/DefaultInstanceManager.java
@@ -35,9 +35,6 @@ import java.util.Map;
 import java.util.Properties;
 import java.util.Set;
 
-import javax.annotation.PostConstruct;
-import javax.annotation.PreDestroy;
-import javax.annotation.Resource;
 import javax.ejb.EJB;
 import javax.naming.Context;
 import javax.naming.NamingException;
@@ -45,6 +42,10 @@ import javax.persistence.PersistenceContext;
 import javax.persistence.PersistenceUnit;
 import javax.xml.ws.WebServiceRef;
 
+import jakarta.annotation.PostConstruct;
+import jakarta.annotation.PreDestroy;
+import jakarta.annotation.Resource;
+
 import org.apache.catalina.ContainerServlet;
 import org.apache.catalina.Globals;
 import org.apache.catalina.security.SecurityUtil;
diff --git a/java/org/apache/catalina/startup/WebAnnotationSet.java b/java/org/apache/catalina/startup/WebAnnotationSet.java
index f1636af..6921023 100644
--- a/java/org/apache/catalina/startup/WebAnnotationSet.java
+++ b/java/org/apache/catalina/startup/WebAnnotationSet.java
@@ -19,13 +19,14 @@ package org.apache.catalina.startup;
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 
-import javax.annotation.Resource;
-import javax.annotation.Resources;
-import javax.annotation.security.DeclareRoles;
-import javax.annotation.security.RunAs;
 import javax.servlet.ServletSecurityElement;
 import javax.servlet.annotation.ServletSecurity;
 
+import jakarta.annotation.Resource;
+import jakarta.annotation.Resources;
+import jakarta.annotation.security.DeclareRoles;
+import jakarta.annotation.security.RunAs;
+
 import org.apache.catalina.Container;
 import org.apache.catalina.Context;
 import org.apache.catalina.Wrapper;
diff --git a/modules/cxf/pom.xml b/modules/cxf/pom.xml
index 23eb7e9..7bfff9a 100644
--- a/modules/cxf/pom.xml
+++ b/modules/cxf/pom.xml
@@ -125,7 +125,7 @@
 				            <artifactSet>
                                 <excludes>
                                     <!-- Already present in Tomcat or in the CDI bundle -->
-                                    <exclude>javax.annotation:javax.annotation-api</exclude>
+                                    <exclude>jakarta.annotation:jakarta.annotation-api</exclude>
 									<exclude>javax.el:*</exclude>
 									<exclude>javax.enterprise:cdi-api</exclude>
 									<exclude>javax.inject:*</exclude>
diff --git a/res/META-INF/annotations-api.jar.manifest b/res/META-INF/annotations-api.jar.manifest
index d813b80..4b43993 100644
--- a/res/META-INF/annotations-api.jar.manifest
+++ b/res/META-INF/annotations-api.jar.manifest
@@ -2,8 +2,8 @@ Manifest-version: 1.0
 X-Compile-Source-JDK: @source.jdk@
 X-Compile-Target-JDK: @target.jdk@
 
-Name: javax/annotation/
-Implementation-Title: javax.annotation
+Name: jakarta/annotation/
+Implementation-Title: jakarta.annotation
 Implementation-Vendor: Apache Software Foundation
 Implementation-Version: 1.3.@annotation.revision@
 Specification-Title: Common Annotations
diff --git a/res/bnd/annotations-api.jar.tmp.bnd b/res/bnd/annotations-api.jar.tmp.bnd
index 0a53313..032eb3f 100644
--- a/res/bnd/annotations-api.jar.tmp.bnd
+++ b/res/bnd/annotations-api.jar.tmp.bnd
@@ -16,6 +16,6 @@ Bundle-Name: tomcat-annotations-api
 Bundle-SymbolicName: org.apache.tomcat-annotations-api
 Bundle-Version: @VERSION@
 Export-Package: \
-    javax.annotation,\
-    javax.annotation.security,\
-    javax.annotation.sql
+    jakarta.annotation,\
+    jakarta.annotation.security,\
+    jakarta.annotation.sql
diff --git a/res/checkstyle/checkstyle.xml b/res/checkstyle/checkstyle.xml
index 711212e..c0d687c 100644
--- a/res/checkstyle/checkstyle.xml
+++ b/res/checkstyle/checkstyle.xml
@@ -70,7 +70,7 @@
         <property name="illegalPkgs" value="sun,junit.framework"/>
     </module>
     <module name="ImportOrder">
-        <property name="groups" value="java,javax,org.hamcrest,org.junit,org,async,jsp2,util"/>
+        <property name="groups" value="java,javax,jakarta,org.hamcrest,org.junit,org,async,jsp2,util"/>
         <property name="ordered" value="true"/>
         <property name="separated" value="true"/>
         <property name="option" value="above"/>
diff --git a/res/checkstyle/jakarta-checkstyle.xml b/res/checkstyle/jakarta-checkstyle.xml
new file mode 100644
index 0000000..e9115ad
--- /dev/null
+++ b/res/checkstyle/jakarta-checkstyle.xml
@@ -0,0 +1,37 @@
+<?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.
+-->
+<!DOCTYPE module PUBLIC
+    "-//Puppy Crawl//DTD Check Configuration 1.2//EN"
+    "http://www.puppycrawl.com/dtds/configuration_1_2.dtd">
+<module name="Checker">
+  <!-- When adding checks, keep to the order checks are listed under         -->
+  <!-- 'Standard Checks' in the Checkstyle documentation:                    -->
+  <!-- http://checkstyle.sourceforge.net/config_coding.html                  -->
+
+  <!-- Cache what has passed checkstyle -->
+  <property name="cacheFile"
+            value="${tomcat.output}/res/checkstyle/cachefile-jakarta-checkstyle.xml"/>
+
+  <!-- Specific checks for javax.* packages -->
+
+  <module name="TreeWalker">
+    <module name="ImportControl">
+      <property name="file" value="${basedir}/res/checkstyle/jakarta-import-control.xml"/>
+    </module>
+  </module>
+</module>
diff --git a/res/checkstyle/javax-import-control.xml b/res/checkstyle/jakarta-import-control.xml
similarity index 96%
copy from res/checkstyle/javax-import-control.xml
copy to res/checkstyle/jakarta-import-control.xml
index 010f511..26ec8b0 100644
--- a/res/checkstyle/javax-import-control.xml
+++ b/res/checkstyle/jakarta-import-control.xml
@@ -19,10 +19,10 @@
     "-//Puppy Crawl//DTD Import Control 1.1//EN"
     "http://www.puppycrawl.com/dtds/import_control_1_1.dtd">
 
-<import-control pkg="javax">
+<import-control pkg="jakarta">
   <allow pkg="java"/>
   <subpackage name="annotation">
-    <allow pkg="javax.annotation"/>
+    <allow pkg="jakarta.annotation"/>
   </subpackage>
   <subpackage name="ejb">
     <allow pkg="javax.ejb"/>
diff --git a/res/checkstyle/javax-import-control.xml b/res/checkstyle/javax-import-control.xml
index 010f511..3ba050d 100644
--- a/res/checkstyle/javax-import-control.xml
+++ b/res/checkstyle/javax-import-control.xml
@@ -22,7 +22,7 @@
 <import-control pkg="javax">
   <allow pkg="java"/>
   <subpackage name="annotation">
-    <allow pkg="javax.annotation"/>
+    <allow pkg="jakarta.annotation"/>
   </subpackage>
   <subpackage name="ejb">
     <allow pkg="javax.ejb"/>
diff --git a/res/checkstyle/org-import-control.xml b/res/checkstyle/org-import-control.xml
index afa3e61..269e160 100644
--- a/res/checkstyle/org-import-control.xml
+++ b/res/checkstyle/org-import-control.xml
@@ -36,7 +36,7 @@
   <allow pkg="org.xml.sax"/>
   <allow pkg="org.ietf.jgss"/>
   <subpackage name="catalina">
-    <allow pkg="javax.annotation"/>
+    <allow pkg="jakarta.annotation"/>
     <allow pkg="javax.ejb"/>
     <allow pkg="javax.persistence"/>
     <allow pkg="javax.servlet"/>
@@ -50,7 +50,7 @@
     <subpackage name="ant">
       <allow pkg="org.apache.tools.ant"/>
       <allow class="org.apache.tomcat.util.Base64"/>
-      <disallow pkg="javax.annotation"/>
+      <disallow pkg="jakarta.annotation"/>
       <disallow pkg="javax.ejb"/>
       <disallow pkg="javax.persistence"/>
       <disallow pkg="javax.servlet"/>
@@ -59,7 +59,7 @@
       <disallow pkg="org.apache.naming"/>
     </subpackage>
     <subpackage name="ha">
-      <disallow pkg="javax.annotation"/>
+      <disallow pkg="jakarta.annotation"/>
       <disallow pkg="javax.ejb"/>
       <disallow pkg="javax.persistence"/>
       <disallow pkg="org.apache.coyote"/>
@@ -72,7 +72,7 @@
       <allow pkg="org.apache.catalina.tribes"/>
     </subpackage>
     <subpackage name="tribes">
-      <disallow pkg="javax.annotation"/>
+      <disallow pkg="jakarta.annotation"/>
       <disallow pkg="javax.ejb"/>
       <disallow pkg="javax.persistence"/>
       <disallow pkg="javax.servlet"/>
diff --git a/test/org/apache/catalina/startup/TesterServletWithAnnotations.java b/test/org/apache/catalina/startup/TesterServletWithAnnotations.java
index 30a019c..28a1232 100644
--- a/test/org/apache/catalina/startup/TesterServletWithAnnotations.java
+++ b/test/org/apache/catalina/startup/TesterServletWithAnnotations.java
@@ -19,12 +19,13 @@ package org.apache.catalina.startup;
 
 import java.io.IOException;
 
-import javax.annotation.Resource;
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import jakarta.annotation.Resource;
+
 public class TesterServletWithAnnotations extends HttpServlet {
 
     private static final long serialVersionUID = 1L;
diff --git a/test/org/apache/catalina/startup/TesterServletWithLifeCycleMethods.java b/test/org/apache/catalina/startup/TesterServletWithLifeCycleMethods.java
index a6a7c45..0d4ffaa 100644
--- a/test/org/apache/catalina/startup/TesterServletWithLifeCycleMethods.java
+++ b/test/org/apache/catalina/startup/TesterServletWithLifeCycleMethods.java
@@ -19,13 +19,14 @@ package org.apache.catalina.startup;
 
 import java.io.IOException;
 
-import javax.annotation.PostConstruct;
-import javax.annotation.PreDestroy;
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import jakarta.annotation.PostConstruct;
+import jakarta.annotation.PreDestroy;
+
 public class TesterServletWithLifeCycleMethods extends HttpServlet {
 
     private static final long serialVersionUID = 1L;
diff --git a/test/webapp/annotations.jsp b/test/webapp/annotations.jsp
index 180743d..04b63ce 100644
--- a/test/webapp/annotations.jsp
+++ b/test/webapp/annotations.jsp
@@ -14,7 +14,7 @@
   See the License for the specific language governing permissions and
   limitations under the License.
 --%>
-<%@page import="javax.annotation.PostConstruct"%>
+<%@page import="jakarta.annotation.PostConstruct"%>
 <html>
   <head><title>Annotations test case</title></head>
   <body>


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


[tomcat] 11/18: Rename "javax.websocket.*" to "jakarta.websocket.*"

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tomcat.git

commit 8f9e7bca3bb80785aef8c490a7d08ff83948b96b
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Thu Nov 28 19:33:00 2019 +0000

    Rename "javax.websocket.*" to "jakarta.websocket.*"
---
 build.xml                                          |  8 ++---
 .../websocket/ClientEndpoint.java                  |  4 +--
 .../websocket/ClientEndpointConfig.java            |  2 +-
 java/{javax => jakarta}/websocket/CloseReason.java |  2 +-
 .../websocket/ContainerProvider.java               |  2 +-
 .../websocket/DecodeException.java                 |  2 +-
 java/{javax => jakarta}/websocket/Decoder.java     |  2 +-
 .../websocket/DefaultClientEndpointConfig.java     |  2 +-
 .../websocket/DeploymentException.java             |  2 +-
 .../websocket/EncodeException.java                 |  2 +-
 java/{javax => jakarta}/websocket/Encoder.java     |  2 +-
 java/{javax => jakarta}/websocket/Endpoint.java    |  2 +-
 .../websocket/EndpointConfig.java                  |  2 +-
 java/{javax => jakarta}/websocket/Extension.java   |  2 +-
 .../websocket/HandshakeResponse.java               |  2 +-
 .../websocket/MessageHandler.java                  |  2 +-
 java/{javax => jakarta}/websocket/OnClose.java     |  2 +-
 java/{javax => jakarta}/websocket/OnError.java     |  2 +-
 java/{javax => jakarta}/websocket/OnMessage.java   |  2 +-
 java/{javax => jakarta}/websocket/OnOpen.java      |  2 +-
 java/{javax => jakarta}/websocket/PongMessage.java |  2 +-
 .../websocket/RemoteEndpoint.java                  |  2 +-
 java/{javax => jakarta}/websocket/SendHandler.java |  2 +-
 java/{javax => jakarta}/websocket/SendResult.java  |  2 +-
 java/{javax => jakarta}/websocket/Session.java     |  8 ++---
 .../websocket/SessionException.java                |  2 +-
 .../websocket/WebSocketContainer.java              |  2 +-
 .../server/DefaultServerEndpointConfig.java        |  8 ++---
 .../websocket/server/HandshakeRequest.java         |  2 +-
 .../websocket/server/PathParam.java                |  2 +-
 .../websocket/server/ServerApplicationConfig.java  |  4 +--
 .../websocket/server/ServerContainer.java          |  6 ++--
 .../websocket/server/ServerEndpoint.java           |  6 ++--
 .../websocket/server/ServerEndpointConfig.java     | 12 +++----
 java/org/apache/tomcat/websocket/Constants.java    |  2 +-
 java/org/apache/tomcat/websocket/DecoderEntry.java |  2 +-
 .../tomcat/websocket/FutureToSendHandler.java      |  4 +--
 .../tomcat/websocket/MessageHandlerResult.java     |  2 +-
 java/org/apache/tomcat/websocket/MessagePart.java  |  2 +-
 .../apache/tomcat/websocket/PerMessageDeflate.java |  6 ++--
 .../apache/tomcat/websocket/Transformation.java    |  2 +-
 .../tomcat/websocket/TransformationFactory.java    |  2 +-
 java/org/apache/tomcat/websocket/Util.java         | 28 ++++++++--------
 .../tomcat/websocket/WrappedMessageHandler.java    |  2 +-
 .../tomcat/websocket/WsContainerProvider.java      |  4 +--
 java/org/apache/tomcat/websocket/WsExtension.java  |  2 +-
 .../tomcat/websocket/WsExtensionParameter.java     |  2 +-
 java/org/apache/tomcat/websocket/WsFrameBase.java  | 10 +++---
 .../org/apache/tomcat/websocket/WsFrameClient.java |  4 +--
 .../tomcat/websocket/WsHandshakeResponse.java      |  2 +-
 .../org/apache/tomcat/websocket/WsIOException.java |  2 +-
 .../org/apache/tomcat/websocket/WsPongMessage.java |  2 +-
 .../tomcat/websocket/WsRemoteEndpointAsync.java    |  4 +--
 .../tomcat/websocket/WsRemoteEndpointBase.java     |  2 +-
 .../tomcat/websocket/WsRemoteEndpointBasic.java    |  4 +--
 .../tomcat/websocket/WsRemoteEndpointImplBase.java | 18 +++++------
 .../websocket/WsRemoteEndpointImplClient.java      |  4 +--
 java/org/apache/tomcat/websocket/WsSession.java    | 32 +++++++++----------
 .../tomcat/websocket/WsWebSocketContainer.java     | 21 ++++++------
 .../tomcat/websocket/pojo/PojoEndpointBase.java    | 10 +++---
 .../tomcat/websocket/pojo/PojoEndpointClient.java  | 12 +++----
 .../tomcat/websocket/pojo/PojoEndpointServer.java  | 10 +++---
 .../websocket/pojo/PojoMessageHandlerBase.java     |  8 ++---
 .../pojo/PojoMessageHandlerPartialBase.java        |  6 ++--
 .../pojo/PojoMessageHandlerPartialBinary.java      |  2 +-
 .../pojo/PojoMessageHandlerPartialText.java        |  2 +-
 .../pojo/PojoMessageHandlerWholeBase.java          |  6 ++--
 .../pojo/PojoMessageHandlerWholeBinary.java        | 12 +++----
 .../pojo/PojoMessageHandlerWholePong.java          |  4 +--
 .../pojo/PojoMessageHandlerWholeText.java          | 12 +++----
 .../tomcat/websocket/pojo/PojoMethodMapping.java   | 28 ++++++++--------
 .../tomcat/websocket/pojo/PojoPathParam.java       |  8 ++---
 .../apache/tomcat/websocket/pojo/package-info.java |  2 +-
 .../apache/tomcat/websocket/server/Constants.java  |  2 +-
 .../server/DefaultServerEndpointConfigurator.java  |  8 ++---
 .../tomcat/websocket/server/UpgradeUtil.java       |  9 +++---
 .../tomcat/websocket/server/UriTemplate.java       |  2 +-
 .../websocket/server/WsHandshakeRequest.java       |  3 +-
 .../websocket/server/WsHttpUpgradeHandler.java     | 13 ++++----
 .../tomcat/websocket/server/WsMappingResult.java   |  2 +-
 .../server/WsPerSessionServerEndpointConfig.java   |  8 ++---
 .../server/WsRemoteEndpointImplServer.java         |  8 ++---
 java/org/apache/tomcat/websocket/server/WsSci.java | 15 ++++-----
 .../tomcat/websocket/server/WsServerContainer.java | 17 +++++-----
 ...rovider => jakarta.websocket.ContainerProvider} |  0
 ...ocket.server.ServerEndpointConfig$Configurator} |  0
 res/META-INF/websocket-api.jar.manifest            |  4 +--
 res/bnd/tomcat-embed-websocket.jar.tmp.bnd         |  4 +--
 res/bnd/websocket-api.jar.tmp.bnd                  |  4 +--
 res/checkstyle/jakarta-import-control.xml          |  3 ++
 res/checkstyle/javax-import-control.xml            |  3 --
 res/checkstyle/org-import-control.xml              |  2 +-
 .../TesterContainerProviderPerformance.java        |  2 +-
 .../catalina/loader/TestWebappClassLoader.java     |  2 +-
 .../tomcat/websocket/TestConnectionLimit.java      |  8 ++---
 .../tomcat/websocket/TestPerMessageDeflate.java    |  4 +--
 test/org/apache/tomcat/websocket/TestUtil.java     | 12 +++----
 .../tomcat/websocket/TestWebSocketFrameClient.java | 10 +++---
 .../websocket/TestWebSocketFrameClientSSL.java     | 10 +++---
 .../tomcat/websocket/TestWsPingPongMessages.java   | 10 +++---
 .../tomcat/websocket/TestWsRemoteEndpoint.java     | 10 +++---
 .../websocket/TestWsSessionSuspendResume.java      | 16 +++++-----
 .../tomcat/websocket/TestWsSubprotocols.java       | 16 +++++-----
 .../tomcat/websocket/TestWsWebSocketContainer.java | 31 +++++++++---------
 .../TestWsWebSocketContainerGetOpenSessions.java   | 27 ++++++++--------
 .../apache/tomcat/websocket/TesterAsyncTiming.java | 12 +++----
 .../tomcat/websocket/TesterBlockWebSocketSCI.java  |  6 ++--
 .../apache/tomcat/websocket/TesterEchoServer.java  | 11 +++----
 .../tomcat/websocket/TesterFirehoseServer.java     | 14 ++++----
 .../tomcat/websocket/TesterMessageCountClient.java | 18 +++++------
 .../tomcat/websocket/TesterWsClientAutobahn.java   | 20 ++++++------
 .../websocket/pojo/TestEncodingDecoding.java       | 37 +++++++++++-----------
 .../websocket/pojo/TestPojoEndpointBase.java       | 18 +++++------
 .../websocket/pojo/TestPojoMethodMapping.java      | 16 +++++-----
 .../apache/tomcat/websocket/pojo/TesterUtil.java   |  4 +--
 .../tomcat/websocket/server/TestAsyncMessages.java | 10 +++---
 .../tomcat/websocket/server/TestClassLoader.java   | 14 ++++----
 .../apache/tomcat/websocket/server/TestClose.java  | 18 +++++------
 .../tomcat/websocket/server/TestCloseBug58624.java | 25 +++++++--------
 .../tomcat/websocket/server/TestShutdown.java      | 16 +++++-----
 .../server/TestWsRemoteEndpointImplServer.java     | 24 +++++++-------
 .../websocket/server/TestWsServerContainer.java    | 12 +++----
 .../websocket/server/TesterEndpointConfig.java     |  7 ++--
 .../tomcat/websocket/server/TesterWsClient.java    |  2 +-
 webapps/docs/web-socket-howto.xml                  |  6 ++--
 .../WEB-INF/classes/websocket/ExamplesConfig.java  |  6 ++--
 .../classes/websocket/chat/ChatAnnotation.java     | 12 +++----
 .../classes/websocket/drawboard/Client.java        | 12 +++----
 .../websocket/drawboard/DrawboardEndpoint.java     | 10 +++---
 .../classes/websocket/echo/EchoAnnotation.java     |  8 ++---
 .../websocket/echo/EchoAsyncAnnotation.java        |  8 ++---
 .../classes/websocket/echo/EchoEndpoint.java       | 10 +++---
 .../websocket/echo/EchoStreamAnnotation.java       |  8 ++---
 .../WEB-INF/classes/websocket/snake/Snake.java     |  6 ++--
 .../classes/websocket/snake/SnakeAnnotation.java   | 12 +++----
 135 files changed, 516 insertions(+), 526 deletions(-)

diff --git a/build.xml b/build.xml
index 1f30fc0..1e12c7c 100644
--- a/build.xml
+++ b/build.xml
@@ -271,8 +271,8 @@
     <include name="**/NOTICE"/>
     <include name="**/RELEASE-NOTES"/>
     <include name="**/jakarta.servlet.ServletContainerInitializer"/>
-    <include name="**/javax.websocket.ContainerProvider"/>
-    <include name="**/javax.websocket.server.ServerEndpointConfig$Configurator"/>
+    <include name="**/jakarta.websocket.ContainerProvider"/>
+    <include name="**/jakarta.websocket.server.ServerEndpointConfig$Configurator"/>
     <include name="**/.gitignore"/>
     <include name="**/*.bnd"/>
     <include name="**/*.classpath"/>
@@ -348,7 +348,7 @@
   </patternset>
 
   <patternset id="files.websocket-api">
-    <include name="javax/websocket/**" />
+    <include name="jakarta/websocket/**" />
   </patternset>
 
   <patternset id="files.jaspic-api">
@@ -1971,7 +1971,7 @@ Apache Tomcat ${version} native binaries for Win64 AMD64/EMT64 platform.
         <path location="${ant.core.lib}"/>
       </classpath>
     </javadoc>
-    <javadoc packagenames="javax.websocket.*"
+    <javadoc packagenames="jakarta.websocket.*"
       sourcepath="${tomcat.dist}/src/java"
       destdir="${tomcat.dist}/webapps/docs/websocketapi"
       version="true"
diff --git a/java/javax/websocket/ClientEndpoint.java b/java/jakarta/websocket/ClientEndpoint.java
similarity index 93%
rename from java/javax/websocket/ClientEndpoint.java
rename to java/jakarta/websocket/ClientEndpoint.java
index ee98417..4c44b07 100644
--- a/java/javax/websocket/ClientEndpoint.java
+++ b/java/jakarta/websocket/ClientEndpoint.java
@@ -14,14 +14,14 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.websocket;
+package jakarta.websocket;
 
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
 
-import javax.websocket.ClientEndpointConfig.Configurator;
+import jakarta.websocket.ClientEndpointConfig.Configurator;
 
 @Retention(RetentionPolicy.RUNTIME)
 @Target(ElementType.TYPE)
diff --git a/java/javax/websocket/ClientEndpointConfig.java b/java/jakarta/websocket/ClientEndpointConfig.java
similarity index 99%
rename from java/javax/websocket/ClientEndpointConfig.java
rename to java/jakarta/websocket/ClientEndpointConfig.java
index 13b6cba..a56af4b 100644
--- a/java/javax/websocket/ClientEndpointConfig.java
+++ b/java/jakarta/websocket/ClientEndpointConfig.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.websocket;
+package jakarta.websocket;
 
 import java.util.Collections;
 import java.util.List;
diff --git a/java/javax/websocket/CloseReason.java b/java/jakarta/websocket/CloseReason.java
similarity index 99%
rename from java/javax/websocket/CloseReason.java
rename to java/jakarta/websocket/CloseReason.java
index ef88d13..dae0777 100644
--- a/java/javax/websocket/CloseReason.java
+++ b/java/jakarta/websocket/CloseReason.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.websocket;
+package jakarta.websocket;
 
 public class CloseReason {
 
diff --git a/java/javax/websocket/ContainerProvider.java b/java/jakarta/websocket/ContainerProvider.java
similarity index 98%
rename from java/javax/websocket/ContainerProvider.java
rename to java/jakarta/websocket/ContainerProvider.java
index f95c9ad..33a8af2 100644
--- a/java/javax/websocket/ContainerProvider.java
+++ b/java/jakarta/websocket/ContainerProvider.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.websocket;
+package jakarta.websocket;
 
 import java.util.Iterator;
 import java.util.ServiceLoader;
diff --git a/java/javax/websocket/DecodeException.java b/java/jakarta/websocket/DecodeException.java
similarity index 98%
rename from java/javax/websocket/DecodeException.java
rename to java/jakarta/websocket/DecodeException.java
index 771cfa5..6076e90 100644
--- a/java/javax/websocket/DecodeException.java
+++ b/java/jakarta/websocket/DecodeException.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.websocket;
+package jakarta.websocket;
 
 import java.nio.ByteBuffer;
 
diff --git a/java/javax/websocket/Decoder.java b/java/jakarta/websocket/Decoder.java
similarity index 98%
rename from java/javax/websocket/Decoder.java
rename to java/jakarta/websocket/Decoder.java
index fad262e..c8fa343 100644
--- a/java/javax/websocket/Decoder.java
+++ b/java/jakarta/websocket/Decoder.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.websocket;
+package jakarta.websocket;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/java/javax/websocket/DefaultClientEndpointConfig.java b/java/jakarta/websocket/DefaultClientEndpointConfig.java
similarity index 98%
rename from java/javax/websocket/DefaultClientEndpointConfig.java
rename to java/jakarta/websocket/DefaultClientEndpointConfig.java
index ce28cb2..e166925 100644
--- a/java/javax/websocket/DefaultClientEndpointConfig.java
+++ b/java/jakarta/websocket/DefaultClientEndpointConfig.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.websocket;
+package jakarta.websocket;
 
 import java.util.List;
 import java.util.Map;
diff --git a/java/javax/websocket/DeploymentException.java b/java/jakarta/websocket/DeploymentException.java
similarity index 97%
rename from java/javax/websocket/DeploymentException.java
rename to java/jakarta/websocket/DeploymentException.java
index 1678fd0..75bb027 100644
--- a/java/javax/websocket/DeploymentException.java
+++ b/java/jakarta/websocket/DeploymentException.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.websocket;
+package jakarta.websocket;
 
 public class DeploymentException extends Exception {
 
diff --git a/java/javax/websocket/EncodeException.java b/java/jakarta/websocket/EncodeException.java
similarity index 97%
rename from java/javax/websocket/EncodeException.java
rename to java/jakarta/websocket/EncodeException.java
index fdb536a..21e8598 100644
--- a/java/javax/websocket/EncodeException.java
+++ b/java/jakarta/websocket/EncodeException.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.websocket;
+package jakarta.websocket;
 
 public class EncodeException extends Exception {
 
diff --git a/java/javax/websocket/Encoder.java b/java/jakarta/websocket/Encoder.java
similarity index 98%
rename from java/javax/websocket/Encoder.java
rename to java/jakarta/websocket/Encoder.java
index 42a107f..8b2c871 100644
--- a/java/javax/websocket/Encoder.java
+++ b/java/jakarta/websocket/Encoder.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.websocket;
+package jakarta.websocket;
 
 import java.io.IOException;
 import java.io.OutputStream;
diff --git a/java/javax/websocket/Endpoint.java b/java/jakarta/websocket/Endpoint.java
similarity index 98%
rename from java/javax/websocket/Endpoint.java
rename to java/jakarta/websocket/Endpoint.java
index 9dfdbcc..7a33a24 100644
--- a/java/javax/websocket/Endpoint.java
+++ b/java/jakarta/websocket/Endpoint.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.websocket;
+package jakarta.websocket;
 
 public abstract class Endpoint {
 
diff --git a/java/javax/websocket/EndpointConfig.java b/java/jakarta/websocket/EndpointConfig.java
similarity index 97%
rename from java/javax/websocket/EndpointConfig.java
rename to java/jakarta/websocket/EndpointConfig.java
index 0b6c968..ed2d423 100644
--- a/java/javax/websocket/EndpointConfig.java
+++ b/java/jakarta/websocket/EndpointConfig.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.websocket;
+package jakarta.websocket;
 
 import java.util.List;
 import java.util.Map;
diff --git a/java/javax/websocket/Extension.java b/java/jakarta/websocket/Extension.java
similarity index 97%
rename from java/javax/websocket/Extension.java
rename to java/jakarta/websocket/Extension.java
index b95b27b..98734b3 100644
--- a/java/javax/websocket/Extension.java
+++ b/java/jakarta/websocket/Extension.java
@@ -14,7 +14,7 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-package javax.websocket;
+package jakarta.websocket;
 
 import java.util.List;
 
diff --git a/java/javax/websocket/HandshakeResponse.java b/java/jakarta/websocket/HandshakeResponse.java
similarity index 97%
rename from java/javax/websocket/HandshakeResponse.java
rename to java/jakarta/websocket/HandshakeResponse.java
index 807192e..6754020 100644
--- a/java/javax/websocket/HandshakeResponse.java
+++ b/java/jakarta/websocket/HandshakeResponse.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.websocket;
+package jakarta.websocket;
 
 import java.util.List;
 import java.util.Map;
diff --git a/java/javax/websocket/MessageHandler.java b/java/jakarta/websocket/MessageHandler.java
similarity index 98%
rename from java/javax/websocket/MessageHandler.java
rename to java/jakarta/websocket/MessageHandler.java
index 2c30d99..212ec0e 100644
--- a/java/javax/websocket/MessageHandler.java
+++ b/java/jakarta/websocket/MessageHandler.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.websocket;
+package jakarta.websocket;
 
 public interface MessageHandler {
 
diff --git a/java/javax/websocket/OnClose.java b/java/jakarta/websocket/OnClose.java
similarity index 97%
rename from java/javax/websocket/OnClose.java
rename to java/jakarta/websocket/OnClose.java
index 6ee61d3..3129116 100644
--- a/java/javax/websocket/OnClose.java
+++ b/java/jakarta/websocket/OnClose.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.websocket;
+package jakarta.websocket;
 
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;
diff --git a/java/javax/websocket/OnError.java b/java/jakarta/websocket/OnError.java
similarity index 97%
rename from java/javax/websocket/OnError.java
rename to java/jakarta/websocket/OnError.java
index ce43148..a09a5bd 100644
--- a/java/javax/websocket/OnError.java
+++ b/java/jakarta/websocket/OnError.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.websocket;
+package jakarta.websocket;
 
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;
diff --git a/java/javax/websocket/OnMessage.java b/java/jakarta/websocket/OnMessage.java
similarity index 97%
rename from java/javax/websocket/OnMessage.java
rename to java/jakarta/websocket/OnMessage.java
index 564fa99..34cfcfa 100644
--- a/java/javax/websocket/OnMessage.java
+++ b/java/jakarta/websocket/OnMessage.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.websocket;
+package jakarta.websocket;
 
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;
diff --git a/java/javax/websocket/OnOpen.java b/java/jakarta/websocket/OnOpen.java
similarity index 97%
rename from java/javax/websocket/OnOpen.java
rename to java/jakarta/websocket/OnOpen.java
index 9f0ea6e..26b8e9d 100644
--- a/java/javax/websocket/OnOpen.java
+++ b/java/jakarta/websocket/OnOpen.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.websocket;
+package jakarta.websocket;
 
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;
diff --git a/java/javax/websocket/PongMessage.java b/java/jakarta/websocket/PongMessage.java
similarity index 97%
rename from java/javax/websocket/PongMessage.java
rename to java/jakarta/websocket/PongMessage.java
index 7e9e3b6..8740eae 100644
--- a/java/javax/websocket/PongMessage.java
+++ b/java/jakarta/websocket/PongMessage.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.websocket;
+package jakarta.websocket;
 
 import java.nio.ByteBuffer;
 
diff --git a/java/javax/websocket/RemoteEndpoint.java b/java/jakarta/websocket/RemoteEndpoint.java
similarity index 99%
rename from java/javax/websocket/RemoteEndpoint.java
rename to java/jakarta/websocket/RemoteEndpoint.java
index 19c7a10..213b8a4 100644
--- a/java/javax/websocket/RemoteEndpoint.java
+++ b/java/jakarta/websocket/RemoteEndpoint.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.websocket;
+package jakarta.websocket;
 
 import java.io.IOException;
 import java.io.OutputStream;
diff --git a/java/javax/websocket/SendHandler.java b/java/jakarta/websocket/SendHandler.java
similarity index 97%
rename from java/javax/websocket/SendHandler.java
rename to java/jakarta/websocket/SendHandler.java
index 65b9a19..9e8317c 100644
--- a/java/javax/websocket/SendHandler.java
+++ b/java/jakarta/websocket/SendHandler.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.websocket;
+package jakarta.websocket;
 
 public interface SendHandler {
 
diff --git a/java/javax/websocket/SendResult.java b/java/jakarta/websocket/SendResult.java
similarity index 97%
rename from java/javax/websocket/SendResult.java
rename to java/jakarta/websocket/SendResult.java
index a3797d5..e3d47ec 100644
--- a/java/javax/websocket/SendResult.java
+++ b/java/jakarta/websocket/SendResult.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.websocket;
+package jakarta.websocket;
 
 public final class SendResult {
     private final Throwable exception;
diff --git a/java/javax/websocket/Session.java b/java/jakarta/websocket/Session.java
similarity index 95%
rename from java/javax/websocket/Session.java
rename to java/jakarta/websocket/Session.java
index eea15e5..2ff44d6 100644
--- a/java/javax/websocket/Session.java
+++ b/java/jakarta/websocket/Session.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.websocket;
+package jakarta.websocket;
 
 import java.io.Closeable;
 import java.io.IOException;
@@ -38,9 +38,9 @@ public interface Session extends Closeable {
      * binary, pong). The message type will be derived at runtime from the
      * provided {@link MessageHandler} instance. It is not always possible to do
      * this so it is better to use
-     * {@link #addMessageHandler(Class, javax.websocket.MessageHandler.Partial)}
+     * {@link #addMessageHandler(Class, jakarta.websocket.MessageHandler.Partial)}
      * or
-     * {@link #addMessageHandler(Class, javax.websocket.MessageHandler.Whole)}.
+     * {@link #addMessageHandler(Class, jakarta.websocket.MessageHandler.Whole)}.
      *
      * @param handler   The message handler for a incoming message
      *
@@ -114,7 +114,7 @@ public interface Session extends Closeable {
 
     /**
      * Close the connection to the remote end point using the code
-     * {@link javax.websocket.CloseReason.CloseCodes#NORMAL_CLOSURE} and an
+     * {@link jakarta.websocket.CloseReason.CloseCodes#NORMAL_CLOSURE} and an
      * empty reason phrase.
      *
      * @throws IOException if an I/O error occurs while the WebSocket session is
diff --git a/java/javax/websocket/SessionException.java b/java/jakarta/websocket/SessionException.java
similarity index 97%
rename from java/javax/websocket/SessionException.java
rename to java/jakarta/websocket/SessionException.java
index 428b82e..b3eafed 100644
--- a/java/javax/websocket/SessionException.java
+++ b/java/jakarta/websocket/SessionException.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.websocket;
+package jakarta.websocket;
 
 public class SessionException extends Exception {
 
diff --git a/java/javax/websocket/WebSocketContainer.java b/java/jakarta/websocket/WebSocketContainer.java
similarity index 99%
rename from java/javax/websocket/WebSocketContainer.java
rename to java/jakarta/websocket/WebSocketContainer.java
index f2da3e4..d7fd1aa 100644
--- a/java/javax/websocket/WebSocketContainer.java
+++ b/java/jakarta/websocket/WebSocketContainer.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.websocket;
+package jakarta.websocket;
 
 import java.io.IOException;
 import java.net.URI;
diff --git a/java/javax/websocket/server/DefaultServerEndpointConfig.java b/java/jakarta/websocket/server/DefaultServerEndpointConfig.java
similarity index 95%
rename from java/javax/websocket/server/DefaultServerEndpointConfig.java
rename to java/jakarta/websocket/server/DefaultServerEndpointConfig.java
index 7c3b8d7..e0122f2 100644
--- a/java/javax/websocket/server/DefaultServerEndpointConfig.java
+++ b/java/jakarta/websocket/server/DefaultServerEndpointConfig.java
@@ -14,15 +14,15 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.websocket.server;
+package jakarta.websocket.server;
 
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
-import javax.websocket.Decoder;
-import javax.websocket.Encoder;
-import javax.websocket.Extension;
+import jakarta.websocket.Decoder;
+import jakarta.websocket.Encoder;
+import jakarta.websocket.Extension;
 
 /**
  * Provides the default configuration for WebSocket server endpoints.
diff --git a/java/javax/websocket/server/HandshakeRequest.java b/java/jakarta/websocket/server/HandshakeRequest.java
similarity index 98%
rename from java/javax/websocket/server/HandshakeRequest.java
rename to java/jakarta/websocket/server/HandshakeRequest.java
index b42ca8d..2edb554 100644
--- a/java/javax/websocket/server/HandshakeRequest.java
+++ b/java/jakarta/websocket/server/HandshakeRequest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.websocket.server;
+package jakarta.websocket.server;
 
 import java.net.URI;
 import java.security.Principal;
diff --git a/java/javax/websocket/server/PathParam.java b/java/jakarta/websocket/server/PathParam.java
similarity index 97%
rename from java/javax/websocket/server/PathParam.java
rename to java/jakarta/websocket/server/PathParam.java
index ff1d085..bcf613f 100644
--- a/java/javax/websocket/server/PathParam.java
+++ b/java/jakarta/websocket/server/PathParam.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.websocket.server;
+package jakarta.websocket.server;
 
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;
diff --git a/java/javax/websocket/server/ServerApplicationConfig.java b/java/jakarta/websocket/server/ServerApplicationConfig.java
similarity index 96%
rename from java/javax/websocket/server/ServerApplicationConfig.java
rename to java/jakarta/websocket/server/ServerApplicationConfig.java
index b91f1c4..8f59597 100644
--- a/java/javax/websocket/server/ServerApplicationConfig.java
+++ b/java/jakarta/websocket/server/ServerApplicationConfig.java
@@ -14,11 +14,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.websocket.server;
+package jakarta.websocket.server;
 
 import java.util.Set;
 
-import javax.websocket.Endpoint;
+import jakarta.websocket.Endpoint;
 
 /**
  * Applications may provide an implementation of this interface to filter the
diff --git a/java/javax/websocket/server/ServerContainer.java b/java/jakarta/websocket/server/ServerContainer.java
similarity index 89%
rename from java/javax/websocket/server/ServerContainer.java
rename to java/jakarta/websocket/server/ServerContainer.java
index 3243a07..a210311 100644
--- a/java/javax/websocket/server/ServerContainer.java
+++ b/java/jakarta/websocket/server/ServerContainer.java
@@ -14,10 +14,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.websocket.server;
+package jakarta.websocket.server;
 
-import javax.websocket.DeploymentException;
-import javax.websocket.WebSocketContainer;
+import jakarta.websocket.DeploymentException;
+import jakarta.websocket.WebSocketContainer;
 
 /**
  * Provides the ability to deploy endpoints programmatically.
diff --git a/java/javax/websocket/server/ServerEndpoint.java b/java/jakarta/websocket/server/ServerEndpoint.java
similarity index 93%
rename from java/javax/websocket/server/ServerEndpoint.java
rename to java/jakarta/websocket/server/ServerEndpoint.java
index 43b7dfa..9c7f013 100644
--- a/java/javax/websocket/server/ServerEndpoint.java
+++ b/java/jakarta/websocket/server/ServerEndpoint.java
@@ -14,15 +14,15 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.websocket.server;
+package jakarta.websocket.server;
 
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
 
-import javax.websocket.Decoder;
-import javax.websocket.Encoder;
+import jakarta.websocket.Decoder;
+import jakarta.websocket.Encoder;
 
 @Retention(RetentionPolicy.RUNTIME)
 @Target(ElementType.TYPE)
diff --git a/java/javax/websocket/server/ServerEndpointConfig.java b/java/jakarta/websocket/server/ServerEndpointConfig.java
similarity index 97%
rename from java/javax/websocket/server/ServerEndpointConfig.java
rename to java/jakarta/websocket/server/ServerEndpointConfig.java
index fa56ce4..4fb16d3 100644
--- a/java/javax/websocket/server/ServerEndpointConfig.java
+++ b/java/jakarta/websocket/server/ServerEndpointConfig.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.websocket.server;
+package jakarta.websocket.server;
 
 import java.security.AccessController;
 import java.security.PrivilegedAction;
@@ -23,11 +23,11 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.ServiceLoader;
 
-import javax.websocket.Decoder;
-import javax.websocket.Encoder;
-import javax.websocket.EndpointConfig;
-import javax.websocket.Extension;
-import javax.websocket.HandshakeResponse;
+import jakarta.websocket.Decoder;
+import jakarta.websocket.Encoder;
+import jakarta.websocket.EndpointConfig;
+import jakarta.websocket.Extension;
+import jakarta.websocket.HandshakeResponse;
 
 /**
  * Provides configuration information for WebSocket endpoints published to a
diff --git a/java/org/apache/tomcat/websocket/Constants.java b/java/org/apache/tomcat/websocket/Constants.java
index fa01921..1971653 100644
--- a/java/org/apache/tomcat/websocket/Constants.java
+++ b/java/org/apache/tomcat/websocket/Constants.java
@@ -20,7 +20,7 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
-import javax.websocket.Extension;
+import jakarta.websocket.Extension;
 
 /**
  * Internal implementation constants.
diff --git a/java/org/apache/tomcat/websocket/DecoderEntry.java b/java/org/apache/tomcat/websocket/DecoderEntry.java
index 299e38e..3af5aa5 100644
--- a/java/org/apache/tomcat/websocket/DecoderEntry.java
+++ b/java/org/apache/tomcat/websocket/DecoderEntry.java
@@ -16,7 +16,7 @@
  */
 package org.apache.tomcat.websocket;
 
-import javax.websocket.Decoder;
+import jakarta.websocket.Decoder;
 
 public class DecoderEntry {
 
diff --git a/java/org/apache/tomcat/websocket/FutureToSendHandler.java b/java/org/apache/tomcat/websocket/FutureToSendHandler.java
index 692cb59..5882eef 100644
--- a/java/org/apache/tomcat/websocket/FutureToSendHandler.java
+++ b/java/org/apache/tomcat/websocket/FutureToSendHandler.java
@@ -23,8 +23,8 @@ import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 import java.util.concurrent.atomic.AtomicReference;
 
-import javax.websocket.SendHandler;
-import javax.websocket.SendResult;
+import jakarta.websocket.SendHandler;
+import jakarta.websocket.SendResult;
 
 import org.apache.tomcat.util.res.StringManager;
 
diff --git a/java/org/apache/tomcat/websocket/MessageHandlerResult.java b/java/org/apache/tomcat/websocket/MessageHandlerResult.java
index a55e8dd..2f6a938 100644
--- a/java/org/apache/tomcat/websocket/MessageHandlerResult.java
+++ b/java/org/apache/tomcat/websocket/MessageHandlerResult.java
@@ -16,7 +16,7 @@
  */
 package org.apache.tomcat.websocket;
 
-import javax.websocket.MessageHandler;
+import jakarta.websocket.MessageHandler;
 
 public class MessageHandlerResult {
 
diff --git a/java/org/apache/tomcat/websocket/MessagePart.java b/java/org/apache/tomcat/websocket/MessagePart.java
index f51c007..506289b 100644
--- a/java/org/apache/tomcat/websocket/MessagePart.java
+++ b/java/org/apache/tomcat/websocket/MessagePart.java
@@ -18,7 +18,7 @@ package org.apache.tomcat.websocket;
 
 import java.nio.ByteBuffer;
 
-import javax.websocket.SendHandler;
+import jakarta.websocket.SendHandler;
 
 class MessagePart {
     private final boolean fin;
diff --git a/java/org/apache/tomcat/websocket/PerMessageDeflate.java b/java/org/apache/tomcat/websocket/PerMessageDeflate.java
index afcfcf0..c101916 100644
--- a/java/org/apache/tomcat/websocket/PerMessageDeflate.java
+++ b/java/org/apache/tomcat/websocket/PerMessageDeflate.java
@@ -24,9 +24,9 @@ import java.util.zip.DataFormatException;
 import java.util.zip.Deflater;
 import java.util.zip.Inflater;
 
-import javax.websocket.Extension;
-import javax.websocket.Extension.Parameter;
-import javax.websocket.SendHandler;
+import jakarta.websocket.Extension;
+import jakarta.websocket.Extension.Parameter;
+import jakarta.websocket.SendHandler;
 
 import org.apache.tomcat.util.res.StringManager;
 
diff --git a/java/org/apache/tomcat/websocket/Transformation.java b/java/org/apache/tomcat/websocket/Transformation.java
index 14d8093..0a955f0 100644
--- a/java/org/apache/tomcat/websocket/Transformation.java
+++ b/java/org/apache/tomcat/websocket/Transformation.java
@@ -20,7 +20,7 @@ import java.io.IOException;
 import java.nio.ByteBuffer;
 import java.util.List;
 
-import javax.websocket.Extension;
+import jakarta.websocket.Extension;
 
 /**
  * The internal representation of the transformation that a WebSocket extension
diff --git a/java/org/apache/tomcat/websocket/TransformationFactory.java b/java/org/apache/tomcat/websocket/TransformationFactory.java
index 643be94..9d2b37c 100644
--- a/java/org/apache/tomcat/websocket/TransformationFactory.java
+++ b/java/org/apache/tomcat/websocket/TransformationFactory.java
@@ -18,7 +18,7 @@ package org.apache.tomcat.websocket;
 
 import java.util.List;
 
-import javax.websocket.Extension;
+import jakarta.websocket.Extension;
 
 import org.apache.tomcat.util.res.StringManager;
 
diff --git a/java/org/apache/tomcat/websocket/Util.java b/java/org/apache/tomcat/websocket/Util.java
index 63009a6..ac8ea2d 100644
--- a/java/org/apache/tomcat/websocket/Util.java
+++ b/java/org/apache/tomcat/websocket/Util.java
@@ -33,20 +33,20 @@ import java.util.Queue;
 import java.util.Set;
 import java.util.concurrent.ConcurrentLinkedQueue;
 
-import javax.websocket.CloseReason.CloseCode;
-import javax.websocket.CloseReason.CloseCodes;
-import javax.websocket.Decoder;
-import javax.websocket.Decoder.Binary;
-import javax.websocket.Decoder.BinaryStream;
-import javax.websocket.Decoder.Text;
-import javax.websocket.Decoder.TextStream;
-import javax.websocket.DeploymentException;
-import javax.websocket.Encoder;
-import javax.websocket.EndpointConfig;
-import javax.websocket.Extension;
-import javax.websocket.MessageHandler;
-import javax.websocket.PongMessage;
-import javax.websocket.Session;
+import jakarta.websocket.CloseReason.CloseCode;
+import jakarta.websocket.CloseReason.CloseCodes;
+import jakarta.websocket.Decoder;
+import jakarta.websocket.Decoder.Binary;
+import jakarta.websocket.Decoder.BinaryStream;
+import jakarta.websocket.Decoder.Text;
+import jakarta.websocket.Decoder.TextStream;
+import jakarta.websocket.DeploymentException;
+import jakarta.websocket.Encoder;
+import jakarta.websocket.EndpointConfig;
+import jakarta.websocket.Extension;
+import jakarta.websocket.MessageHandler;
+import jakarta.websocket.PongMessage;
+import jakarta.websocket.Session;
 
 import org.apache.tomcat.util.res.StringManager;
 import org.apache.tomcat.websocket.pojo.PojoMessageHandlerPartialBinary;
diff --git a/java/org/apache/tomcat/websocket/WrappedMessageHandler.java b/java/org/apache/tomcat/websocket/WrappedMessageHandler.java
index c4004b3..fc5ee2e 100644
--- a/java/org/apache/tomcat/websocket/WrappedMessageHandler.java
+++ b/java/org/apache/tomcat/websocket/WrappedMessageHandler.java
@@ -16,7 +16,7 @@
  */
 package org.apache.tomcat.websocket;
 
-import javax.websocket.MessageHandler;
+import jakarta.websocket.MessageHandler;
 
 public interface WrappedMessageHandler {
     long getMaxMessageSize();
diff --git a/java/org/apache/tomcat/websocket/WsContainerProvider.java b/java/org/apache/tomcat/websocket/WsContainerProvider.java
index 654ad79..ad990f1 100644
--- a/java/org/apache/tomcat/websocket/WsContainerProvider.java
+++ b/java/org/apache/tomcat/websocket/WsContainerProvider.java
@@ -16,8 +16,8 @@
  */
 package org.apache.tomcat.websocket;
 
-import javax.websocket.ContainerProvider;
-import javax.websocket.WebSocketContainer;
+import jakarta.websocket.ContainerProvider;
+import jakarta.websocket.WebSocketContainer;
 
 public class WsContainerProvider extends ContainerProvider {
 
diff --git a/java/org/apache/tomcat/websocket/WsExtension.java b/java/org/apache/tomcat/websocket/WsExtension.java
index 766e0fb..6895619 100644
--- a/java/org/apache/tomcat/websocket/WsExtension.java
+++ b/java/org/apache/tomcat/websocket/WsExtension.java
@@ -19,7 +19,7 @@ package org.apache.tomcat.websocket;
 import java.util.ArrayList;
 import java.util.List;
 
-import javax.websocket.Extension;
+import jakarta.websocket.Extension;
 
 public class WsExtension implements Extension {
 
diff --git a/java/org/apache/tomcat/websocket/WsExtensionParameter.java b/java/org/apache/tomcat/websocket/WsExtensionParameter.java
index 1b3f266..4bc464a 100644
--- a/java/org/apache/tomcat/websocket/WsExtensionParameter.java
+++ b/java/org/apache/tomcat/websocket/WsExtensionParameter.java
@@ -16,7 +16,7 @@
  */
 package org.apache.tomcat.websocket;
 
-import javax.websocket.Extension.Parameter;
+import jakarta.websocket.Extension.Parameter;
 
 public class WsExtensionParameter implements Parameter {
 
diff --git a/java/org/apache/tomcat/websocket/WsFrameBase.java b/java/org/apache/tomcat/websocket/WsFrameBase.java
index 28cdc30..97c9c94 100644
--- a/java/org/apache/tomcat/websocket/WsFrameBase.java
+++ b/java/org/apache/tomcat/websocket/WsFrameBase.java
@@ -25,11 +25,11 @@ import java.nio.charset.CodingErrorAction;
 import java.util.List;
 import java.util.concurrent.atomic.AtomicReferenceFieldUpdater;
 
-import javax.websocket.CloseReason;
-import javax.websocket.CloseReason.CloseCodes;
-import javax.websocket.Extension;
-import javax.websocket.MessageHandler;
-import javax.websocket.PongMessage;
+import jakarta.websocket.CloseReason;
+import jakarta.websocket.CloseReason.CloseCodes;
+import jakarta.websocket.Extension;
+import jakarta.websocket.MessageHandler;
+import jakarta.websocket.PongMessage;
 
 import org.apache.juli.logging.Log;
 import org.apache.tomcat.util.ExceptionUtils;
diff --git a/java/org/apache/tomcat/websocket/WsFrameClient.java b/java/org/apache/tomcat/websocket/WsFrameClient.java
index 260048e..7803491 100644
--- a/java/org/apache/tomcat/websocket/WsFrameClient.java
+++ b/java/org/apache/tomcat/websocket/WsFrameClient.java
@@ -21,8 +21,8 @@ import java.io.IOException;
 import java.nio.ByteBuffer;
 import java.nio.channels.CompletionHandler;
 
-import javax.websocket.CloseReason;
-import javax.websocket.CloseReason.CloseCodes;
+import jakarta.websocket.CloseReason;
+import jakarta.websocket.CloseReason.CloseCodes;
 
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
diff --git a/java/org/apache/tomcat/websocket/WsHandshakeResponse.java b/java/org/apache/tomcat/websocket/WsHandshakeResponse.java
index ecb39e4..e99c03f 100644
--- a/java/org/apache/tomcat/websocket/WsHandshakeResponse.java
+++ b/java/org/apache/tomcat/websocket/WsHandshakeResponse.java
@@ -21,7 +21,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 
-import javax.websocket.HandshakeResponse;
+import jakarta.websocket.HandshakeResponse;
 
 import org.apache.tomcat.util.collections.CaseInsensitiveKeyMap;
 
diff --git a/java/org/apache/tomcat/websocket/WsIOException.java b/java/org/apache/tomcat/websocket/WsIOException.java
index 0b7b1d4..c09e0ad 100644
--- a/java/org/apache/tomcat/websocket/WsIOException.java
+++ b/java/org/apache/tomcat/websocket/WsIOException.java
@@ -18,7 +18,7 @@ package org.apache.tomcat.websocket;
 
 import java.io.IOException;
 
-import javax.websocket.CloseReason;
+import jakarta.websocket.CloseReason;
 
 /**
  * Allows the WebSocket implementation to throw an {@link IOException} that
diff --git a/java/org/apache/tomcat/websocket/WsPongMessage.java b/java/org/apache/tomcat/websocket/WsPongMessage.java
index c3a6c33..6019fc5 100644
--- a/java/org/apache/tomcat/websocket/WsPongMessage.java
+++ b/java/org/apache/tomcat/websocket/WsPongMessage.java
@@ -18,7 +18,7 @@ package org.apache.tomcat.websocket;
 
 import java.nio.ByteBuffer;
 
-import javax.websocket.PongMessage;
+import jakarta.websocket.PongMessage;
 
 public class WsPongMessage implements PongMessage {
 
diff --git a/java/org/apache/tomcat/websocket/WsRemoteEndpointAsync.java b/java/org/apache/tomcat/websocket/WsRemoteEndpointAsync.java
index 964223b..afb59e9 100644
--- a/java/org/apache/tomcat/websocket/WsRemoteEndpointAsync.java
+++ b/java/org/apache/tomcat/websocket/WsRemoteEndpointAsync.java
@@ -19,8 +19,8 @@ package org.apache.tomcat.websocket;
 import java.nio.ByteBuffer;
 import java.util.concurrent.Future;
 
-import javax.websocket.RemoteEndpoint;
-import javax.websocket.SendHandler;
+import jakarta.websocket.RemoteEndpoint;
+import jakarta.websocket.SendHandler;
 
 public class WsRemoteEndpointAsync extends WsRemoteEndpointBase
         implements RemoteEndpoint.Async {
diff --git a/java/org/apache/tomcat/websocket/WsRemoteEndpointBase.java b/java/org/apache/tomcat/websocket/WsRemoteEndpointBase.java
index e883c2c..65a5f27 100644
--- a/java/org/apache/tomcat/websocket/WsRemoteEndpointBase.java
+++ b/java/org/apache/tomcat/websocket/WsRemoteEndpointBase.java
@@ -19,7 +19,7 @@ package org.apache.tomcat.websocket;
 import java.io.IOException;
 import java.nio.ByteBuffer;
 
-import javax.websocket.RemoteEndpoint;
+import jakarta.websocket.RemoteEndpoint;
 
 public abstract class WsRemoteEndpointBase implements RemoteEndpoint {
 
diff --git a/java/org/apache/tomcat/websocket/WsRemoteEndpointBasic.java b/java/org/apache/tomcat/websocket/WsRemoteEndpointBasic.java
index b0fc050..27859aa 100644
--- a/java/org/apache/tomcat/websocket/WsRemoteEndpointBasic.java
+++ b/java/org/apache/tomcat/websocket/WsRemoteEndpointBasic.java
@@ -21,8 +21,8 @@ import java.io.OutputStream;
 import java.io.Writer;
 import java.nio.ByteBuffer;
 
-import javax.websocket.EncodeException;
-import javax.websocket.RemoteEndpoint;
+import jakarta.websocket.EncodeException;
+import jakarta.websocket.RemoteEndpoint;
 
 public class WsRemoteEndpointBasic extends WsRemoteEndpointBase
         implements RemoteEndpoint.Basic {
diff --git a/java/org/apache/tomcat/websocket/WsRemoteEndpointImplBase.java b/java/org/apache/tomcat/websocket/WsRemoteEndpointImplBase.java
index 548f5a9..08f3bf3 100644
--- a/java/org/apache/tomcat/websocket/WsRemoteEndpointImplBase.java
+++ b/java/org/apache/tomcat/websocket/WsRemoteEndpointImplBase.java
@@ -33,15 +33,15 @@ import java.util.concurrent.Semaphore;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicBoolean;
 
-import javax.websocket.CloseReason;
-import javax.websocket.CloseReason.CloseCodes;
-import javax.websocket.DeploymentException;
-import javax.websocket.EncodeException;
-import javax.websocket.Encoder;
-import javax.websocket.EndpointConfig;
-import javax.websocket.RemoteEndpoint;
-import javax.websocket.SendHandler;
-import javax.websocket.SendResult;
+import jakarta.websocket.CloseReason;
+import jakarta.websocket.CloseReason.CloseCodes;
+import jakarta.websocket.DeploymentException;
+import jakarta.websocket.EncodeException;
+import jakarta.websocket.Encoder;
+import jakarta.websocket.EndpointConfig;
+import jakarta.websocket.RemoteEndpoint;
+import jakarta.websocket.SendHandler;
+import jakarta.websocket.SendResult;
 
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
diff --git a/java/org/apache/tomcat/websocket/WsRemoteEndpointImplClient.java b/java/org/apache/tomcat/websocket/WsRemoteEndpointImplClient.java
index 473fda2..789326b 100644
--- a/java/org/apache/tomcat/websocket/WsRemoteEndpointImplClient.java
+++ b/java/org/apache/tomcat/websocket/WsRemoteEndpointImplClient.java
@@ -22,8 +22,8 @@ import java.util.concurrent.ExecutionException;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 
-import javax.websocket.SendHandler;
-import javax.websocket.SendResult;
+import jakarta.websocket.SendHandler;
+import jakarta.websocket.SendResult;
 
 public class WsRemoteEndpointImplClient extends WsRemoteEndpointImplBase {
 
diff --git a/java/org/apache/tomcat/websocket/WsSession.java b/java/org/apache/tomcat/websocket/WsSession.java
index 37bff32..b52d402 100644
--- a/java/org/apache/tomcat/websocket/WsSession.java
+++ b/java/org/apache/tomcat/websocket/WsSession.java
@@ -30,22 +30,22 @@ import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.atomic.AtomicLong;
 
-import javax.websocket.CloseReason;
-import javax.websocket.CloseReason.CloseCode;
-import javax.websocket.CloseReason.CloseCodes;
-import javax.websocket.DeploymentException;
-import javax.websocket.Endpoint;
-import javax.websocket.EndpointConfig;
-import javax.websocket.Extension;
-import javax.websocket.MessageHandler;
-import javax.websocket.MessageHandler.Partial;
-import javax.websocket.MessageHandler.Whole;
-import javax.websocket.PongMessage;
-import javax.websocket.RemoteEndpoint;
-import javax.websocket.SendResult;
-import javax.websocket.Session;
-import javax.websocket.WebSocketContainer;
-import javax.websocket.server.ServerEndpointConfig;
+import jakarta.websocket.CloseReason;
+import jakarta.websocket.CloseReason.CloseCode;
+import jakarta.websocket.CloseReason.CloseCodes;
+import jakarta.websocket.DeploymentException;
+import jakarta.websocket.Endpoint;
+import jakarta.websocket.EndpointConfig;
+import jakarta.websocket.Extension;
+import jakarta.websocket.MessageHandler;
+import jakarta.websocket.MessageHandler.Partial;
+import jakarta.websocket.MessageHandler.Whole;
+import jakarta.websocket.PongMessage;
+import jakarta.websocket.RemoteEndpoint;
+import jakarta.websocket.SendResult;
+import jakarta.websocket.Session;
+import jakarta.websocket.WebSocketContainer;
+import jakarta.websocket.server.ServerEndpointConfig;
 
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
diff --git a/java/org/apache/tomcat/websocket/WsWebSocketContainer.java b/java/org/apache/tomcat/websocket/WsWebSocketContainer.java
index 4ea31fc..e849648 100644
--- a/java/org/apache/tomcat/websocket/WsWebSocketContainer.java
+++ b/java/org/apache/tomcat/websocket/WsWebSocketContainer.java
@@ -54,16 +54,17 @@ import javax.net.ssl.SSLEngine;
 import javax.net.ssl.SSLException;
 import javax.net.ssl.SSLParameters;
 import javax.net.ssl.TrustManagerFactory;
-import javax.websocket.ClientEndpoint;
-import javax.websocket.ClientEndpointConfig;
-import javax.websocket.CloseReason;
-import javax.websocket.CloseReason.CloseCodes;
-import javax.websocket.DeploymentException;
-import javax.websocket.Endpoint;
-import javax.websocket.Extension;
-import javax.websocket.HandshakeResponse;
-import javax.websocket.Session;
-import javax.websocket.WebSocketContainer;
+
+import jakarta.websocket.ClientEndpoint;
+import jakarta.websocket.ClientEndpointConfig;
+import jakarta.websocket.CloseReason;
+import jakarta.websocket.CloseReason.CloseCodes;
+import jakarta.websocket.DeploymentException;
+import jakarta.websocket.Endpoint;
+import jakarta.websocket.Extension;
+import jakarta.websocket.HandshakeResponse;
+import jakarta.websocket.Session;
+import jakarta.websocket.WebSocketContainer;
 
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
diff --git a/java/org/apache/tomcat/websocket/pojo/PojoEndpointBase.java b/java/org/apache/tomcat/websocket/pojo/PojoEndpointBase.java
index 75615d4..41ddd0d 100644
--- a/java/org/apache/tomcat/websocket/pojo/PojoEndpointBase.java
+++ b/java/org/apache/tomcat/websocket/pojo/PojoEndpointBase.java
@@ -21,11 +21,11 @@ import java.lang.reflect.InvocationTargetException;
 import java.util.Map;
 import java.util.Set;
 
-import javax.websocket.CloseReason;
-import javax.websocket.Endpoint;
-import javax.websocket.EndpointConfig;
-import javax.websocket.MessageHandler;
-import javax.websocket.Session;
+import jakarta.websocket.CloseReason;
+import jakarta.websocket.Endpoint;
+import jakarta.websocket.EndpointConfig;
+import jakarta.websocket.MessageHandler;
+import jakarta.websocket.Session;
 
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
diff --git a/java/org/apache/tomcat/websocket/pojo/PojoEndpointClient.java b/java/org/apache/tomcat/websocket/pojo/PojoEndpointClient.java
index f4d0567..2d9e224 100644
--- a/java/org/apache/tomcat/websocket/pojo/PojoEndpointClient.java
+++ b/java/org/apache/tomcat/websocket/pojo/PojoEndpointClient.java
@@ -19,16 +19,16 @@ package org.apache.tomcat.websocket.pojo;
 import java.util.Collections;
 import java.util.List;
 
-import javax.websocket.Decoder;
-import javax.websocket.DeploymentException;
-import javax.websocket.EndpointConfig;
-import javax.websocket.Session;
+import jakarta.websocket.Decoder;
+import jakarta.websocket.DeploymentException;
+import jakarta.websocket.EndpointConfig;
+import jakarta.websocket.Session;
 
 
 /**
  * Wrapper class for instances of POJOs annotated with
- * {@link javax.websocket.ClientEndpoint} so they appear as standard
- * {@link javax.websocket.Endpoint} instances.
+ * {@link jakarta.websocket.ClientEndpoint} so they appear as standard
+ * {@link jakarta.websocket.Endpoint} instances.
  */
 public class PojoEndpointClient extends PojoEndpointBase {
 
diff --git a/java/org/apache/tomcat/websocket/pojo/PojoEndpointServer.java b/java/org/apache/tomcat/websocket/pojo/PojoEndpointServer.java
index 48af737..b41145c 100644
--- a/java/org/apache/tomcat/websocket/pojo/PojoEndpointServer.java
+++ b/java/org/apache/tomcat/websocket/pojo/PojoEndpointServer.java
@@ -18,16 +18,16 @@ package org.apache.tomcat.websocket.pojo;
 
 import java.util.Map;
 
-import javax.websocket.EndpointConfig;
-import javax.websocket.Session;
-import javax.websocket.server.ServerEndpointConfig;
+import jakarta.websocket.EndpointConfig;
+import jakarta.websocket.Session;
+import jakarta.websocket.server.ServerEndpointConfig;
 
 import org.apache.tomcat.util.res.StringManager;
 
 /**
  * Wrapper class for instances of POJOs annotated with
- * {@link javax.websocket.server.ServerEndpoint} so they appear as standard
- * {@link javax.websocket.Endpoint} instances.
+ * {@link jakarta.websocket.server.ServerEndpoint} so they appear as standard
+ * {@link jakarta.websocket.Endpoint} instances.
  */
 public class PojoEndpointServer extends PojoEndpointBase {
 
diff --git a/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerBase.java b/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerBase.java
index bc125c7..333e870 100644
--- a/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerBase.java
+++ b/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerBase.java
@@ -20,10 +20,10 @@ import java.io.IOException;
 import java.lang.reflect.Method;
 import java.nio.ByteBuffer;
 
-import javax.websocket.EncodeException;
-import javax.websocket.MessageHandler;
-import javax.websocket.RemoteEndpoint;
-import javax.websocket.Session;
+import jakarta.websocket.EncodeException;
+import jakarta.websocket.MessageHandler;
+import jakarta.websocket.RemoteEndpoint;
+import jakarta.websocket.Session;
 
 import org.apache.tomcat.util.ExceptionUtils;
 import org.apache.tomcat.websocket.WrappedMessageHandler;
diff --git a/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerPartialBase.java b/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerPartialBase.java
index 4a0f525..2d7eddd 100644
--- a/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerPartialBase.java
+++ b/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerPartialBase.java
@@ -20,9 +20,9 @@ import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.nio.ByteBuffer;
 
-import javax.websocket.DecodeException;
-import javax.websocket.MessageHandler;
-import javax.websocket.Session;
+import jakarta.websocket.DecodeException;
+import jakarta.websocket.MessageHandler;
+import jakarta.websocket.Session;
 
 import org.apache.tomcat.websocket.WsSession;
 
diff --git a/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerPartialBinary.java b/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerPartialBinary.java
index 6446efb..0ca701a 100644
--- a/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerPartialBinary.java
+++ b/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerPartialBinary.java
@@ -19,7 +19,7 @@ package org.apache.tomcat.websocket.pojo;
 import java.lang.reflect.Method;
 import java.nio.ByteBuffer;
 
-import javax.websocket.Session;
+import jakarta.websocket.Session;
 
 /**
  * ByteBuffer specific concrete implementation for handling partial messages.
diff --git a/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerPartialText.java b/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerPartialText.java
index 683634b..a52757c 100644
--- a/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerPartialText.java
+++ b/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerPartialText.java
@@ -18,7 +18,7 @@ package org.apache.tomcat.websocket.pojo;
 
 import java.lang.reflect.Method;
 
-import javax.websocket.Session;
+import jakarta.websocket.Session;
 
 /**
  * Text specific concrete implementation for handling partial messages.
diff --git a/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerWholeBase.java b/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerWholeBase.java
index aa4abbe..e973552 100644
--- a/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerWholeBase.java
+++ b/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerWholeBase.java
@@ -19,9 +19,9 @@ package org.apache.tomcat.websocket.pojo;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 
-import javax.websocket.DecodeException;
-import javax.websocket.MessageHandler;
-import javax.websocket.Session;
+import jakarta.websocket.DecodeException;
+import jakarta.websocket.MessageHandler;
+import jakarta.websocket.Session;
 
 import org.apache.tomcat.websocket.WsSession;
 
diff --git a/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerWholeBinary.java b/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerWholeBinary.java
index e4756f6..07b49ce 100644
--- a/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerWholeBinary.java
+++ b/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerWholeBinary.java
@@ -23,12 +23,12 @@ import java.nio.ByteBuffer;
 import java.util.ArrayList;
 import java.util.List;
 
-import javax.websocket.DecodeException;
-import javax.websocket.Decoder;
-import javax.websocket.Decoder.Binary;
-import javax.websocket.Decoder.BinaryStream;
-import javax.websocket.EndpointConfig;
-import javax.websocket.Session;
+import jakarta.websocket.DecodeException;
+import jakarta.websocket.Decoder;
+import jakarta.websocket.Decoder.Binary;
+import jakarta.websocket.Decoder.BinaryStream;
+import jakarta.websocket.EndpointConfig;
+import jakarta.websocket.Session;
 
 import org.apache.tomcat.util.res.StringManager;
 
diff --git a/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerWholePong.java b/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerWholePong.java
index 762814d..64bd6ba 100644
--- a/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerWholePong.java
+++ b/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerWholePong.java
@@ -18,8 +18,8 @@ package org.apache.tomcat.websocket.pojo;
 
 import java.lang.reflect.Method;
 
-import javax.websocket.PongMessage;
-import javax.websocket.Session;
+import jakarta.websocket.PongMessage;
+import jakarta.websocket.Session;
 
 /**
  * PongMessage specific concrete implementation for handling whole messages.
diff --git a/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerWholeText.java b/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerWholeText.java
index 3ec4bd7..0cb5fec 100644
--- a/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerWholeText.java
+++ b/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerWholeText.java
@@ -22,12 +22,12 @@ import java.lang.reflect.Method;
 import java.util.ArrayList;
 import java.util.List;
 
-import javax.websocket.DecodeException;
-import javax.websocket.Decoder;
-import javax.websocket.Decoder.Text;
-import javax.websocket.Decoder.TextStream;
-import javax.websocket.EndpointConfig;
-import javax.websocket.Session;
+import jakarta.websocket.DecodeException;
+import jakarta.websocket.Decoder;
+import jakarta.websocket.Decoder.Text;
+import jakarta.websocket.Decoder.TextStream;
+import jakarta.websocket.EndpointConfig;
+import jakarta.websocket.Session;
 
 import org.apache.tomcat.util.res.StringManager;
 import org.apache.tomcat.websocket.Util;
diff --git a/java/org/apache/tomcat/websocket/pojo/PojoMethodMapping.java b/java/org/apache/tomcat/websocket/pojo/PojoMethodMapping.java
index d640b53..4ace70f 100644
--- a/java/org/apache/tomcat/websocket/pojo/PojoMethodMapping.java
+++ b/java/org/apache/tomcat/websocket/pojo/PojoMethodMapping.java
@@ -30,19 +30,19 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
-import javax.websocket.CloseReason;
-import javax.websocket.DecodeException;
-import javax.websocket.Decoder;
-import javax.websocket.DeploymentException;
-import javax.websocket.EndpointConfig;
-import javax.websocket.MessageHandler;
-import javax.websocket.OnClose;
-import javax.websocket.OnError;
-import javax.websocket.OnMessage;
-import javax.websocket.OnOpen;
-import javax.websocket.PongMessage;
-import javax.websocket.Session;
-import javax.websocket.server.PathParam;
+import jakarta.websocket.CloseReason;
+import jakarta.websocket.DecodeException;
+import jakarta.websocket.Decoder;
+import jakarta.websocket.DeploymentException;
+import jakarta.websocket.EndpointConfig;
+import jakarta.websocket.MessageHandler;
+import jakarta.websocket.OnClose;
+import jakarta.websocket.OnError;
+import jakarta.websocket.OnMessage;
+import jakarta.websocket.OnOpen;
+import jakarta.websocket.PongMessage;
+import jakarta.websocket.Session;
+import jakarta.websocket.server.PathParam;
 
 import org.apache.tomcat.util.res.StringManager;
 import org.apache.tomcat.websocket.DecoderEntry;
@@ -51,7 +51,7 @@ import org.apache.tomcat.websocket.Util.DecoderMatch;
 
 /**
  * For a POJO class annotated with
- * {@link javax.websocket.server.ServerEndpoint}, an instance of this class
+ * {@link jakarta.websocket.server.ServerEndpoint}, an instance of this class
  * creates and caches the method handler, method information and parameter
  * information for the onXXX calls.
  */
diff --git a/java/org/apache/tomcat/websocket/pojo/PojoPathParam.java b/java/org/apache/tomcat/websocket/pojo/PojoPathParam.java
index f35249e..442f4c3 100644
--- a/java/org/apache/tomcat/websocket/pojo/PojoPathParam.java
+++ b/java/org/apache/tomcat/websocket/pojo/PojoPathParam.java
@@ -16,17 +16,17 @@
  */
 package org.apache.tomcat.websocket.pojo;
 
-import javax.websocket.DeploymentException;
+import jakarta.websocket.DeploymentException;
 
 import org.apache.tomcat.util.res.StringManager;
 import org.apache.tomcat.websocket.Util;
 
 /**
  * Stores the parameter type and name for a parameter that needs to be passed to
- * an onXxx method of {@link javax.websocket.Endpoint}. The name is only present
+ * an onXxx method of {@link jakarta.websocket.Endpoint}. The name is only present
  * for parameters annotated with
- * {@link javax.websocket.server.PathParam}. For the
- * {@link javax.websocket.Session} and {@link java.lang.Throwable} parameters,
+ * {@link jakarta.websocket.server.PathParam}. For the
+ * {@link jakarta.websocket.Session} and {@link java.lang.Throwable} parameters,
  * {@link #getName()} will always return <code>null</code>.
  */
 public class PojoPathParam {
diff --git a/java/org/apache/tomcat/websocket/pojo/package-info.java b/java/org/apache/tomcat/websocket/pojo/package-info.java
index 28daf9d..31f4c6a 100644
--- a/java/org/apache/tomcat/websocket/pojo/package-info.java
+++ b/java/org/apache/tomcat/websocket/pojo/package-info.java
@@ -16,6 +16,6 @@
  */
 /**
  * This package provides the necessary plumbing to convert an annotated POJO
- * into a WebSocket {@link javax.websocket.Endpoint}.
+ * into a WebSocket {@link jakarta.websocket.Endpoint}.
  */
 package org.apache.tomcat.websocket.pojo;
\ No newline at end of file
diff --git a/java/org/apache/tomcat/websocket/server/Constants.java b/java/org/apache/tomcat/websocket/server/Constants.java
index 876f1b8..1676861 100644
--- a/java/org/apache/tomcat/websocket/server/Constants.java
+++ b/java/org/apache/tomcat/websocket/server/Constants.java
@@ -29,7 +29,7 @@ public class Constants {
             "org.apache.tomcat.websocket.noAddAfterHandshake";
 
     public static final String SERVER_CONTAINER_SERVLET_CONTEXT_ATTRIBUTE =
-            "javax.websocket.server.ServerContainer";
+            "jakarta.websocket.server.ServerContainer";
 
 
     private Constants() {
diff --git a/java/org/apache/tomcat/websocket/server/DefaultServerEndpointConfigurator.java b/java/org/apache/tomcat/websocket/server/DefaultServerEndpointConfigurator.java
index 75b8d70..a64b830 100644
--- a/java/org/apache/tomcat/websocket/server/DefaultServerEndpointConfigurator.java
+++ b/java/org/apache/tomcat/websocket/server/DefaultServerEndpointConfigurator.java
@@ -21,10 +21,10 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
-import javax.websocket.Extension;
-import javax.websocket.HandshakeResponse;
-import javax.websocket.server.HandshakeRequest;
-import javax.websocket.server.ServerEndpointConfig;
+import jakarta.websocket.Extension;
+import jakarta.websocket.HandshakeResponse;
+import jakarta.websocket.server.HandshakeRequest;
+import jakarta.websocket.server.ServerEndpointConfig;
 
 public class DefaultServerEndpointConfigurator
         extends ServerEndpointConfig.Configurator {
diff --git a/java/org/apache/tomcat/websocket/server/UpgradeUtil.java b/java/org/apache/tomcat/websocket/server/UpgradeUtil.java
index 598dee0..8e647df 100644
--- a/java/org/apache/tomcat/websocket/server/UpgradeUtil.java
+++ b/java/org/apache/tomcat/websocket/server/UpgradeUtil.java
@@ -26,16 +26,15 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 
-import javax.websocket.Endpoint;
-import javax.websocket.Extension;
-import javax.websocket.HandshakeResponse;
-import javax.websocket.server.ServerEndpointConfig;
-
 import jakarta.servlet.ServletException;
 import jakarta.servlet.ServletRequest;
 import jakarta.servlet.ServletResponse;
 import jakarta.servlet.http.HttpServletRequest;
 import jakarta.servlet.http.HttpServletResponse;
+import jakarta.websocket.Endpoint;
+import jakarta.websocket.Extension;
+import jakarta.websocket.HandshakeResponse;
+import jakarta.websocket.server.ServerEndpointConfig;
 
 import org.apache.tomcat.util.codec.binary.Base64;
 import org.apache.tomcat.util.res.StringManager;
diff --git a/java/org/apache/tomcat/websocket/server/UriTemplate.java b/java/org/apache/tomcat/websocket/server/UriTemplate.java
index a9b8eb9..6419ed0 100644
--- a/java/org/apache/tomcat/websocket/server/UriTemplate.java
+++ b/java/org/apache/tomcat/websocket/server/UriTemplate.java
@@ -24,7 +24,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
-import javax.websocket.DeploymentException;
+import jakarta.websocket.DeploymentException;
 
 import org.apache.tomcat.util.res.StringManager;
 
diff --git a/java/org/apache/tomcat/websocket/server/WsHandshakeRequest.java b/java/org/apache/tomcat/websocket/server/WsHandshakeRequest.java
index c04cf05..a10cb8c 100644
--- a/java/org/apache/tomcat/websocket/server/WsHandshakeRequest.java
+++ b/java/org/apache/tomcat/websocket/server/WsHandshakeRequest.java
@@ -27,9 +27,8 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 
-import javax.websocket.server.HandshakeRequest;
-
 import jakarta.servlet.http.HttpServletRequest;
+import jakarta.websocket.server.HandshakeRequest;
 
 import org.apache.tomcat.util.collections.CaseInsensitiveKeyMap;
 import org.apache.tomcat.util.res.StringManager;
diff --git a/java/org/apache/tomcat/websocket/server/WsHttpUpgradeHandler.java b/java/org/apache/tomcat/websocket/server/WsHttpUpgradeHandler.java
index b882abb..c449108 100644
--- a/java/org/apache/tomcat/websocket/server/WsHttpUpgradeHandler.java
+++ b/java/org/apache/tomcat/websocket/server/WsHttpUpgradeHandler.java
@@ -20,15 +20,14 @@ import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 
-import javax.websocket.CloseReason;
-import javax.websocket.CloseReason.CloseCodes;
-import javax.websocket.DeploymentException;
-import javax.websocket.Endpoint;
-import javax.websocket.Extension;
-import javax.websocket.server.ServerEndpointConfig;
-
 import jakarta.servlet.http.HttpSession;
 import jakarta.servlet.http.WebConnection;
+import jakarta.websocket.CloseReason;
+import jakarta.websocket.CloseReason.CloseCodes;
+import jakarta.websocket.DeploymentException;
+import jakarta.websocket.Endpoint;
+import jakarta.websocket.Extension;
+import jakarta.websocket.server.ServerEndpointConfig;
 
 import org.apache.coyote.http11.upgrade.InternalHttpUpgradeHandler;
 import org.apache.juli.logging.Log;
diff --git a/java/org/apache/tomcat/websocket/server/WsMappingResult.java b/java/org/apache/tomcat/websocket/server/WsMappingResult.java
index 097386b..5125231 100644
--- a/java/org/apache/tomcat/websocket/server/WsMappingResult.java
+++ b/java/org/apache/tomcat/websocket/server/WsMappingResult.java
@@ -18,7 +18,7 @@ package org.apache.tomcat.websocket.server;
 
 import java.util.Map;
 
-import javax.websocket.server.ServerEndpointConfig;
+import jakarta.websocket.server.ServerEndpointConfig;
 
 class WsMappingResult {
 
diff --git a/java/org/apache/tomcat/websocket/server/WsPerSessionServerEndpointConfig.java b/java/org/apache/tomcat/websocket/server/WsPerSessionServerEndpointConfig.java
index aab9e7f..07452e9 100644
--- a/java/org/apache/tomcat/websocket/server/WsPerSessionServerEndpointConfig.java
+++ b/java/org/apache/tomcat/websocket/server/WsPerSessionServerEndpointConfig.java
@@ -20,10 +20,10 @@ import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
-import javax.websocket.Decoder;
-import javax.websocket.Encoder;
-import javax.websocket.Extension;
-import javax.websocket.server.ServerEndpointConfig;
+import jakarta.websocket.Decoder;
+import jakarta.websocket.Encoder;
+import jakarta.websocket.Extension;
+import jakarta.websocket.server.ServerEndpointConfig;
 
 /**
  * Wraps the provided {@link ServerEndpointConfig} and provides a per session
diff --git a/java/org/apache/tomcat/websocket/server/WsRemoteEndpointImplServer.java b/java/org/apache/tomcat/websocket/server/WsRemoteEndpointImplServer.java
index 0fee189..d56ba3d 100644
--- a/java/org/apache/tomcat/websocket/server/WsRemoteEndpointImplServer.java
+++ b/java/org/apache/tomcat/websocket/server/WsRemoteEndpointImplServer.java
@@ -24,8 +24,8 @@ import java.nio.channels.CompletionHandler;
 import java.util.concurrent.RejectedExecutionException;
 import java.util.concurrent.TimeUnit;
 
-import javax.websocket.SendHandler;
-import javax.websocket.SendResult;
+import jakarta.websocket.SendHandler;
+import jakarta.websocket.SendResult;
 
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
@@ -36,7 +36,7 @@ import org.apache.tomcat.websocket.Transformation;
 import org.apache.tomcat.websocket.WsRemoteEndpointImplBase;
 
 /**
- * This is the server side {@link javax.websocket.RemoteEndpoint} implementation
+ * This is the server side {@link jakarta.websocket.RemoteEndpoint} implementation
  * - i.e. what the server uses to send data to the client.
  */
 public class WsRemoteEndpointImplServer extends WsRemoteEndpointImplBase {
@@ -257,7 +257,7 @@ public class WsRemoteEndpointImplServer extends WsRemoteEndpointImplBase {
      * @param useDispatch   Should {@link SendHandler#onResult(SendResult)} be
      *                      called from a new thread, keeping in mind the
      *                      requirements of
-     *                      {@link javax.websocket.RemoteEndpoint.Async}
+     *                      {@link jakarta.websocket.RemoteEndpoint.Async}
      */
     private void clearHandler(Throwable t, boolean useDispatch) {
         // Setting the result marks this (partial) message as
diff --git a/java/org/apache/tomcat/websocket/server/WsSci.java b/java/org/apache/tomcat/websocket/server/WsSci.java
index 348c2a5..007cac6 100644
--- a/java/org/apache/tomcat/websocket/server/WsSci.java
+++ b/java/org/apache/tomcat/websocket/server/WsSci.java
@@ -20,17 +20,16 @@ import java.lang.reflect.Modifier;
 import java.util.HashSet;
 import java.util.Set;
 
-import javax.websocket.ContainerProvider;
-import javax.websocket.DeploymentException;
-import javax.websocket.Endpoint;
-import javax.websocket.server.ServerApplicationConfig;
-import javax.websocket.server.ServerEndpoint;
-import javax.websocket.server.ServerEndpointConfig;
-
 import jakarta.servlet.ServletContainerInitializer;
 import jakarta.servlet.ServletContext;
 import jakarta.servlet.ServletException;
 import jakarta.servlet.annotation.HandlesTypes;
+import jakarta.websocket.ContainerProvider;
+import jakarta.websocket.DeploymentException;
+import jakarta.websocket.Endpoint;
+import jakarta.websocket.server.ServerApplicationConfig;
+import jakarta.websocket.server.ServerEndpoint;
+import jakarta.websocket.server.ServerEndpointConfig;
 
 import org.apache.tomcat.util.compat.JreCompat;
 
@@ -59,7 +58,7 @@ public class WsSci implements ServletContainerInitializer {
         Set<Class<?>> scannedPojoEndpoints = new HashSet<>();
 
         try {
-            // wsPackage is "javax.websocket."
+            // wsPackage is "jakarta.websocket."
             String wsPackage = ContainerProvider.class.getName();
             wsPackage = wsPackage.substring(0, wsPackage.lastIndexOf('.') + 1);
             for (Class<?> clazz : clazzes) {
diff --git a/java/org/apache/tomcat/websocket/server/WsServerContainer.java b/java/org/apache/tomcat/websocket/server/WsServerContainer.java
index 75f4566..e0f7c4f 100644
--- a/java/org/apache/tomcat/websocket/server/WsServerContainer.java
+++ b/java/org/apache/tomcat/websocket/server/WsServerContainer.java
@@ -25,21 +25,20 @@ import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentSkipListMap;
 
-import javax.websocket.CloseReason;
-import javax.websocket.CloseReason.CloseCodes;
-import javax.websocket.DeploymentException;
-import javax.websocket.Encoder;
-import javax.websocket.server.ServerContainer;
-import javax.websocket.server.ServerEndpoint;
-import javax.websocket.server.ServerEndpointConfig;
-import javax.websocket.server.ServerEndpointConfig.Configurator;
-
 import jakarta.servlet.DispatcherType;
 import jakarta.servlet.FilterRegistration;
 import jakarta.servlet.ServletContext;
 import jakarta.servlet.ServletException;
 import jakarta.servlet.http.HttpServletRequest;
 import jakarta.servlet.http.HttpServletResponse;
+import jakarta.websocket.CloseReason;
+import jakarta.websocket.CloseReason.CloseCodes;
+import jakarta.websocket.DeploymentException;
+import jakarta.websocket.Encoder;
+import jakarta.websocket.server.ServerContainer;
+import jakarta.websocket.server.ServerEndpoint;
+import jakarta.websocket.server.ServerEndpointConfig;
+import jakarta.websocket.server.ServerEndpointConfig.Configurator;
 
 import org.apache.tomcat.InstanceManager;
 import org.apache.tomcat.util.res.StringManager;
diff --git a/res/META-INF/tomcat-websocket.jar/services/javax.websocket.ContainerProvider b/res/META-INF/tomcat-websocket.jar/services/jakarta.websocket.ContainerProvider
similarity index 100%
rename from res/META-INF/tomcat-websocket.jar/services/javax.websocket.ContainerProvider
rename to res/META-INF/tomcat-websocket.jar/services/jakarta.websocket.ContainerProvider
diff --git a/res/META-INF/tomcat-websocket.jar/services/javax.websocket.server.ServerEndpointConfig$Configurator b/res/META-INF/tomcat-websocket.jar/services/jakarta.websocket.server.ServerEndpointConfig$Configurator
similarity index 100%
rename from res/META-INF/tomcat-websocket.jar/services/javax.websocket.server.ServerEndpointConfig$Configurator
rename to res/META-INF/tomcat-websocket.jar/services/jakarta.websocket.server.ServerEndpointConfig$Configurator
diff --git a/res/META-INF/websocket-api.jar.manifest b/res/META-INF/websocket-api.jar.manifest
index e675ab2..f0daa6b 100644
--- a/res/META-INF/websocket-api.jar.manifest
+++ b/res/META-INF/websocket-api.jar.manifest
@@ -2,10 +2,10 @@ Manifest-version: 1.0
 X-Compile-Source-JDK: @source.jdk@
 X-Compile-Target-JDK: @target.jdk@
 
-Name: javax/websocket/
+Name: jakarta/websocket/
 Specification-Title: WebSocket
 Specification-Version: 1.1
 Specification-Vendor: Oracle, Inc.
-Implementation-Title: javax.websocket
+Implementation-Title: jakarta.websocket
 Implementation-Version: 1.1.@websocket.revision@
 Implementation-Vendor: Apache Software Foundation
diff --git a/res/bnd/tomcat-embed-websocket.jar.tmp.bnd b/res/bnd/tomcat-embed-websocket.jar.tmp.bnd
index 3a45335..1979452 100644
--- a/res/bnd/tomcat-embed-websocket.jar.tmp.bnd
+++ b/res/bnd/tomcat-embed-websocket.jar.tmp.bnd
@@ -17,7 +17,7 @@ Bundle-Name: tomcat-embed-websocket
 Bundle-SymbolicName: org.apache.tomcat-embed-websocket
 Bundle-Version: @VERSION@
 Export-Package: \
-    javax.websocket,\
-    javax.websocket.server,\
+    jakarta.websocket,\
+    jakarta.websocket.server,\
     org.apache.tomcat.websocket,\
     org.apache.tomcat.websocket.server
\ No newline at end of file
diff --git a/res/bnd/websocket-api.jar.tmp.bnd b/res/bnd/websocket-api.jar.tmp.bnd
index c14ea03..c7d5f62 100644
--- a/res/bnd/websocket-api.jar.tmp.bnd
+++ b/res/bnd/websocket-api.jar.tmp.bnd
@@ -16,5 +16,5 @@ Bundle-Name: tomcat-websocket-api
 Bundle-SymbolicName: org.apache.tomcat-websocket-api
 Bundle-Version: @VERSION@
 Export-Package: \
-    javax.websocket,\
-    javax.websocket.server
\ No newline at end of file
+    jakarta.websocket,\
+    jakarta.websocket.server
\ No newline at end of file
diff --git a/res/checkstyle/jakarta-import-control.xml b/res/checkstyle/jakarta-import-control.xml
index 3a548f2..572c6a7 100644
--- a/res/checkstyle/jakarta-import-control.xml
+++ b/res/checkstyle/jakarta-import-control.xml
@@ -69,4 +69,7 @@
     <allow pkg="jakarta.transaction"/>
     <allow pkg="javax.transaction.xa"/>
   </subpackage>
+  <subpackage name="websocket">
+    <allow pkg="jakarta.websocket"/>
+  </subpackage>
 </import-control>
\ No newline at end of file
diff --git a/res/checkstyle/javax-import-control.xml b/res/checkstyle/javax-import-control.xml
index bc61d54..5f6e23f 100644
--- a/res/checkstyle/javax-import-control.xml
+++ b/res/checkstyle/javax-import-control.xml
@@ -21,9 +21,6 @@
 
 <import-control pkg="javax">
   <allow pkg="java"/>
-  <subpackage name="websocket">
-    <allow pkg="javax.websocket"/>
-  </subpackage>
   <subpackage name="xml.ws">
     <allow pkg="javax.xwl.ws"/>
   </subpackage>
diff --git a/res/checkstyle/org-import-control.xml b/res/checkstyle/org-import-control.xml
index d0ad044..e35985c 100644
--- a/res/checkstyle/org-import-control.xml
+++ b/res/checkstyle/org-import-control.xml
@@ -172,7 +172,7 @@
       </subpackage>
     </subpackage>
     <subpackage name="websocket">
-      <allow pkg="javax.websocket"/>
+      <allow pkg="jakarta.websocket"/>
       <allow pkg="org.apache.juli"/>
       <allow pkg="org.apache.tomcat"/>
       <allow pkg="org.apache.tomcat.util"/>
diff --git a/test/javax/websocket/TesterContainerProviderPerformance.java b/test/jakarta/websocket/TesterContainerProviderPerformance.java
similarity index 98%
rename from test/javax/websocket/TesterContainerProviderPerformance.java
rename to test/jakarta/websocket/TesterContainerProviderPerformance.java
index 92b617a..a3c8a87 100644
--- a/test/javax/websocket/TesterContainerProviderPerformance.java
+++ b/test/jakarta/websocket/TesterContainerProviderPerformance.java
@@ -14,7 +14,7 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-package javax.websocket;
+package jakarta.websocket;
 
 import java.util.function.IntConsumer;
 import java.util.function.Supplier;
diff --git a/test/org/apache/catalina/loader/TestWebappClassLoader.java b/test/org/apache/catalina/loader/TestWebappClassLoader.java
index df4fb87..426247d 100644
--- a/test/org/apache/catalina/loader/TestWebappClassLoader.java
+++ b/test/org/apache/catalina/loader/TestWebappClassLoader.java
@@ -103,7 +103,7 @@ public class TestWebappClassLoader extends TomcatBaseTest {
             "org.apache.tomcat",
             "jakarta.el",
             "jakarta.servlet",
-            "javax.websocket",
+            "jakarta.websocket",
             "jakarta.security.auth.message"
         };
 
diff --git a/test/org/apache/tomcat/websocket/TestConnectionLimit.java b/test/org/apache/tomcat/websocket/TestConnectionLimit.java
index 85c2a0f..9335fdc 100644
--- a/test/org/apache/tomcat/websocket/TestConnectionLimit.java
+++ b/test/org/apache/tomcat/websocket/TestConnectionLimit.java
@@ -20,10 +20,10 @@ import java.io.IOException;
 import java.net.URI;
 import java.util.concurrent.atomic.AtomicInteger;
 
-import javax.websocket.ClientEndpointConfig.Builder;
-import javax.websocket.ContainerProvider;
-import javax.websocket.DeploymentException;
-import javax.websocket.WebSocketContainer;
+import jakarta.websocket.ClientEndpointConfig.Builder;
+import jakarta.websocket.ContainerProvider;
+import jakarta.websocket.DeploymentException;
+import jakarta.websocket.WebSocketContainer;
 
 import org.junit.Ignore;
 import org.junit.Test;
diff --git a/test/org/apache/tomcat/websocket/TestPerMessageDeflate.java b/test/org/apache/tomcat/websocket/TestPerMessageDeflate.java
index 9139460..d2b74e9 100644
--- a/test/org/apache/tomcat/websocket/TestPerMessageDeflate.java
+++ b/test/org/apache/tomcat/websocket/TestPerMessageDeflate.java
@@ -23,8 +23,8 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
-import javax.websocket.Extension;
-import javax.websocket.Extension.Parameter;
+import jakarta.websocket.Extension;
+import jakarta.websocket.Extension.Parameter;
 
 import org.junit.Test;
 
diff --git a/test/org/apache/tomcat/websocket/TestUtil.java b/test/org/apache/tomcat/websocket/TestUtil.java
index 9c64417..c76a6f0 100644
--- a/test/org/apache/tomcat/websocket/TestUtil.java
+++ b/test/org/apache/tomcat/websocket/TestUtil.java
@@ -19,12 +19,12 @@ package org.apache.tomcat.websocket;
 import java.util.ArrayList;
 import java.util.List;
 
-import javax.websocket.EncodeException;
-import javax.websocket.Encoder;
-import javax.websocket.EndpointConfig;
-import javax.websocket.Extension;
-import javax.websocket.Extension.Parameter;
-import javax.websocket.MessageHandler;
+import jakarta.websocket.EncodeException;
+import jakarta.websocket.Encoder;
+import jakarta.websocket.EndpointConfig;
+import jakarta.websocket.Extension;
+import jakarta.websocket.Extension.Parameter;
+import jakarta.websocket.MessageHandler;
 
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/test/org/apache/tomcat/websocket/TestWebSocketFrameClient.java b/test/org/apache/tomcat/websocket/TestWebSocketFrameClient.java
index 016bd8d..4449ac1 100644
--- a/test/org/apache/tomcat/websocket/TestWebSocketFrameClient.java
+++ b/test/org/apache/tomcat/websocket/TestWebSocketFrameClient.java
@@ -24,11 +24,11 @@ import java.util.Queue;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 
-import javax.websocket.ClientEndpointConfig;
-import javax.websocket.ClientEndpointConfig.Configurator;
-import javax.websocket.ContainerProvider;
-import javax.websocket.Session;
-import javax.websocket.WebSocketContainer;
+import jakarta.websocket.ClientEndpointConfig;
+import jakarta.websocket.ClientEndpointConfig.Configurator;
+import jakarta.websocket.ContainerProvider;
+import jakarta.websocket.Session;
+import jakarta.websocket.WebSocketContainer;
 
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/test/org/apache/tomcat/websocket/TestWebSocketFrameClientSSL.java b/test/org/apache/tomcat/websocket/TestWebSocketFrameClientSSL.java
index ab12e0c..d27e4dd 100644
--- a/test/org/apache/tomcat/websocket/TestWebSocketFrameClientSSL.java
+++ b/test/org/apache/tomcat/websocket/TestWebSocketFrameClientSSL.java
@@ -21,11 +21,11 @@ import java.util.Queue;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 
-import javax.websocket.ClientEndpointConfig;
-import javax.websocket.ContainerProvider;
-import javax.websocket.MessageHandler;
-import javax.websocket.Session;
-import javax.websocket.WebSocketContainer;
+import jakarta.websocket.ClientEndpointConfig;
+import jakarta.websocket.ContainerProvider;
+import jakarta.websocket.MessageHandler;
+import jakarta.websocket.Session;
+import jakarta.websocket.WebSocketContainer;
 
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/test/org/apache/tomcat/websocket/TestWsPingPongMessages.java b/test/org/apache/tomcat/websocket/TestWsPingPongMessages.java
index 6ed5483..25951da 100644
--- a/test/org/apache/tomcat/websocket/TestWsPingPongMessages.java
+++ b/test/org/apache/tomcat/websocket/TestWsPingPongMessages.java
@@ -22,11 +22,11 @@ import java.nio.charset.StandardCharsets;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 
-import javax.websocket.ClientEndpointConfig;
-import javax.websocket.ContainerProvider;
-import javax.websocket.PongMessage;
-import javax.websocket.Session;
-import javax.websocket.WebSocketContainer;
+import jakarta.websocket.ClientEndpointConfig;
+import jakarta.websocket.ContainerProvider;
+import jakarta.websocket.PongMessage;
+import jakarta.websocket.Session;
+import jakarta.websocket.WebSocketContainer;
 
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/test/org/apache/tomcat/websocket/TestWsRemoteEndpoint.java b/test/org/apache/tomcat/websocket/TestWsRemoteEndpoint.java
index 8c01d1a..d2c9edd 100644
--- a/test/org/apache/tomcat/websocket/TestWsRemoteEndpoint.java
+++ b/test/org/apache/tomcat/websocket/TestWsRemoteEndpoint.java
@@ -26,11 +26,11 @@ import java.util.List;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 
-import javax.websocket.ClientEndpointConfig.Builder;
-import javax.websocket.ContainerProvider;
-import javax.websocket.Endpoint;
-import javax.websocket.Session;
-import javax.websocket.WebSocketContainer;
+import jakarta.websocket.ClientEndpointConfig.Builder;
+import jakarta.websocket.ContainerProvider;
+import jakarta.websocket.Endpoint;
+import jakarta.websocket.Session;
+import jakarta.websocket.WebSocketContainer;
 
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/test/org/apache/tomcat/websocket/TestWsSessionSuspendResume.java b/test/org/apache/tomcat/websocket/TestWsSessionSuspendResume.java
index 8af8679..cd2483e 100644
--- a/test/org/apache/tomcat/websocket/TestWsSessionSuspendResume.java
+++ b/test/org/apache/tomcat/websocket/TestWsSessionSuspendResume.java
@@ -23,14 +23,14 @@ import java.util.List;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 
-import javax.websocket.ClientEndpointConfig;
-import javax.websocket.CloseReason;
-import javax.websocket.ContainerProvider;
-import javax.websocket.Endpoint;
-import javax.websocket.EndpointConfig;
-import javax.websocket.Session;
-import javax.websocket.WebSocketContainer;
-import javax.websocket.server.ServerEndpointConfig;
+import jakarta.websocket.ClientEndpointConfig;
+import jakarta.websocket.CloseReason;
+import jakarta.websocket.ContainerProvider;
+import jakarta.websocket.Endpoint;
+import jakarta.websocket.EndpointConfig;
+import jakarta.websocket.Session;
+import jakarta.websocket.WebSocketContainer;
+import jakarta.websocket.server.ServerEndpointConfig;
 
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/test/org/apache/tomcat/websocket/TestWsSubprotocols.java b/test/org/apache/tomcat/websocket/TestWsSubprotocols.java
index d6b848e..8bc21fe 100644
--- a/test/org/apache/tomcat/websocket/TestWsSubprotocols.java
+++ b/test/org/apache/tomcat/websocket/TestWsSubprotocols.java
@@ -20,14 +20,14 @@ import java.net.URI;
 import java.util.Arrays;
 import java.util.List;
 
-import javax.websocket.ClientEndpointConfig;
-import javax.websocket.ContainerProvider;
-import javax.websocket.EndpointConfig;
-import javax.websocket.OnOpen;
-import javax.websocket.Session;
-import javax.websocket.WebSocketContainer;
-import javax.websocket.server.ServerEndpoint;
-import javax.websocket.server.ServerEndpointConfig;
+import jakarta.websocket.ClientEndpointConfig;
+import jakarta.websocket.ContainerProvider;
+import jakarta.websocket.EndpointConfig;
+import jakarta.websocket.OnOpen;
+import jakarta.websocket.Session;
+import jakarta.websocket.WebSocketContainer;
+import jakarta.websocket.server.ServerEndpoint;
+import jakarta.websocket.server.ServerEndpointConfig;
 
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/test/org/apache/tomcat/websocket/TestWsWebSocketContainer.java b/test/org/apache/tomcat/websocket/TestWsWebSocketContainer.java
index de98974..1554cf0 100644
--- a/test/org/apache/tomcat/websocket/TestWsWebSocketContainer.java
+++ b/test/org/apache/tomcat/websocket/TestWsWebSocketContainer.java
@@ -29,21 +29,20 @@ import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 
-import javax.websocket.ClientEndpointConfig;
-import javax.websocket.ContainerProvider;
-import javax.websocket.DeploymentException;
-import javax.websocket.Endpoint;
-import javax.websocket.EndpointConfig;
-import javax.websocket.Extension;
-import javax.websocket.MessageHandler;
-import javax.websocket.OnMessage;
-import javax.websocket.Session;
-import javax.websocket.WebSocketContainer;
-import javax.websocket.server.ServerContainer;
-import javax.websocket.server.ServerEndpoint;
-import javax.websocket.server.ServerEndpointConfig;
-
 import jakarta.servlet.ServletContextEvent;
+import jakarta.websocket.ClientEndpointConfig;
+import jakarta.websocket.ContainerProvider;
+import jakarta.websocket.DeploymentException;
+import jakarta.websocket.Endpoint;
+import jakarta.websocket.EndpointConfig;
+import jakarta.websocket.Extension;
+import jakarta.websocket.MessageHandler;
+import jakarta.websocket.OnMessage;
+import jakarta.websocket.Session;
+import jakarta.websocket.WebSocketContainer;
+import jakarta.websocket.server.ServerContainer;
+import jakarta.websocket.server.ServerEndpoint;
+import jakarta.websocket.server.ServerEndpointConfig;
 
 import org.junit.Assert;
 import org.junit.Test;
@@ -120,7 +119,7 @@ public class TestWsWebSocketContainer extends WebSocketBaseTest {
     }
 
 
-    @Test(expected=javax.websocket.DeploymentException.class)
+    @Test(expected=jakarta.websocket.DeploymentException.class)
     public void testConnectToServerEndpointInvalidScheme() throws Exception {
         Tomcat tomcat = getTomcatInstance();
         // No file system docBase required
@@ -138,7 +137,7 @@ public class TestWsWebSocketContainer extends WebSocketBaseTest {
     }
 
 
-    @Test(expected=javax.websocket.DeploymentException.class)
+    @Test(expected=jakarta.websocket.DeploymentException.class)
     public void testConnectToServerEndpointNoHost() throws Exception {
         Tomcat tomcat = getTomcatInstance();
         // No file system docBase required
diff --git a/test/org/apache/tomcat/websocket/TestWsWebSocketContainerGetOpenSessions.java b/test/org/apache/tomcat/websocket/TestWsWebSocketContainerGetOpenSessions.java
index dcea80b..91d730a 100644
--- a/test/org/apache/tomcat/websocket/TestWsWebSocketContainerGetOpenSessions.java
+++ b/test/org/apache/tomcat/websocket/TestWsWebSocketContainerGetOpenSessions.java
@@ -23,21 +23,20 @@ import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.atomic.AtomicInteger;
 
-import javax.websocket.ClientEndpointConfig;
-import javax.websocket.CloseReason;
-import javax.websocket.ContainerProvider;
-import javax.websocket.DeploymentException;
-import javax.websocket.Endpoint;
-import javax.websocket.EndpointConfig;
-import javax.websocket.MessageHandler;
-import javax.websocket.OnMessage;
-import javax.websocket.Session;
-import javax.websocket.WebSocketContainer;
-import javax.websocket.server.ServerContainer;
-import javax.websocket.server.ServerEndpoint;
-import javax.websocket.server.ServerEndpointConfig;
-
 import jakarta.servlet.ServletContextEvent;
+import jakarta.websocket.ClientEndpointConfig;
+import jakarta.websocket.CloseReason;
+import jakarta.websocket.ContainerProvider;
+import jakarta.websocket.DeploymentException;
+import jakarta.websocket.Endpoint;
+import jakarta.websocket.EndpointConfig;
+import jakarta.websocket.MessageHandler;
+import jakarta.websocket.OnMessage;
+import jakarta.websocket.Session;
+import jakarta.websocket.WebSocketContainer;
+import jakarta.websocket.server.ServerContainer;
+import jakarta.websocket.server.ServerEndpoint;
+import jakarta.websocket.server.ServerEndpointConfig;
 
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/test/org/apache/tomcat/websocket/TesterAsyncTiming.java b/test/org/apache/tomcat/websocket/TesterAsyncTiming.java
index e9b7a3a..61cfbff 100644
--- a/test/org/apache/tomcat/websocket/TesterAsyncTiming.java
+++ b/test/org/apache/tomcat/websocket/TesterAsyncTiming.java
@@ -19,12 +19,12 @@ package org.apache.tomcat.websocket;
 import java.nio.ByteBuffer;
 import java.util.concurrent.Semaphore;
 
-import javax.websocket.OnMessage;
-import javax.websocket.RemoteEndpoint.Async;
-import javax.websocket.SendHandler;
-import javax.websocket.SendResult;
-import javax.websocket.Session;
-import javax.websocket.server.ServerEndpoint;
+import jakarta.websocket.OnMessage;
+import jakarta.websocket.RemoteEndpoint.Async;
+import jakarta.websocket.SendHandler;
+import jakarta.websocket.SendResult;
+import jakarta.websocket.Session;
+import jakarta.websocket.server.ServerEndpoint;
 
 import org.apache.tomcat.websocket.server.TesterEndpointConfig;
 
diff --git a/test/org/apache/tomcat/websocket/TesterBlockWebSocketSCI.java b/test/org/apache/tomcat/websocket/TesterBlockWebSocketSCI.java
index 423e01e..3a691aa 100644
--- a/test/org/apache/tomcat/websocket/TesterBlockWebSocketSCI.java
+++ b/test/org/apache/tomcat/websocket/TesterBlockWebSocketSCI.java
@@ -19,9 +19,9 @@ package org.apache.tomcat.websocket;
 import java.util.Collections;
 import java.util.Set;
 
-import javax.websocket.Endpoint;
-import javax.websocket.server.ServerApplicationConfig;
-import javax.websocket.server.ServerEndpointConfig;
+import jakarta.websocket.Endpoint;
+import jakarta.websocket.server.ServerApplicationConfig;
+import jakarta.websocket.server.ServerEndpointConfig;
 
 /**
  * This configuration blocks any endpoints discovered by the SCI from being
diff --git a/test/org/apache/tomcat/websocket/TesterEchoServer.java b/test/org/apache/tomcat/websocket/TesterEchoServer.java
index eb20213..cfc0855 100644
--- a/test/org/apache/tomcat/websocket/TesterEchoServer.java
+++ b/test/org/apache/tomcat/websocket/TesterEchoServer.java
@@ -19,13 +19,12 @@ package org.apache.tomcat.websocket;
 import java.io.IOException;
 import java.nio.ByteBuffer;
 
-import javax.websocket.DeploymentException;
-import javax.websocket.OnMessage;
-import javax.websocket.Session;
-import javax.websocket.server.ServerContainer;
-import javax.websocket.server.ServerEndpoint;
-
 import jakarta.servlet.ServletContextEvent;
+import jakarta.websocket.DeploymentException;
+import jakarta.websocket.OnMessage;
+import jakarta.websocket.Session;
+import jakarta.websocket.server.ServerContainer;
+import jakarta.websocket.server.ServerEndpoint;
 
 import org.apache.tomcat.websocket.server.Constants;
 import org.apache.tomcat.websocket.server.WsContextListener;
diff --git a/test/org/apache/tomcat/websocket/TesterFirehoseServer.java b/test/org/apache/tomcat/websocket/TesterFirehoseServer.java
index 8b4b1ef..e16b11b 100644
--- a/test/org/apache/tomcat/websocket/TesterFirehoseServer.java
+++ b/test/org/apache/tomcat/websocket/TesterFirehoseServer.java
@@ -19,13 +19,13 @@ package org.apache.tomcat.websocket;
 import java.io.IOException;
 import java.util.concurrent.atomic.AtomicInteger;
 
-import javax.websocket.OnClose;
-import javax.websocket.OnError;
-import javax.websocket.OnMessage;
-import javax.websocket.OnOpen;
-import javax.websocket.RemoteEndpoint.Basic;
-import javax.websocket.Session;
-import javax.websocket.server.ServerEndpoint;
+import jakarta.websocket.OnClose;
+import jakarta.websocket.OnError;
+import jakarta.websocket.OnMessage;
+import jakarta.websocket.OnOpen;
+import jakarta.websocket.RemoteEndpoint.Basic;
+import jakarta.websocket.Session;
+import jakarta.websocket.server.ServerEndpoint;
 
 import org.apache.tomcat.websocket.server.TesterEndpointConfig;
 
diff --git a/test/org/apache/tomcat/websocket/TesterMessageCountClient.java b/test/org/apache/tomcat/websocket/TesterMessageCountClient.java
index f340cbb..8faa193 100644
--- a/test/org/apache/tomcat/websocket/TesterMessageCountClient.java
+++ b/test/org/apache/tomcat/websocket/TesterMessageCountClient.java
@@ -23,15 +23,15 @@ import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.LinkedBlockingQueue;
 
-import javax.websocket.ClientEndpoint;
-import javax.websocket.CloseReason;
-import javax.websocket.Endpoint;
-import javax.websocket.EndpointConfig;
-import javax.websocket.MessageHandler;
-import javax.websocket.OnClose;
-import javax.websocket.OnError;
-import javax.websocket.OnOpen;
-import javax.websocket.Session;
+import jakarta.websocket.ClientEndpoint;
+import jakarta.websocket.CloseReason;
+import jakarta.websocket.Endpoint;
+import jakarta.websocket.EndpointConfig;
+import jakarta.websocket.MessageHandler;
+import jakarta.websocket.OnClose;
+import jakarta.websocket.OnError;
+import jakarta.websocket.OnOpen;
+import jakarta.websocket.Session;
 
 public class TesterMessageCountClient {
 
diff --git a/test/org/apache/tomcat/websocket/TesterWsClientAutobahn.java b/test/org/apache/tomcat/websocket/TesterWsClientAutobahn.java
index 1b5ee39..4917004 100644
--- a/test/org/apache/tomcat/websocket/TesterWsClientAutobahn.java
+++ b/test/org/apache/tomcat/websocket/TesterWsClientAutobahn.java
@@ -23,16 +23,16 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.CountDownLatch;
 
-import javax.websocket.ClientEndpoint;
-import javax.websocket.ClientEndpointConfig;
-import javax.websocket.ContainerProvider;
-import javax.websocket.Endpoint;
-import javax.websocket.Extension;
-import javax.websocket.OnClose;
-import javax.websocket.OnError;
-import javax.websocket.OnMessage;
-import javax.websocket.Session;
-import javax.websocket.WebSocketContainer;
+import jakarta.websocket.ClientEndpoint;
+import jakarta.websocket.ClientEndpointConfig;
+import jakarta.websocket.ContainerProvider;
+import jakarta.websocket.Endpoint;
+import jakarta.websocket.Extension;
+import jakarta.websocket.OnClose;
+import jakarta.websocket.OnError;
+import jakarta.websocket.OnMessage;
+import jakarta.websocket.Session;
+import jakarta.websocket.WebSocketContainer;
 
 import org.apache.tomcat.util.ExceptionUtils;
 import org.apache.tomcat.websocket.pojo.PojoEndpointClient;
diff --git a/test/org/apache/tomcat/websocket/pojo/TestEncodingDecoding.java b/test/org/apache/tomcat/websocket/pojo/TestEncodingDecoding.java
index a82a157..ed5e771 100644
--- a/test/org/apache/tomcat/websocket/pojo/TestEncodingDecoding.java
+++ b/test/org/apache/tomcat/websocket/pojo/TestEncodingDecoding.java
@@ -27,26 +27,25 @@ import java.util.Queue;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentLinkedQueue;
 
-import javax.websocket.ClientEndpoint;
-import javax.websocket.ContainerProvider;
-import javax.websocket.DecodeException;
-import javax.websocket.Decoder;
-import javax.websocket.DeploymentException;
-import javax.websocket.EncodeException;
-import javax.websocket.Encoder;
-import javax.websocket.Endpoint;
-import javax.websocket.EndpointConfig;
-import javax.websocket.Extension;
-import javax.websocket.MessageHandler;
-import javax.websocket.OnError;
-import javax.websocket.OnMessage;
-import javax.websocket.Session;
-import javax.websocket.WebSocketContainer;
-import javax.websocket.server.ServerContainer;
-import javax.websocket.server.ServerEndpoint;
-import javax.websocket.server.ServerEndpointConfig;
-
 import jakarta.servlet.ServletContextEvent;
+import jakarta.websocket.ClientEndpoint;
+import jakarta.websocket.ContainerProvider;
+import jakarta.websocket.DecodeException;
+import jakarta.websocket.Decoder;
+import jakarta.websocket.DeploymentException;
+import jakarta.websocket.EncodeException;
+import jakarta.websocket.Encoder;
+import jakarta.websocket.Endpoint;
+import jakarta.websocket.EndpointConfig;
+import jakarta.websocket.Extension;
+import jakarta.websocket.MessageHandler;
+import jakarta.websocket.OnError;
+import jakarta.websocket.OnMessage;
+import jakarta.websocket.Session;
+import jakarta.websocket.WebSocketContainer;
+import jakarta.websocket.server.ServerContainer;
+import jakarta.websocket.server.ServerEndpoint;
+import jakarta.websocket.server.ServerEndpointConfig;
 
 import org.junit.Assert;
 import org.junit.Ignore;
diff --git a/test/org/apache/tomcat/websocket/pojo/TestPojoEndpointBase.java b/test/org/apache/tomcat/websocket/pojo/TestPojoEndpointBase.java
index b98cdcd..2177ac4 100644
--- a/test/org/apache/tomcat/websocket/pojo/TestPojoEndpointBase.java
+++ b/test/org/apache/tomcat/websocket/pojo/TestPojoEndpointBase.java
@@ -20,15 +20,15 @@ import java.net.URI;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 
-import javax.websocket.ClientEndpoint;
-import javax.websocket.ContainerProvider;
-import javax.websocket.EndpointConfig;
-import javax.websocket.OnClose;
-import javax.websocket.OnError;
-import javax.websocket.OnOpen;
-import javax.websocket.Session;
-import javax.websocket.WebSocketContainer;
-import javax.websocket.server.ServerEndpoint;
+import jakarta.websocket.ClientEndpoint;
+import jakarta.websocket.ContainerProvider;
+import jakarta.websocket.EndpointConfig;
+import jakarta.websocket.OnClose;
+import jakarta.websocket.OnError;
+import jakarta.websocket.OnOpen;
+import jakarta.websocket.Session;
+import jakarta.websocket.WebSocketContainer;
+import jakarta.websocket.server.ServerEndpoint;
 
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/test/org/apache/tomcat/websocket/pojo/TestPojoMethodMapping.java b/test/org/apache/tomcat/websocket/pojo/TestPojoMethodMapping.java
index e4ebc18..14b916d 100644
--- a/test/org/apache/tomcat/websocket/pojo/TestPojoMethodMapping.java
+++ b/test/org/apache/tomcat/websocket/pojo/TestPojoMethodMapping.java
@@ -20,14 +20,14 @@ import java.net.URI;
 import java.util.ArrayList;
 import java.util.List;
 
-import javax.websocket.ContainerProvider;
-import javax.websocket.OnClose;
-import javax.websocket.OnMessage;
-import javax.websocket.OnOpen;
-import javax.websocket.Session;
-import javax.websocket.WebSocketContainer;
-import javax.websocket.server.PathParam;
-import javax.websocket.server.ServerEndpoint;
+import jakarta.websocket.ContainerProvider;
+import jakarta.websocket.OnClose;
+import jakarta.websocket.OnMessage;
+import jakarta.websocket.OnOpen;
+import jakarta.websocket.Session;
+import jakarta.websocket.WebSocketContainer;
+import jakarta.websocket.server.PathParam;
+import jakarta.websocket.server.ServerEndpoint;
 
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/test/org/apache/tomcat/websocket/pojo/TesterUtil.java b/test/org/apache/tomcat/websocket/pojo/TesterUtil.java
index d3611a0..4c5db6d 100644
--- a/test/org/apache/tomcat/websocket/pojo/TesterUtil.java
+++ b/test/org/apache/tomcat/websocket/pojo/TesterUtil.java
@@ -16,8 +16,8 @@
  */
 package org.apache.tomcat.websocket.pojo;
 
-import javax.websocket.ClientEndpoint;
-import javax.websocket.server.ServerEndpointConfig.Configurator;
+import jakarta.websocket.ClientEndpoint;
+import jakarta.websocket.server.ServerEndpointConfig.Configurator;
 
 import org.apache.tomcat.websocket.server.TesterEndpointConfig;
 
diff --git a/test/org/apache/tomcat/websocket/server/TestAsyncMessages.java b/test/org/apache/tomcat/websocket/server/TestAsyncMessages.java
index 7937818..e9a5893 100644
--- a/test/org/apache/tomcat/websocket/server/TestAsyncMessages.java
+++ b/test/org/apache/tomcat/websocket/server/TestAsyncMessages.java
@@ -20,11 +20,11 @@ import java.net.URI;
 import java.nio.ByteBuffer;
 import java.util.concurrent.CountDownLatch;
 
-import javax.websocket.ClientEndpointConfig;
-import javax.websocket.ContainerProvider;
-import javax.websocket.MessageHandler;
-import javax.websocket.Session;
-import javax.websocket.WebSocketContainer;
+import jakarta.websocket.ClientEndpointConfig;
+import jakarta.websocket.ContainerProvider;
+import jakarta.websocket.MessageHandler;
+import jakarta.websocket.Session;
+import jakarta.websocket.WebSocketContainer;
 
 import org.junit.Assert;
 import org.junit.Ignore;
diff --git a/test/org/apache/tomcat/websocket/server/TestClassLoader.java b/test/org/apache/tomcat/websocket/server/TestClassLoader.java
index b182ef6..84afed1 100644
--- a/test/org/apache/tomcat/websocket/server/TestClassLoader.java
+++ b/test/org/apache/tomcat/websocket/server/TestClassLoader.java
@@ -20,13 +20,13 @@ import java.io.IOException;
 import java.net.URI;
 import java.util.concurrent.atomic.AtomicInteger;
 
-import javax.websocket.ClientEndpoint;
-import javax.websocket.ContainerProvider;
-import javax.websocket.OnMessage;
-import javax.websocket.OnOpen;
-import javax.websocket.Session;
-import javax.websocket.WebSocketContainer;
-import javax.websocket.server.ServerEndpoint;
+import jakarta.websocket.ClientEndpoint;
+import jakarta.websocket.ContainerProvider;
+import jakarta.websocket.OnMessage;
+import jakarta.websocket.OnOpen;
+import jakarta.websocket.Session;
+import jakarta.websocket.WebSocketContainer;
+import jakarta.websocket.server.ServerEndpoint;
 
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/test/org/apache/tomcat/websocket/server/TestClose.java b/test/org/apache/tomcat/websocket/server/TestClose.java
index 30c18bb..cc8dc57 100644
--- a/test/org/apache/tomcat/websocket/server/TestClose.java
+++ b/test/org/apache/tomcat/websocket/server/TestClose.java
@@ -22,15 +22,15 @@ import java.util.Set;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 
-import javax.websocket.CloseReason;
-import javax.websocket.CloseReason.CloseCode;
-import javax.websocket.CloseReason.CloseCodes;
-import javax.websocket.OnClose;
-import javax.websocket.OnError;
-import javax.websocket.OnMessage;
-import javax.websocket.OnOpen;
-import javax.websocket.Session;
-import javax.websocket.server.ServerEndpointConfig;
+import jakarta.websocket.CloseReason;
+import jakarta.websocket.CloseReason.CloseCode;
+import jakarta.websocket.CloseReason.CloseCodes;
+import jakarta.websocket.OnClose;
+import jakarta.websocket.OnError;
+import jakarta.websocket.OnMessage;
+import jakarta.websocket.OnOpen;
+import jakarta.websocket.Session;
+import jakarta.websocket.server.ServerEndpointConfig;
 
 import org.junit.Assert;
 import org.junit.Assume;
diff --git a/test/org/apache/tomcat/websocket/server/TestCloseBug58624.java b/test/org/apache/tomcat/websocket/server/TestCloseBug58624.java
index b0785c6..7feb93b 100644
--- a/test/org/apache/tomcat/websocket/server/TestCloseBug58624.java
+++ b/test/org/apache/tomcat/websocket/server/TestCloseBug58624.java
@@ -19,20 +19,19 @@ package org.apache.tomcat.websocket.server;
 import java.net.URI;
 import java.util.concurrent.atomic.AtomicInteger;
 
-import javax.websocket.ClientEndpoint;
-import javax.websocket.CloseReason;
-import javax.websocket.ContainerProvider;
-import javax.websocket.DeploymentException;
-import javax.websocket.OnClose;
-import javax.websocket.OnError;
-import javax.websocket.OnMessage;
-import javax.websocket.OnOpen;
-import javax.websocket.Session;
-import javax.websocket.WebSocketContainer;
-import javax.websocket.server.ServerContainer;
-import javax.websocket.server.ServerEndpointConfig;
-
 import jakarta.servlet.ServletContextEvent;
+import jakarta.websocket.ClientEndpoint;
+import jakarta.websocket.CloseReason;
+import jakarta.websocket.ContainerProvider;
+import jakarta.websocket.DeploymentException;
+import jakarta.websocket.OnClose;
+import jakarta.websocket.OnError;
+import jakarta.websocket.OnMessage;
+import jakarta.websocket.OnOpen;
+import jakarta.websocket.Session;
+import jakarta.websocket.WebSocketContainer;
+import jakarta.websocket.server.ServerContainer;
+import jakarta.websocket.server.ServerEndpointConfig;
 
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/test/org/apache/tomcat/websocket/server/TestShutdown.java b/test/org/apache/tomcat/websocket/server/TestShutdown.java
index 6cd7f18..6a4a881 100644
--- a/test/org/apache/tomcat/websocket/server/TestShutdown.java
+++ b/test/org/apache/tomcat/websocket/server/TestShutdown.java
@@ -22,14 +22,14 @@ import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicLong;
 
-import javax.websocket.ClientEndpointConfig;
-import javax.websocket.ContainerProvider;
-import javax.websocket.EndpointConfig;
-import javax.websocket.OnMessage;
-import javax.websocket.OnOpen;
-import javax.websocket.Session;
-import javax.websocket.WebSocketContainer;
-import javax.websocket.server.ServerEndpoint;
+import jakarta.websocket.ClientEndpointConfig;
+import jakarta.websocket.ContainerProvider;
+import jakarta.websocket.EndpointConfig;
+import jakarta.websocket.OnMessage;
+import jakarta.websocket.OnOpen;
+import jakarta.websocket.Session;
+import jakarta.websocket.WebSocketContainer;
+import jakarta.websocket.server.ServerEndpoint;
 
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/test/org/apache/tomcat/websocket/server/TestWsRemoteEndpointImplServer.java b/test/org/apache/tomcat/websocket/server/TestWsRemoteEndpointImplServer.java
index 77987ac..cbc0bd3 100644
--- a/test/org/apache/tomcat/websocket/server/TestWsRemoteEndpointImplServer.java
+++ b/test/org/apache/tomcat/websocket/server/TestWsRemoteEndpointImplServer.java
@@ -23,18 +23,18 @@ import java.util.List;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 
-import javax.websocket.CloseReason;
-import javax.websocket.ContainerProvider;
-import javax.websocket.EncodeException;
-import javax.websocket.Encoder;
-import javax.websocket.EndpointConfig;
-import javax.websocket.OnClose;
-import javax.websocket.OnError;
-import javax.websocket.OnMessage;
-import javax.websocket.OnOpen;
-import javax.websocket.Session;
-import javax.websocket.WebSocketContainer;
-import javax.websocket.server.ServerEndpointConfig;
+import jakarta.websocket.CloseReason;
+import jakarta.websocket.ContainerProvider;
+import jakarta.websocket.EncodeException;
+import jakarta.websocket.Encoder;
+import jakarta.websocket.EndpointConfig;
+import jakarta.websocket.OnClose;
+import jakarta.websocket.OnError;
+import jakarta.websocket.OnMessage;
+import jakarta.websocket.OnOpen;
+import jakarta.websocket.Session;
+import jakarta.websocket.WebSocketContainer;
+import jakarta.websocket.server.ServerEndpointConfig;
 
 import org.junit.Ignore;
 import org.junit.Test;
diff --git a/test/org/apache/tomcat/websocket/server/TestWsServerContainer.java b/test/org/apache/tomcat/websocket/server/TestWsServerContainer.java
index 1eb69d5..28fc72b 100644
--- a/test/org/apache/tomcat/websocket/server/TestWsServerContainer.java
+++ b/test/org/apache/tomcat/websocket/server/TestWsServerContainer.java
@@ -21,12 +21,12 @@ import java.util.Queue;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 
-import javax.websocket.ContainerProvider;
-import javax.websocket.DeploymentException;
-import javax.websocket.Session;
-import javax.websocket.WebSocketContainer;
-import javax.websocket.server.ServerEndpoint;
-import javax.websocket.server.ServerEndpointConfig;
+import jakarta.websocket.ContainerProvider;
+import jakarta.websocket.DeploymentException;
+import jakarta.websocket.Session;
+import jakarta.websocket.WebSocketContainer;
+import jakarta.websocket.server.ServerEndpoint;
+import jakarta.websocket.server.ServerEndpointConfig;
 
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/test/org/apache/tomcat/websocket/server/TesterEndpointConfig.java b/test/org/apache/tomcat/websocket/server/TesterEndpointConfig.java
index 855c194..9346606 100644
--- a/test/org/apache/tomcat/websocket/server/TesterEndpointConfig.java
+++ b/test/org/apache/tomcat/websocket/server/TesterEndpointConfig.java
@@ -16,11 +16,10 @@
  */
 package org.apache.tomcat.websocket.server;
 
-import javax.websocket.DeploymentException;
-import javax.websocket.server.ServerContainer;
-import javax.websocket.server.ServerEndpointConfig;
-
 import jakarta.servlet.ServletContextEvent;
+import jakarta.websocket.DeploymentException;
+import jakarta.websocket.server.ServerContainer;
+import jakarta.websocket.server.ServerEndpointConfig;
 
 public abstract class TesterEndpointConfig extends WsContextListener {
 
diff --git a/test/org/apache/tomcat/websocket/server/TesterWsClient.java b/test/org/apache/tomcat/websocket/server/TesterWsClient.java
index 01cdbc7..e1b7962 100644
--- a/test/org/apache/tomcat/websocket/server/TesterWsClient.java
+++ b/test/org/apache/tomcat/websocket/server/TesterWsClient.java
@@ -22,7 +22,7 @@ import java.io.InputStreamReader;
 import java.net.Socket;
 import java.nio.charset.StandardCharsets;
 
-import javax.websocket.CloseReason.CloseCode;
+import jakarta.websocket.CloseReason.CloseCode;
 
 /**
  * A client for testing Websocket behavior that differs from standard client
diff --git a/webapps/docs/web-socket-howto.xml b/webapps/docs/web-socket-howto.xml
index 69b8baf..6729d90 100644
--- a/webapps/docs/web-socket-howto.xml
+++ b/webapps/docs/web-socket-howto.xml
@@ -94,14 +94,14 @@
 <p>When using the WebSocket client to connect to server endpoints, the timeout
    for IO operations while establishing the connection is controlled by the
    <code>userProperties</code> of the provided
-   <code>javax.websocket.ClientEndpointConfig</code>. The property is
+   <code>jakarta.websocket.ClientEndpointConfig</code>. The property is
    <code>org.apache.tomcat.websocket.IO_TIMEOUT_MS</code> and is the
    timeout as a <code>String</code> in milliseconds. The default is 5000 (5
    seconds).</p>
 
 <p>When using the WebSocket client to connect to secure server endpoints, the
    client SSL configuration is controlled by the <code>userProperties</code>
-   of the provided <code>javax.websocket.ClientEndpointConfig</code>. The
+   of the provided <code>jakarta.websocket.ClientEndpointConfig</code>. The
    following user properties are supported:</p>
    <ul>
      <li><code>org.apache.tomcat.websocket.SSL_CONTEXT</code></li>
@@ -129,7 +129,7 @@
 <p>When using the WebSocket client to connect to server endpoints, the number of
    HTTP redirects that the client will follow is controlled by the
    <code>userProperties</code> of the provided
-   <code>javax.websocket.ClientEndpointConfig</code>. The property is
+   <code>jakarta.websocket.ClientEndpointConfig</code>. The property is
    <ocde>org.apache.tomcat.websocket.MAX_REDIRECTIONS</ocde>. The default value
    is 20. Redirection support can be disabled by configuring a value of zero.</p>
 
diff --git a/webapps/examples/WEB-INF/classes/websocket/ExamplesConfig.java b/webapps/examples/WEB-INF/classes/websocket/ExamplesConfig.java
index ba8c60b..5222a17 100644
--- a/webapps/examples/WEB-INF/classes/websocket/ExamplesConfig.java
+++ b/webapps/examples/WEB-INF/classes/websocket/ExamplesConfig.java
@@ -19,9 +19,9 @@ package websocket;
 import java.util.HashSet;
 import java.util.Set;
 
-import javax.websocket.Endpoint;
-import javax.websocket.server.ServerApplicationConfig;
-import javax.websocket.server.ServerEndpointConfig;
+import jakarta.websocket.Endpoint;
+import jakarta.websocket.server.ServerApplicationConfig;
+import jakarta.websocket.server.ServerEndpointConfig;
 
 import websocket.drawboard.DrawboardEndpoint;
 import websocket.echo.EchoEndpoint;
diff --git a/webapps/examples/WEB-INF/classes/websocket/chat/ChatAnnotation.java b/webapps/examples/WEB-INF/classes/websocket/chat/ChatAnnotation.java
index d1d5523..c0a2f2b 100644
--- a/webapps/examples/WEB-INF/classes/websocket/chat/ChatAnnotation.java
+++ b/webapps/examples/WEB-INF/classes/websocket/chat/ChatAnnotation.java
@@ -21,12 +21,12 @@ import java.util.Set;
 import java.util.concurrent.CopyOnWriteArraySet;
 import java.util.concurrent.atomic.AtomicInteger;
 
-import javax.websocket.OnClose;
-import javax.websocket.OnError;
-import javax.websocket.OnMessage;
-import javax.websocket.OnOpen;
-import javax.websocket.Session;
-import javax.websocket.server.ServerEndpoint;
+import jakarta.websocket.OnClose;
+import jakarta.websocket.OnError;
+import jakarta.websocket.OnMessage;
+import jakarta.websocket.OnOpen;
+import jakarta.websocket.Session;
+import jakarta.websocket.server.ServerEndpoint;
 
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
diff --git a/webapps/examples/WEB-INF/classes/websocket/drawboard/Client.java b/webapps/examples/WEB-INF/classes/websocket/drawboard/Client.java
index 909950d..549fd74 100644
--- a/webapps/examples/WEB-INF/classes/websocket/drawboard/Client.java
+++ b/webapps/examples/WEB-INF/classes/websocket/drawboard/Client.java
@@ -19,12 +19,12 @@ package websocket.drawboard;
 import java.io.IOException;
 import java.util.LinkedList;
 
-import javax.websocket.CloseReason;
-import javax.websocket.CloseReason.CloseCodes;
-import javax.websocket.RemoteEndpoint.Async;
-import javax.websocket.SendHandler;
-import javax.websocket.SendResult;
-import javax.websocket.Session;
+import jakarta.websocket.CloseReason;
+import jakarta.websocket.CloseReason.CloseCodes;
+import jakarta.websocket.RemoteEndpoint.Async;
+import jakarta.websocket.SendHandler;
+import jakarta.websocket.SendResult;
+import jakarta.websocket.Session;
 
 import websocket.drawboard.wsmessages.AbstractWebsocketMessage;
 import websocket.drawboard.wsmessages.BinaryWebsocketMessage;
diff --git a/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawboardEndpoint.java b/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawboardEndpoint.java
index cd99f49..df98966 100644
--- a/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawboardEndpoint.java
+++ b/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawboardEndpoint.java
@@ -19,11 +19,11 @@ package websocket.drawboard;
 import java.io.EOFException;
 import java.io.IOException;
 
-import javax.websocket.CloseReason;
-import javax.websocket.Endpoint;
-import javax.websocket.EndpointConfig;
-import javax.websocket.MessageHandler;
-import javax.websocket.Session;
+import jakarta.websocket.CloseReason;
+import jakarta.websocket.Endpoint;
+import jakarta.websocket.EndpointConfig;
+import jakarta.websocket.MessageHandler;
+import jakarta.websocket.Session;
 
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
diff --git a/webapps/examples/WEB-INF/classes/websocket/echo/EchoAnnotation.java b/webapps/examples/WEB-INF/classes/websocket/echo/EchoAnnotation.java
index 34f0de2..7cb3aa6 100644
--- a/webapps/examples/WEB-INF/classes/websocket/echo/EchoAnnotation.java
+++ b/webapps/examples/WEB-INF/classes/websocket/echo/EchoAnnotation.java
@@ -19,10 +19,10 @@ package websocket.echo;
 import java.io.IOException;
 import java.nio.ByteBuffer;
 
-import javax.websocket.OnMessage;
-import javax.websocket.PongMessage;
-import javax.websocket.Session;
-import javax.websocket.server.ServerEndpoint;
+import jakarta.websocket.OnMessage;
+import jakarta.websocket.PongMessage;
+import jakarta.websocket.Session;
+import jakarta.websocket.server.ServerEndpoint;
 
 /**
  * The three annotated echo endpoints can be used to test with Autobahn and
diff --git a/webapps/examples/WEB-INF/classes/websocket/echo/EchoAsyncAnnotation.java b/webapps/examples/WEB-INF/classes/websocket/echo/EchoAsyncAnnotation.java
index 39df783..1d92fd4 100644
--- a/webapps/examples/WEB-INF/classes/websocket/echo/EchoAsyncAnnotation.java
+++ b/webapps/examples/WEB-INF/classes/websocket/echo/EchoAsyncAnnotation.java
@@ -24,9 +24,9 @@ import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 
-import javax.websocket.OnMessage;
-import javax.websocket.PongMessage;
-import javax.websocket.Session;
+import jakarta.websocket.OnMessage;
+import jakarta.websocket.PongMessage;
+import jakarta.websocket.Session;
 
 /**
  * The three annotated echo endpoints can be used to test with Autobahn and
@@ -36,7 +36,7 @@ import javax.websocket.Session;
  * Note: This one is disabled by default since it allocates memory, and needs
  * to be enabled back.
  */
-//@javax.websocket.server.ServerEndpoint("/websocket/echoAsyncAnnotation")
+//@jakarta.websocket.server.ServerEndpoint("/websocket/echoAsyncAnnotation")
 public class EchoAsyncAnnotation {
 
     private static final Future<Void> COMPLETED = new CompletedFuture();
diff --git a/webapps/examples/WEB-INF/classes/websocket/echo/EchoEndpoint.java b/webapps/examples/WEB-INF/classes/websocket/echo/EchoEndpoint.java
index 3620238..8652861 100644
--- a/webapps/examples/WEB-INF/classes/websocket/echo/EchoEndpoint.java
+++ b/webapps/examples/WEB-INF/classes/websocket/echo/EchoEndpoint.java
@@ -19,11 +19,11 @@ package websocket.echo;
 import java.io.IOException;
 import java.nio.ByteBuffer;
 
-import javax.websocket.Endpoint;
-import javax.websocket.EndpointConfig;
-import javax.websocket.MessageHandler;
-import javax.websocket.RemoteEndpoint;
-import javax.websocket.Session;
+import jakarta.websocket.Endpoint;
+import jakarta.websocket.EndpointConfig;
+import jakarta.websocket.MessageHandler;
+import jakarta.websocket.RemoteEndpoint;
+import jakarta.websocket.Session;
 
 public class EchoEndpoint extends Endpoint {
 
diff --git a/webapps/examples/WEB-INF/classes/websocket/echo/EchoStreamAnnotation.java b/webapps/examples/WEB-INF/classes/websocket/echo/EchoStreamAnnotation.java
index 7aef821..95f4c1a 100644
--- a/webapps/examples/WEB-INF/classes/websocket/echo/EchoStreamAnnotation.java
+++ b/webapps/examples/WEB-INF/classes/websocket/echo/EchoStreamAnnotation.java
@@ -20,10 +20,10 @@ import java.io.IOException;
 import java.io.OutputStream;
 import java.io.Writer;
 
-import javax.websocket.OnMessage;
-import javax.websocket.PongMessage;
-import javax.websocket.Session;
-import javax.websocket.server.ServerEndpoint;
+import jakarta.websocket.OnMessage;
+import jakarta.websocket.PongMessage;
+import jakarta.websocket.Session;
+import jakarta.websocket.server.ServerEndpoint;
 
 /**
  * The three annotated echo endpoints can be used to test with Autobahn and
diff --git a/webapps/examples/WEB-INF/classes/websocket/snake/Snake.java b/webapps/examples/WEB-INF/classes/websocket/snake/Snake.java
index 7a11222..619a879 100644
--- a/webapps/examples/WEB-INF/classes/websocket/snake/Snake.java
+++ b/webapps/examples/WEB-INF/classes/websocket/snake/Snake.java
@@ -21,9 +21,9 @@ import java.util.ArrayDeque;
 import java.util.Collection;
 import java.util.Deque;
 
-import javax.websocket.CloseReason;
-import javax.websocket.CloseReason.CloseCodes;
-import javax.websocket.Session;
+import jakarta.websocket.CloseReason;
+import jakarta.websocket.CloseReason.CloseCodes;
+import jakarta.websocket.Session;
 
 public class Snake {
 
diff --git a/webapps/examples/WEB-INF/classes/websocket/snake/SnakeAnnotation.java b/webapps/examples/WEB-INF/classes/websocket/snake/SnakeAnnotation.java
index c030dbc..43d61c6 100644
--- a/webapps/examples/WEB-INF/classes/websocket/snake/SnakeAnnotation.java
+++ b/webapps/examples/WEB-INF/classes/websocket/snake/SnakeAnnotation.java
@@ -22,12 +22,12 @@ import java.util.Iterator;
 import java.util.Random;
 import java.util.concurrent.atomic.AtomicInteger;
 
-import javax.websocket.OnClose;
-import javax.websocket.OnError;
-import javax.websocket.OnMessage;
-import javax.websocket.OnOpen;
-import javax.websocket.Session;
-import javax.websocket.server.ServerEndpoint;
+import jakarta.websocket.OnClose;
+import jakarta.websocket.OnError;
+import jakarta.websocket.OnMessage;
+import jakarta.websocket.OnOpen;
+import jakarta.websocket.Session;
+import jakarta.websocket.server.ServerEndpoint;
 
 @ServerEndpoint(value = "/websocket/snake")
 public class SnakeAnnotation {


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


[tomcat] 08/18: Rename "javax.security.auth.message" to "jakarta.security.auth.message"

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tomcat.git

commit 35dc7b9288aad4a7d70750c157543d4ff1593c98
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Thu Nov 28 14:03:48 2019 +0000

    Rename "javax.security.auth.message" to "jakarta.security.auth.message"
---
 build.xml                                           |  4 ++--
 .../security/auth/message/AuthException.java        |  2 +-
 .../security/auth/message/AuthStatus.java           |  2 +-
 .../security/auth/message/ClientAuth.java           |  2 +-
 .../security/auth/message/MessageInfo.java          |  2 +-
 .../security/auth/message/MessagePolicy.java        |  2 +-
 .../security/auth/message/ServerAuth.java           |  2 +-
 .../message/callback/CallerPrincipalCallback.java   |  2 +-
 .../auth/message/callback/CertStoreCallback.java    |  2 +-
 .../message/callback/GroupPrincipalCallback.java    |  2 +-
 .../callback/PasswordValidationCallback.java        |  2 +-
 .../auth/message/callback/PrivateKeyCallback.java   |  2 +-
 .../auth/message/callback/SecretKeyCallback.java    |  2 +-
 .../auth/message/callback/TrustStoreCallback.java   |  2 +-
 .../security/auth/message/config/AuthConfig.java    |  4 ++--
 .../auth/message/config/AuthConfigFactory.java      |  2 +-
 .../auth/message/config/AuthConfigProvider.java     |  5 +++--
 .../auth/message/config/ClientAuthConfig.java       |  5 +++--
 .../auth/message/config/ClientAuthContext.java      |  4 ++--
 .../auth/message/config/RegistrationListener.java   |  2 +-
 .../auth/message/config/ServerAuthConfig.java       |  5 +++--
 .../auth/message/config/ServerAuthContext.java      |  4 ++--
 .../auth/message/module/ClientAuthModule.java       |  9 +++++----
 .../auth/message/module/ServerAuthModule.java       |  9 +++++----
 .../catalina/authenticator/AuthenticatorBase.java   | 17 +++++++++--------
 .../authenticator/jaspic/AuthConfigFactoryImpl.java |  6 +++---
 .../authenticator/jaspic/CallbackHandlerImpl.java   |  5 +++--
 .../authenticator/jaspic/MessageInfoImpl.java       |  5 +++--
 .../jaspic/SimpleAuthConfigProvider.java            | 13 +++++++------
 .../jaspic/SimpleServerAuthConfig.java              | 11 ++++++-----
 .../jaspic/SimpleServerAuthContext.java             | 11 ++++++-----
 res/META-INF/jaspic-api.jar.manifest                |  6 +++---
 res/bnd/jaspic-api.jar.tmp.bnd                      |  8 ++++----
 res/bnd/tomcat-embed-core.jar.tmp.bnd               |  8 ++++----
 res/checkstyle/jakarta-import-control.xml           | 21 +++++++++++++++++++++
 res/checkstyle/javax-import-control.xml             | 21 ---------------------
 res/checkstyle/org-import-control.xml               |  2 ++
 res/maven/tomcat-jaspic-api.pom                     |  2 +-
 .../jaspic/TestAuthConfigFactoryImpl.java           |  6 +++---
 .../jaspic/TestSimpleServerAuthConfig.java          |  8 ++++----
 .../authenticator/jaspic/TesterMessageInfo.java     |  2 +-
 .../jaspic/TesterServerAuthModuleA.java             | 11 ++++++-----
 .../catalina/loader/TestWebappClassLoader.java      |  2 +-
 43 files changed, 129 insertions(+), 115 deletions(-)

diff --git a/build.xml b/build.xml
index 821ba8c..a553b56 100644
--- a/build.xml
+++ b/build.xml
@@ -352,7 +352,7 @@
   </patternset>
 
   <patternset id="files.jaspic-api">
-    <include name="javax/security/auth/message/**" />
+    <include name="jakarta/security/auth/message/**" />
   </patternset>
 
   <patternset id="files.tomcat-websocket">
@@ -1992,7 +1992,7 @@ Apache Tomcat ${version} native binaries for Win64 AMD64/EMT64 platform.
         <path location="${ant.core.lib}"/>
       </classpath>
     </javadoc>
-    <javadoc packagenames="javax.security.auth.message.*"
+    <javadoc packagenames="jakarta.security.auth.message.*"
       sourcepath="${tomcat.dist}/src/java"
       destdir="${tomcat.dist}/webapps/docs/jaspicapi"
       version="true"
diff --git a/java/javax/security/auth/message/AuthException.java b/java/jakarta/security/auth/message/AuthException.java
similarity index 96%
rename from java/javax/security/auth/message/AuthException.java
rename to java/jakarta/security/auth/message/AuthException.java
index a043772..bc51ae6 100644
--- a/java/javax/security/auth/message/AuthException.java
+++ b/java/jakarta/security/auth/message/AuthException.java
@@ -14,7 +14,7 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-package javax.security.auth.message;
+package jakarta.security.auth.message;
 
 import javax.security.auth.login.LoginException;
 
diff --git a/java/javax/security/auth/message/AuthStatus.java b/java/jakarta/security/auth/message/AuthStatus.java
similarity index 97%
rename from java/javax/security/auth/message/AuthStatus.java
rename to java/jakarta/security/auth/message/AuthStatus.java
index b9ca385..2e9c10d 100644
--- a/java/javax/security/auth/message/AuthStatus.java
+++ b/java/jakarta/security/auth/message/AuthStatus.java
@@ -14,7 +14,7 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-package javax.security.auth.message;
+package jakarta.security.auth.message;
 
 public class AuthStatus {
 
diff --git a/java/javax/security/auth/message/ClientAuth.java b/java/jakarta/security/auth/message/ClientAuth.java
similarity index 96%
rename from java/javax/security/auth/message/ClientAuth.java
rename to java/jakarta/security/auth/message/ClientAuth.java
index a537ef2..c1cf471 100644
--- a/java/javax/security/auth/message/ClientAuth.java
+++ b/java/jakarta/security/auth/message/ClientAuth.java
@@ -14,7 +14,7 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-package javax.security.auth.message;
+package jakarta.security.auth.message;
 
 import javax.security.auth.Subject;
 
diff --git a/java/javax/security/auth/message/MessageInfo.java b/java/jakarta/security/auth/message/MessageInfo.java
similarity index 96%
rename from java/javax/security/auth/message/MessageInfo.java
rename to java/jakarta/security/auth/message/MessageInfo.java
index dc3d263..4d915b9 100644
--- a/java/javax/security/auth/message/MessageInfo.java
+++ b/java/jakarta/security/auth/message/MessageInfo.java
@@ -14,7 +14,7 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-package javax.security.auth.message;
+package jakarta.security.auth.message;
 
 import java.util.Map;
 
diff --git a/java/javax/security/auth/message/MessagePolicy.java b/java/jakarta/security/auth/message/MessagePolicy.java
similarity index 98%
rename from java/javax/security/auth/message/MessagePolicy.java
rename to java/jakarta/security/auth/message/MessagePolicy.java
index 39673b2..603705c 100644
--- a/java/javax/security/auth/message/MessagePolicy.java
+++ b/java/jakarta/security/auth/message/MessagePolicy.java
@@ -14,7 +14,7 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-package javax.security.auth.message;
+package jakarta.security.auth.message;
 
 public class MessagePolicy {
 
diff --git a/java/javax/security/auth/message/ServerAuth.java b/java/jakarta/security/auth/message/ServerAuth.java
similarity index 96%
rename from java/javax/security/auth/message/ServerAuth.java
rename to java/jakarta/security/auth/message/ServerAuth.java
index bb404f5..0ecff10 100644
--- a/java/javax/security/auth/message/ServerAuth.java
+++ b/java/jakarta/security/auth/message/ServerAuth.java
@@ -14,7 +14,7 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-package javax.security.auth.message;
+package jakarta.security.auth.message;
 
 import javax.security.auth.Subject;
 
diff --git a/java/javax/security/auth/message/callback/CallerPrincipalCallback.java b/java/jakarta/security/auth/message/callback/CallerPrincipalCallback.java
similarity index 97%
rename from java/javax/security/auth/message/callback/CallerPrincipalCallback.java
rename to java/jakarta/security/auth/message/callback/CallerPrincipalCallback.java
index 2c7010f..12ec34d 100644
--- a/java/javax/security/auth/message/callback/CallerPrincipalCallback.java
+++ b/java/jakarta/security/auth/message/callback/CallerPrincipalCallback.java
@@ -14,7 +14,7 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-package javax.security.auth.message.callback;
+package jakarta.security.auth.message.callback;
 
 import java.security.Principal;
 
diff --git a/java/javax/security/auth/message/callback/CertStoreCallback.java b/java/jakarta/security/auth/message/callback/CertStoreCallback.java
similarity index 96%
rename from java/javax/security/auth/message/callback/CertStoreCallback.java
rename to java/jakarta/security/auth/message/callback/CertStoreCallback.java
index 13734e8..fde1129 100644
--- a/java/javax/security/auth/message/callback/CertStoreCallback.java
+++ b/java/jakarta/security/auth/message/callback/CertStoreCallback.java
@@ -14,7 +14,7 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-package javax.security.auth.message.callback;
+package jakarta.security.auth.message.callback;
 
 import java.security.cert.CertStore;
 
diff --git a/java/javax/security/auth/message/callback/GroupPrincipalCallback.java b/java/jakarta/security/auth/message/callback/GroupPrincipalCallback.java
similarity index 96%
rename from java/javax/security/auth/message/callback/GroupPrincipalCallback.java
rename to java/jakarta/security/auth/message/callback/GroupPrincipalCallback.java
index f44c046..738878a 100644
--- a/java/javax/security/auth/message/callback/GroupPrincipalCallback.java
+++ b/java/jakarta/security/auth/message/callback/GroupPrincipalCallback.java
@@ -14,7 +14,7 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-package javax.security.auth.message.callback;
+package jakarta.security.auth.message.callback;
 
 import javax.security.auth.Subject;
 import javax.security.auth.callback.Callback;
diff --git a/java/javax/security/auth/message/callback/PasswordValidationCallback.java b/java/jakarta/security/auth/message/callback/PasswordValidationCallback.java
similarity index 97%
rename from java/javax/security/auth/message/callback/PasswordValidationCallback.java
rename to java/jakarta/security/auth/message/callback/PasswordValidationCallback.java
index 2eaad2d..5c8fb20 100644
--- a/java/javax/security/auth/message/callback/PasswordValidationCallback.java
+++ b/java/jakarta/security/auth/message/callback/PasswordValidationCallback.java
@@ -14,7 +14,7 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-package javax.security.auth.message.callback;
+package jakarta.security.auth.message.callback;
 
 import java.util.Arrays;
 
diff --git a/java/javax/security/auth/message/callback/PrivateKeyCallback.java b/java/jakarta/security/auth/message/callback/PrivateKeyCallback.java
similarity index 98%
rename from java/javax/security/auth/message/callback/PrivateKeyCallback.java
rename to java/jakarta/security/auth/message/callback/PrivateKeyCallback.java
index 76feefe..fb9d43b 100644
--- a/java/javax/security/auth/message/callback/PrivateKeyCallback.java
+++ b/java/jakarta/security/auth/message/callback/PrivateKeyCallback.java
@@ -14,7 +14,7 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-package javax.security.auth.message.callback;
+package jakarta.security.auth.message.callback;
 
 import java.math.BigInteger;
 import java.security.PrivateKey;
diff --git a/java/javax/security/auth/message/callback/SecretKeyCallback.java b/java/jakarta/security/auth/message/callback/SecretKeyCallback.java
similarity index 97%
rename from java/javax/security/auth/message/callback/SecretKeyCallback.java
rename to java/jakarta/security/auth/message/callback/SecretKeyCallback.java
index ff248fc..71c6a4d 100644
--- a/java/javax/security/auth/message/callback/SecretKeyCallback.java
+++ b/java/jakarta/security/auth/message/callback/SecretKeyCallback.java
@@ -14,7 +14,7 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-package javax.security.auth.message.callback;
+package jakarta.security.auth.message.callback;
 
 import javax.crypto.SecretKey;
 import javax.security.auth.callback.Callback;
diff --git a/java/javax/security/auth/message/callback/TrustStoreCallback.java b/java/jakarta/security/auth/message/callback/TrustStoreCallback.java
similarity index 96%
rename from java/javax/security/auth/message/callback/TrustStoreCallback.java
rename to java/jakarta/security/auth/message/callback/TrustStoreCallback.java
index 8312e44..ca35e37 100644
--- a/java/javax/security/auth/message/callback/TrustStoreCallback.java
+++ b/java/jakarta/security/auth/message/callback/TrustStoreCallback.java
@@ -14,7 +14,7 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-package javax.security.auth.message.callback;
+package jakarta.security.auth.message.callback;
 
 import java.security.KeyStore;
 
diff --git a/java/javax/security/auth/message/config/AuthConfig.java b/java/jakarta/security/auth/message/config/AuthConfig.java
similarity index 91%
rename from java/javax/security/auth/message/config/AuthConfig.java
rename to java/jakarta/security/auth/message/config/AuthConfig.java
index 701a3eb..bd9feed 100644
--- a/java/javax/security/auth/message/config/AuthConfig.java
+++ b/java/jakarta/security/auth/message/config/AuthConfig.java
@@ -14,9 +14,9 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-package javax.security.auth.message.config;
+package jakarta.security.auth.message.config;
 
-import javax.security.auth.message.MessageInfo;
+import jakarta.security.auth.message.MessageInfo;
 
 public interface AuthConfig {
 
diff --git a/java/javax/security/auth/message/config/AuthConfigFactory.java b/java/jakarta/security/auth/message/config/AuthConfigFactory.java
similarity index 99%
rename from java/javax/security/auth/message/config/AuthConfigFactory.java
rename to java/jakarta/security/auth/message/config/AuthConfigFactory.java
index d98b2f2..d0e1cbd 100644
--- a/java/javax/security/auth/message/config/AuthConfigFactory.java
+++ b/java/jakarta/security/auth/message/config/AuthConfigFactory.java
@@ -14,7 +14,7 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-package javax.security.auth.message.config;
+package jakarta.security.auth.message.config;
 
 import java.security.AccessController;
 import java.security.Permission;
diff --git a/java/javax/security/auth/message/config/AuthConfigProvider.java b/java/jakarta/security/auth/message/config/AuthConfigProvider.java
similarity index 92%
rename from java/javax/security/auth/message/config/AuthConfigProvider.java
rename to java/jakarta/security/auth/message/config/AuthConfigProvider.java
index ddde485..99a47a3 100644
--- a/java/javax/security/auth/message/config/AuthConfigProvider.java
+++ b/java/jakarta/security/auth/message/config/AuthConfigProvider.java
@@ -14,10 +14,11 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-package javax.security.auth.message.config;
+package jakarta.security.auth.message.config;
 
 import javax.security.auth.callback.CallbackHandler;
-import javax.security.auth.message.AuthException;
+
+import jakarta.security.auth.message.AuthException;
 
 public interface AuthConfigProvider {
 
diff --git a/java/javax/security/auth/message/config/ClientAuthConfig.java b/java/jakarta/security/auth/message/config/ClientAuthConfig.java
similarity index 91%
rename from java/javax/security/auth/message/config/ClientAuthConfig.java
rename to java/jakarta/security/auth/message/config/ClientAuthConfig.java
index 2c13584..fbb2d22 100644
--- a/java/javax/security/auth/message/config/ClientAuthConfig.java
+++ b/java/jakarta/security/auth/message/config/ClientAuthConfig.java
@@ -14,12 +14,13 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-package javax.security.auth.message.config;
+package jakarta.security.auth.message.config;
 
 import java.util.Map;
 
 import javax.security.auth.Subject;
-import javax.security.auth.message.AuthException;
+
+import jakarta.security.auth.message.AuthException;
 
 public interface ClientAuthConfig extends AuthConfig {
 
diff --git a/java/javax/security/auth/message/config/ClientAuthContext.java b/java/jakarta/security/auth/message/config/ClientAuthContext.java
similarity index 90%
rename from java/javax/security/auth/message/config/ClientAuthContext.java
rename to java/jakarta/security/auth/message/config/ClientAuthContext.java
index dfc58a6..4321e8a 100644
--- a/java/javax/security/auth/message/config/ClientAuthContext.java
+++ b/java/jakarta/security/auth/message/config/ClientAuthContext.java
@@ -14,9 +14,9 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-package javax.security.auth.message.config;
+package jakarta.security.auth.message.config;
 
-import javax.security.auth.message.ClientAuth;
+import jakarta.security.auth.message.ClientAuth;
 
 public interface ClientAuthContext extends ClientAuth {
 }
diff --git a/java/javax/security/auth/message/config/RegistrationListener.java b/java/jakarta/security/auth/message/config/RegistrationListener.java
similarity index 95%
rename from java/javax/security/auth/message/config/RegistrationListener.java
rename to java/jakarta/security/auth/message/config/RegistrationListener.java
index 74496fb..0d6f76d 100644
--- a/java/javax/security/auth/message/config/RegistrationListener.java
+++ b/java/jakarta/security/auth/message/config/RegistrationListener.java
@@ -14,7 +14,7 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-package javax.security.auth.message.config;
+package jakarta.security.auth.message.config;
 
 public interface RegistrationListener {
 
diff --git a/java/javax/security/auth/message/config/ServerAuthConfig.java b/java/jakarta/security/auth/message/config/ServerAuthConfig.java
similarity index 91%
rename from java/javax/security/auth/message/config/ServerAuthConfig.java
rename to java/jakarta/security/auth/message/config/ServerAuthConfig.java
index de22a51..d8aee8b 100644
--- a/java/javax/security/auth/message/config/ServerAuthConfig.java
+++ b/java/jakarta/security/auth/message/config/ServerAuthConfig.java
@@ -14,12 +14,13 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-package javax.security.auth.message.config;
+package jakarta.security.auth.message.config;
 
 import java.util.Map;
 
 import javax.security.auth.Subject;
-import javax.security.auth.message.AuthException;
+
+import jakarta.security.auth.message.AuthException;
 
 public interface ServerAuthConfig extends AuthConfig {
 
diff --git a/java/javax/security/auth/message/config/ServerAuthContext.java b/java/jakarta/security/auth/message/config/ServerAuthContext.java
similarity index 90%
rename from java/javax/security/auth/message/config/ServerAuthContext.java
rename to java/jakarta/security/auth/message/config/ServerAuthContext.java
index 4c627ab..6f088fe 100644
--- a/java/javax/security/auth/message/config/ServerAuthContext.java
+++ b/java/jakarta/security/auth/message/config/ServerAuthContext.java
@@ -14,9 +14,9 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-package javax.security.auth.message.config;
+package jakarta.security.auth.message.config;
 
-import javax.security.auth.message.ServerAuth;
+import jakarta.security.auth.message.ServerAuth;
 
 public interface ServerAuthContext extends ServerAuth {
 }
diff --git a/java/javax/security/auth/message/module/ClientAuthModule.java b/java/jakarta/security/auth/message/module/ClientAuthModule.java
similarity index 86%
rename from java/javax/security/auth/message/module/ClientAuthModule.java
rename to java/jakarta/security/auth/message/module/ClientAuthModule.java
index 6cb5c4e..f525500 100644
--- a/java/javax/security/auth/message/module/ClientAuthModule.java
+++ b/java/jakarta/security/auth/message/module/ClientAuthModule.java
@@ -14,14 +14,15 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-package javax.security.auth.message.module;
+package jakarta.security.auth.message.module;
 
 import java.util.Map;
 
 import javax.security.auth.callback.CallbackHandler;
-import javax.security.auth.message.AuthException;
-import javax.security.auth.message.ClientAuth;
-import javax.security.auth.message.MessagePolicy;
+
+import jakarta.security.auth.message.AuthException;
+import jakarta.security.auth.message.ClientAuth;
+import jakarta.security.auth.message.MessagePolicy;
 
 public interface ClientAuthModule extends ClientAuth {
 
diff --git a/java/javax/security/auth/message/module/ServerAuthModule.java b/java/jakarta/security/auth/message/module/ServerAuthModule.java
similarity index 86%
rename from java/javax/security/auth/message/module/ServerAuthModule.java
rename to java/jakarta/security/auth/message/module/ServerAuthModule.java
index 4b3a6fb..e8337ae 100644
--- a/java/javax/security/auth/message/module/ServerAuthModule.java
+++ b/java/jakarta/security/auth/message/module/ServerAuthModule.java
@@ -14,14 +14,15 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-package javax.security.auth.message.module;
+package jakarta.security.auth.message.module;
 
 import java.util.Map;
 
 import javax.security.auth.callback.CallbackHandler;
-import javax.security.auth.message.AuthException;
-import javax.security.auth.message.MessagePolicy;
-import javax.security.auth.message.ServerAuth;
+
+import jakarta.security.auth.message.AuthException;
+import jakarta.security.auth.message.MessagePolicy;
+import jakarta.security.auth.message.ServerAuth;
 
 public interface ServerAuthModule extends ServerAuth {
 
diff --git a/java/org/apache/catalina/authenticator/AuthenticatorBase.java b/java/org/apache/catalina/authenticator/AuthenticatorBase.java
index 208155f..b468fb1 100644
--- a/java/org/apache/catalina/authenticator/AuthenticatorBase.java
+++ b/java/org/apache/catalina/authenticator/AuthenticatorBase.java
@@ -26,14 +26,6 @@ import java.util.Set;
 
 import javax.security.auth.Subject;
 import javax.security.auth.callback.CallbackHandler;
-import javax.security.auth.message.AuthException;
-import javax.security.auth.message.AuthStatus;
-import javax.security.auth.message.MessageInfo;
-import javax.security.auth.message.config.AuthConfigFactory;
-import javax.security.auth.message.config.AuthConfigProvider;
-import javax.security.auth.message.config.RegistrationListener;
-import javax.security.auth.message.config.ServerAuthConfig;
-import javax.security.auth.message.config.ServerAuthContext;
 import javax.servlet.DispatcherType;
 import javax.servlet.ServletContext;
 import javax.servlet.ServletException;
@@ -41,6 +33,15 @@ import javax.servlet.http.Cookie;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import jakarta.security.auth.message.AuthException;
+import jakarta.security.auth.message.AuthStatus;
+import jakarta.security.auth.message.MessageInfo;
+import jakarta.security.auth.message.config.AuthConfigFactory;
+import jakarta.security.auth.message.config.AuthConfigProvider;
+import jakarta.security.auth.message.config.RegistrationListener;
+import jakarta.security.auth.message.config.ServerAuthConfig;
+import jakarta.security.auth.message.config.ServerAuthContext;
+
 import org.apache.catalina.Authenticator;
 import org.apache.catalina.Container;
 import org.apache.catalina.Context;
diff --git a/java/org/apache/catalina/authenticator/jaspic/AuthConfigFactoryImpl.java b/java/org/apache/catalina/authenticator/jaspic/AuthConfigFactoryImpl.java
index ee1dd5f..1750350 100644
--- a/java/org/apache/catalina/authenticator/jaspic/AuthConfigFactoryImpl.java
+++ b/java/org/apache/catalina/authenticator/jaspic/AuthConfigFactoryImpl.java
@@ -27,9 +27,9 @@ import java.util.Map.Entry;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.CopyOnWriteArrayList;
 
-import javax.security.auth.message.config.AuthConfigFactory;
-import javax.security.auth.message.config.AuthConfigProvider;
-import javax.security.auth.message.config.RegistrationListener;
+import jakarta.security.auth.message.config.AuthConfigFactory;
+import jakarta.security.auth.message.config.AuthConfigProvider;
+import jakarta.security.auth.message.config.RegistrationListener;
 
 import org.apache.catalina.Globals;
 import org.apache.catalina.authenticator.jaspic.PersistentProviderRegistrations.Provider;
diff --git a/java/org/apache/catalina/authenticator/jaspic/CallbackHandlerImpl.java b/java/org/apache/catalina/authenticator/jaspic/CallbackHandlerImpl.java
index 08f70c7..a43a3a5 100644
--- a/java/org/apache/catalina/authenticator/jaspic/CallbackHandlerImpl.java
+++ b/java/org/apache/catalina/authenticator/jaspic/CallbackHandlerImpl.java
@@ -26,8 +26,9 @@ import javax.security.auth.Subject;
 import javax.security.auth.callback.Callback;
 import javax.security.auth.callback.CallbackHandler;
 import javax.security.auth.callback.UnsupportedCallbackException;
-import javax.security.auth.message.callback.CallerPrincipalCallback;
-import javax.security.auth.message.callback.GroupPrincipalCallback;
+
+import jakarta.security.auth.message.callback.CallerPrincipalCallback;
+import jakarta.security.auth.message.callback.GroupPrincipalCallback;
 
 import org.apache.catalina.realm.GenericPrincipal;
 import org.apache.juli.logging.Log;
diff --git a/java/org/apache/catalina/authenticator/jaspic/MessageInfoImpl.java b/java/org/apache/catalina/authenticator/jaspic/MessageInfoImpl.java
index 4d0ba64..9db7d1f 100644
--- a/java/org/apache/catalina/authenticator/jaspic/MessageInfoImpl.java
+++ b/java/org/apache/catalina/authenticator/jaspic/MessageInfoImpl.java
@@ -19,16 +19,17 @@ package org.apache.catalina.authenticator.jaspic;
 import java.util.HashMap;
 import java.util.Map;
 
-import javax.security.auth.message.MessageInfo;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import jakarta.security.auth.message.MessageInfo;
+
 import org.apache.tomcat.util.res.StringManager;
 
 public class MessageInfoImpl implements MessageInfo {
     protected static final StringManager sm = StringManager.getManager(MessageInfoImpl.class);
 
-    public static final String IS_MANDATORY = "javax.security.auth.message.MessagePolicy.isMandatory";
+    public static final String IS_MANDATORY = "jakarta.security.auth.message.MessagePolicy.isMandatory";
 
     private final Map<String, Object> map = new HashMap<>();
     private HttpServletRequest request;
diff --git a/java/org/apache/catalina/authenticator/jaspic/SimpleAuthConfigProvider.java b/java/org/apache/catalina/authenticator/jaspic/SimpleAuthConfigProvider.java
index 476e978..5e39d6f 100644
--- a/java/org/apache/catalina/authenticator/jaspic/SimpleAuthConfigProvider.java
+++ b/java/org/apache/catalina/authenticator/jaspic/SimpleAuthConfigProvider.java
@@ -19,15 +19,16 @@ package org.apache.catalina.authenticator.jaspic;
 import java.util.Map;
 
 import javax.security.auth.callback.CallbackHandler;
-import javax.security.auth.message.AuthException;
-import javax.security.auth.message.config.AuthConfigFactory;
-import javax.security.auth.message.config.AuthConfigProvider;
-import javax.security.auth.message.config.ClientAuthConfig;
-import javax.security.auth.message.config.ServerAuthConfig;
+
+import jakarta.security.auth.message.AuthException;
+import jakarta.security.auth.message.config.AuthConfigFactory;
+import jakarta.security.auth.message.config.AuthConfigProvider;
+import jakarta.security.auth.message.config.ClientAuthConfig;
+import jakarta.security.auth.message.config.ServerAuthConfig;
 
 /**
  * Basic implementation primarily intended for use when using third-party
- * {@link javax.security.auth.message.module.ServerAuthModule} implementations
+ * {@link jakarta.security.auth.message.module.ServerAuthModule} implementations
  * that only provide the module.
  */
 public class SimpleAuthConfigProvider implements AuthConfigProvider {
diff --git a/java/org/apache/catalina/authenticator/jaspic/SimpleServerAuthConfig.java b/java/org/apache/catalina/authenticator/jaspic/SimpleServerAuthConfig.java
index 15d29e1..2f1db11 100644
--- a/java/org/apache/catalina/authenticator/jaspic/SimpleServerAuthConfig.java
+++ b/java/org/apache/catalina/authenticator/jaspic/SimpleServerAuthConfig.java
@@ -23,11 +23,12 @@ import java.util.Map;
 
 import javax.security.auth.Subject;
 import javax.security.auth.callback.CallbackHandler;
-import javax.security.auth.message.AuthException;
-import javax.security.auth.message.MessageInfo;
-import javax.security.auth.message.config.ServerAuthConfig;
-import javax.security.auth.message.config.ServerAuthContext;
-import javax.security.auth.message.module.ServerAuthModule;
+
+import jakarta.security.auth.message.AuthException;
+import jakarta.security.auth.message.MessageInfo;
+import jakarta.security.auth.message.config.ServerAuthConfig;
+import jakarta.security.auth.message.config.ServerAuthContext;
+import jakarta.security.auth.message.module.ServerAuthModule;
 
 import org.apache.tomcat.util.res.StringManager;
 
diff --git a/java/org/apache/catalina/authenticator/jaspic/SimpleServerAuthContext.java b/java/org/apache/catalina/authenticator/jaspic/SimpleServerAuthContext.java
index d36cb0f..8d0a9ac 100644
--- a/java/org/apache/catalina/authenticator/jaspic/SimpleServerAuthContext.java
+++ b/java/org/apache/catalina/authenticator/jaspic/SimpleServerAuthContext.java
@@ -19,11 +19,12 @@ package org.apache.catalina.authenticator.jaspic;
 import java.util.List;
 
 import javax.security.auth.Subject;
-import javax.security.auth.message.AuthException;
-import javax.security.auth.message.AuthStatus;
-import javax.security.auth.message.MessageInfo;
-import javax.security.auth.message.config.ServerAuthContext;
-import javax.security.auth.message.module.ServerAuthModule;
+
+import jakarta.security.auth.message.AuthException;
+import jakarta.security.auth.message.AuthStatus;
+import jakarta.security.auth.message.MessageInfo;
+import jakarta.security.auth.message.config.ServerAuthContext;
+import jakarta.security.auth.message.module.ServerAuthModule;
 
 /**
  * Basic implementation primarily intended for use when using third-party
diff --git a/res/META-INF/jaspic-api.jar.manifest b/res/META-INF/jaspic-api.jar.manifest
index a071675..a453d16 100644
--- a/res/META-INF/jaspic-api.jar.manifest
+++ b/res/META-INF/jaspic-api.jar.manifest
@@ -2,10 +2,10 @@ Manifest-version: 1.0
 X-Compile-Source-JDK: @source.jdk@
 X-Compile-Target-JDK: @target.jdk@
 
-Name: javax/security/auth/message
-Specification-Title: Java Authentication SPI for Containers
+Name: jakarta/security/auth/message
+Specification-Title: Jakarta Authentication SPI for Containers
 Specification-Version: 1.1
 Specification-Vendor: Sun Microsystems, Inc.
-Implementation-Title: javax.security.auth.message
+Implementation-Title: jakarta.security.auth.message
 Implementation-Version: 1.1.@jaspic.revision@
 Implementation-Vendor: Apache Software Foundation
\ No newline at end of file
diff --git a/res/bnd/jaspic-api.jar.tmp.bnd b/res/bnd/jaspic-api.jar.tmp.bnd
index 1ef6cda..32e6d93 100644
--- a/res/bnd/jaspic-api.jar.tmp.bnd
+++ b/res/bnd/jaspic-api.jar.tmp.bnd
@@ -16,7 +16,7 @@ Bundle-Name: tomcat-jaspic-api
 Bundle-SymbolicName: org.apache.tomcat-jaspic-api
 Bundle-Version: @VERSION@
 Export-Package: \
-    javax.security.auth.message,\
-    javax.security.auth.message.callback,\
-    javax.security.auth.message.config,\
-    javax.security.auth.message.module
\ No newline at end of file
+    jakarta.security.auth.message,\
+    jakarta.security.auth.message.callback,\
+    jakarta.security.auth.message.config,\
+    jakarta.security.auth.message.module
\ No newline at end of file
diff --git a/res/bnd/tomcat-embed-core.jar.tmp.bnd b/res/bnd/tomcat-embed-core.jar.tmp.bnd
index 09a4d8f..d9dea60 100644
--- a/res/bnd/tomcat-embed-core.jar.tmp.bnd
+++ b/res/bnd/tomcat-embed-core.jar.tmp.bnd
@@ -17,10 +17,10 @@ Bundle-Name: tomcat-embed-core
 Bundle-SymbolicName: org.apache.tomcat-embed-core
 Bundle-Version: @VERSION@
 Export-Package: \
-    javax.security.auth.message,\
-    javax.security.auth.message.callback,\
-    javax.security.auth.message.config,\
-    javax.security.auth.message.module,\
+    jakarta.security.auth.message,\
+    jakarta.security.auth.message.callback,\
+    jakarta.security.auth.message.config,\
+    jakarta.security.auth.message.module,\
     javax.servlet,\
     javax.servlet.annotation,\
     javax.servlet.descriptor,\
diff --git a/res/checkstyle/jakarta-import-control.xml b/res/checkstyle/jakarta-import-control.xml
index fb82d16..3371221 100644
--- a/res/checkstyle/jakarta-import-control.xml
+++ b/res/checkstyle/jakarta-import-control.xml
@@ -36,4 +36,25 @@
   <subpackage name="persistence">
     <allow pkg="jakarta.persistence"/>
   </subpackage>
+  <subpackage name="security">
+    <subpackage name="auth">
+      <subpackage name="message">
+        <allow pkg="javax.crypto" />
+        <allow class="javax.security.auth.Subject"/>
+        <allow pkg="javax.security.auth.callback"/>
+        <allow pkg="javax.security.auth.login"/>
+        <allow pkg="javax.security.auth.x500"/>
+        <disallow pkg="jakarta.security.auth.message.callback" local-only="true"/>
+        <disallow pkg="jakarta.security.auth.message.config" local-only="true"/>
+        <disallow pkg="jakarta.security.auth.message.module" local-only="true"/>
+        <subpackage name="config">
+        <allow class="javax.security.auth.AuthPermission"/>
+          <allow pkg="jakarta.security.auth.message"/>
+        </subpackage>
+        <subpackage name="module">
+          <allow pkg="jakarta.security.auth.message"/>
+        </subpackage>
+      </subpackage>
+    </subpackage>
+  </subpackage>
 </import-control>
\ No newline at end of file
diff --git a/res/checkstyle/javax-import-control.xml b/res/checkstyle/javax-import-control.xml
index 84c64b7..f9c4586 100644
--- a/res/checkstyle/javax-import-control.xml
+++ b/res/checkstyle/javax-import-control.xml
@@ -21,27 +21,6 @@
 
 <import-control pkg="javax">
   <allow pkg="java"/>
-  <subpackage name="security">
-    <subpackage name="auth">
-      <subpackage name="message">
-        <allow pkg="javax.crypto" />
-        <allow class="javax.security.auth.Subject"/>
-        <allow pkg="javax.security.auth.callback"/>
-        <allow pkg="javax.security.auth.login"/>
-        <allow pkg="javax.security.auth.x500"/>
-        <disallow pkg="javax.security.auth.message.callback" local-only="true"/>
-        <disallow pkg="javax.security.auth.message.config" local-only="true"/>
-        <disallow pkg="javax.security.auth.message.module" local-only="true"/>
-        <subpackage name="config">
-        <allow class="javax.security.auth.AuthPermission"/>
-          <allow pkg="javax.security.auth.message"/>
-        </subpackage>
-        <subpackage name="module">
-          <allow pkg="javax.security.auth.message"/>
-        </subpackage>
-      </subpackage>
-    </subpackage>
-  </subpackage>
   <subpackage name="servlet">
     <allow pkg="javax.servlet"/>
     <disallow pkg="javax.servlet.jsp" local-only="true"/>
diff --git a/res/checkstyle/org-import-control.xml b/res/checkstyle/org-import-control.xml
index 55c6cc0..6c9e06a 100644
--- a/res/checkstyle/org-import-control.xml
+++ b/res/checkstyle/org-import-control.xml
@@ -30,6 +30,8 @@
   <allow pkg="javax.net"/>
   <allow pkg="javax.rmi"/>
   <allow pkg="javax.security"/>
+  <disallow pkg="javax.security.auth.message"/>
+  <allow pkg="jakarta.security.auth.message"/>
   <allow pkg="javax.sql"/>
   <allow pkg="javax.xml"/>
   <allow pkg="org.w3c.dom"/>
diff --git a/res/maven/tomcat-jaspic-api.pom b/res/maven/tomcat-jaspic-api.pom
index e7f4322..fa23a3a 100644
--- a/res/maven/tomcat-jaspic-api.pom
+++ b/res/maven/tomcat-jaspic-api.pom
@@ -23,7 +23,7 @@
   <groupId>org.apache.tomcat</groupId>
   <artifactId>tomcat-jaspic-api</artifactId>
   <version>@MAVEN.DEPLOY.VERSION@</version>
-  <description>javax.security.auth.message package</description>
+  <description>jakarta.security.auth.message package</description>
   <url>https://tomcat.apache.org/</url>
   <licenses>
     <license>
diff --git a/test/org/apache/catalina/authenticator/jaspic/TestAuthConfigFactoryImpl.java b/test/org/apache/catalina/authenticator/jaspic/TestAuthConfigFactoryImpl.java
index 38fff7b..c230b9e 100644
--- a/test/org/apache/catalina/authenticator/jaspic/TestAuthConfigFactoryImpl.java
+++ b/test/org/apache/catalina/authenticator/jaspic/TestAuthConfigFactoryImpl.java
@@ -23,9 +23,9 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
-import javax.security.auth.message.config.AuthConfigFactory;
-import javax.security.auth.message.config.AuthConfigProvider;
-import javax.security.auth.message.config.RegistrationListener;
+import jakarta.security.auth.message.config.AuthConfigFactory;
+import jakarta.security.auth.message.config.AuthConfigProvider;
+import jakarta.security.auth.message.config.RegistrationListener;
 
 import org.junit.After;
 import org.junit.Assert;
diff --git a/test/org/apache/catalina/authenticator/jaspic/TestSimpleServerAuthConfig.java b/test/org/apache/catalina/authenticator/jaspic/TestSimpleServerAuthConfig.java
index b663c87..d2bf13d 100644
--- a/test/org/apache/catalina/authenticator/jaspic/TestSimpleServerAuthConfig.java
+++ b/test/org/apache/catalina/authenticator/jaspic/TestSimpleServerAuthConfig.java
@@ -19,10 +19,10 @@ package org.apache.catalina.authenticator.jaspic;
 import java.util.HashMap;
 import java.util.Map;
 
-import javax.security.auth.message.AuthException;
-import javax.security.auth.message.MessageInfo;
-import javax.security.auth.message.config.ServerAuthConfig;
-import javax.security.auth.message.config.ServerAuthContext;
+import jakarta.security.auth.message.AuthException;
+import jakarta.security.auth.message.MessageInfo;
+import jakarta.security.auth.message.config.ServerAuthConfig;
+import jakarta.security.auth.message.config.ServerAuthContext;
 
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/test/org/apache/catalina/authenticator/jaspic/TesterMessageInfo.java b/test/org/apache/catalina/authenticator/jaspic/TesterMessageInfo.java
index ba8592e..acc02c6 100644
--- a/test/org/apache/catalina/authenticator/jaspic/TesterMessageInfo.java
+++ b/test/org/apache/catalina/authenticator/jaspic/TesterMessageInfo.java
@@ -19,7 +19,7 @@ package org.apache.catalina.authenticator.jaspic;
 import java.util.HashMap;
 import java.util.Map;
 
-import javax.security.auth.message.MessageInfo;
+import jakarta.security.auth.message.MessageInfo;
 
 public class TesterMessageInfo implements MessageInfo {
 
diff --git a/test/org/apache/catalina/authenticator/jaspic/TesterServerAuthModuleA.java b/test/org/apache/catalina/authenticator/jaspic/TesterServerAuthModuleA.java
index e1bf7fe..457076d 100644
--- a/test/org/apache/catalina/authenticator/jaspic/TesterServerAuthModuleA.java
+++ b/test/org/apache/catalina/authenticator/jaspic/TesterServerAuthModuleA.java
@@ -20,11 +20,12 @@ import java.util.Map;
 
 import javax.security.auth.Subject;
 import javax.security.auth.callback.CallbackHandler;
-import javax.security.auth.message.AuthException;
-import javax.security.auth.message.AuthStatus;
-import javax.security.auth.message.MessageInfo;
-import javax.security.auth.message.MessagePolicy;
-import javax.security.auth.message.module.ServerAuthModule;
+
+import jakarta.security.auth.message.AuthException;
+import jakarta.security.auth.message.AuthStatus;
+import jakarta.security.auth.message.MessageInfo;
+import jakarta.security.auth.message.MessagePolicy;
+import jakarta.security.auth.message.module.ServerAuthModule;
 
 public class TesterServerAuthModuleA implements ServerAuthModule {
 
diff --git a/test/org/apache/catalina/loader/TestWebappClassLoader.java b/test/org/apache/catalina/loader/TestWebappClassLoader.java
index cda4df0..e658b02 100644
--- a/test/org/apache/catalina/loader/TestWebappClassLoader.java
+++ b/test/org/apache/catalina/loader/TestWebappClassLoader.java
@@ -103,7 +103,7 @@ public class TestWebappClassLoader extends TomcatBaseTest {
             "jakarta.el",
             "javax.servlet",
             "javax.websocket",
-            "javax.security.auth.message"
+            "jakarta.security.auth.message"
         };
 
         try (WebappClassLoader loader = new WebappClassLoader()) {


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


[tomcat] 05/18: Disable tests that depend on JSTL since it is not Jakarta EE compatible

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tomcat.git

commit d96186c80860b542e064645c4dbaa37d3cfcdf8e
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Thu Nov 28 09:57:24 2019 +0000

    Disable tests that depend on JSTL since it is not Jakarta EE compatible
---
 test/jakarta/el/TestCompositeELResolver.java             | 2 ++
 test/org/apache/el/TestELInJsp.java                      | 3 +++
 test/org/apache/jasper/compiler/TestParser.java          | 3 +++
 test/org/apache/jasper/tagplugins/jstl/core/TestSet.java | 3 +++
 4 files changed, 11 insertions(+)

diff --git a/test/jakarta/el/TestCompositeELResolver.java b/test/jakarta/el/TestCompositeELResolver.java
index d2bbc37..7be20eb 100644
--- a/test/jakarta/el/TestCompositeELResolver.java
+++ b/test/jakarta/el/TestCompositeELResolver.java
@@ -19,6 +19,7 @@ package jakarta.el;
 import javax.servlet.http.HttpServletResponse;
 
 import org.junit.Assert;
+import org.junit.Ignore;
 import org.junit.Test;
 
 import org.apache.catalina.startup.TomcatBaseTest;
@@ -26,6 +27,7 @@ import org.apache.tomcat.util.buf.ByteChunk;
 
 public class TestCompositeELResolver extends TomcatBaseTest {
 
+    @Ignore // Jakarta EE / JSTL
     @Test
     public void testBug50408() throws Exception {
         getTomcatInstanceTestWebapp(true, true);
diff --git a/test/org/apache/el/TestELInJsp.java b/test/org/apache/el/TestELInJsp.java
index 66c0f3d..9a5e6fa 100644
--- a/test/org/apache/el/TestELInJsp.java
+++ b/test/org/apache/el/TestELInJsp.java
@@ -23,6 +23,7 @@ import java.util.Collections;
 import javax.servlet.DispatcherType;
 
 import org.junit.Assert;
+import org.junit.Ignore;
 import org.junit.Test;
 
 import org.apache.catalina.Wrapper;
@@ -394,6 +395,7 @@ public class TestELInJsp extends TomcatBaseTest {
         assertEcho(result, "05-Hello JUnit from Tomcat");
     }
 
+    @Ignore // Jakarta EE / JSTL
     @Test
     public void testBug56029() throws Exception {
         getTomcatInstanceTestWebapp(true, true);
@@ -407,6 +409,7 @@ public class TestELInJsp extends TomcatBaseTest {
     }
 
 
+    @Ignore // Jakarta EE / JSTL
     @Test
     public void testBug56147() throws Exception {
         getTomcatInstanceTestWebapp(true, true);
diff --git a/test/org/apache/jasper/compiler/TestParser.java b/test/org/apache/jasper/compiler/TestParser.java
index c9035be..010841d 100644
--- a/test/org/apache/jasper/compiler/TestParser.java
+++ b/test/org/apache/jasper/compiler/TestParser.java
@@ -17,6 +17,7 @@
 package org.apache.jasper.compiler;
 
 import org.junit.Assert;
+import org.junit.Ignore;
 import org.junit.Test;
 
 import org.apache.catalina.startup.TomcatBaseTest;
@@ -233,6 +234,7 @@ public class TestParser extends TomcatBaseTest {
              || result.contains("&#034;5&apos;5&#034;"));
     }
 
+    @Ignore // Jakarta EE / JSTL
     @Test
     public void testBug56265() throws Exception {
         getTomcatInstanceTestWebapp(true, true);
@@ -252,6 +254,7 @@ public class TestParser extends TomcatBaseTest {
                 result.contains("[4: [data-test]: [window.alert('Hello 'World <&>'!')]]"));
     }
 
+    @Ignore // Jakarta EE / JSTL
     @Test
     public void testBug56334And56561() throws Exception {
         getTomcatInstanceTestWebapp(true, true);
diff --git a/test/org/apache/jasper/tagplugins/jstl/core/TestSet.java b/test/org/apache/jasper/tagplugins/jstl/core/TestSet.java
index 1a66978..7f6278f 100644
--- a/test/org/apache/jasper/tagplugins/jstl/core/TestSet.java
+++ b/test/org/apache/jasper/tagplugins/jstl/core/TestSet.java
@@ -19,12 +19,14 @@ package org.apache.jasper.tagplugins.jstl.core;
 import javax.servlet.http.HttpServletResponse;
 
 import org.junit.Assert;
+import org.junit.Ignore;
 import org.junit.Test;
 
 import org.apache.tomcat.util.buf.ByteChunk;
 
 public class TestSet extends AbstractTestTag {
 
+    @Ignore // Jakarta EE / JSTL
     @Test
     public void testBug54011() throws Exception {
         ByteChunk res = new ByteChunk();
@@ -39,6 +41,7 @@ public class TestSet extends AbstractTestTag {
     }
 
 
+    @Ignore // Jakarta EE / JSTL
     @Test
     public void testBug54338() throws Exception {
         ByteChunk res = new ByteChunk();


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


[tomcat] 16/18: Update JSP version in code to 3.0

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tomcat.git

commit 7d4b08ccc3c0972646dfe9d692e036ed7ec0e331
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Mon Jan 13 11:39:11 2020 +0000

    Update JSP version in code to 3.0
---
 java/org/apache/jasper/compiler/Generator.java              | 2 +-
 java/org/apache/jasper/resources/LocalStrings.properties    | 2 +-
 java/org/apache/jasper/resources/LocalStrings_es.properties | 2 +-
 java/org/apache/jasper/resources/LocalStrings_fr.properties | 2 +-
 java/org/apache/jasper/resources/LocalStrings_ja.properties | 2 +-
 java/org/apache/jasper/resources/LocalStrings_ko.properties | 2 +-
 java/org/apache/jasper/runtime/JspFactoryImpl.java          | 2 +-
 7 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/java/org/apache/jasper/compiler/Generator.java b/java/org/apache/jasper/compiler/Generator.java
index b0b03f2..50f8767 100644
--- a/java/org/apache/jasper/compiler/Generator.java
+++ b/java/org/apache/jasper/compiler/Generator.java
@@ -831,7 +831,7 @@ class Generator {
         out.println(");");
 
         if (ctxt.getOptions().isXpoweredBy()) {
-            out.printil("response.addHeader(\"X-Powered-By\", \"JSP/2.3\");");
+            out.printil("response.addHeader(\"X-Powered-By\", \"JSP/3.0\");");
         }
 
         out.printil("pageContext = _jspxFactory.getPageContext(this, request, response,");
diff --git a/java/org/apache/jasper/resources/LocalStrings.properties b/java/org/apache/jasper/resources/LocalStrings.properties
index e51ba3d..e7a4e4d 100644
--- a/java/org/apache/jasper/resources/LocalStrings.properties
+++ b/java/org/apache/jasper/resources/LocalStrings.properties
@@ -15,7 +15,7 @@
 
 jasper.error.emptybodycontent.nonempty=According to TLD, tag [{0}] must be empty, but is not
 
-jsp.engine.info=Jasper JSP 2.3 Engine
+jsp.engine.info=Jasper JSP 3.0 Engine
 jsp.error.URLMustStartWithSlash=Path [{0}] must start with a slash character
 jsp.error.action.isnottagfile=[{0}] action can be used in tag files only
 jsp.error.action.istagfile=[{0}] action cannot be used in a tag file
diff --git a/java/org/apache/jasper/resources/LocalStrings_es.properties b/java/org/apache/jasper/resources/LocalStrings_es.properties
index 5f2f900..b71e975 100644
--- a/java/org/apache/jasper/resources/LocalStrings_es.properties
+++ b/java/org/apache/jasper/resources/LocalStrings_es.properties
@@ -15,7 +15,7 @@
 
 jasper.error.emptybodycontent.nonempty=Según el TLD, el tag [{0}] debe de estar vacío, pero no lo está
 
-jsp.engine.info=Motor Jasper JSP 2.3
+jsp.engine.info=Motor Jasper JSP 3.0
 jsp.error.action.isnottagfile=La acción [{0}] sólo se puede usar en archivos tag
 jsp.error.action.istagfile=La acción [{0}] no se puede usar en un archivo tag
 jsp.error.attempt_to_clear_flushed_buffer=Error: Se ha intentado limpiar un buffer que ya había sido escrito
diff --git a/java/org/apache/jasper/resources/LocalStrings_fr.properties b/java/org/apache/jasper/resources/LocalStrings_fr.properties
index 6373ae8..e3e0812 100644
--- a/java/org/apache/jasper/resources/LocalStrings_fr.properties
+++ b/java/org/apache/jasper/resources/LocalStrings_fr.properties
@@ -15,7 +15,7 @@
 
 jasper.error.emptybodycontent.nonempty=D''après la TLD, le tag [{0}] doit être vide, mais ne l''est pas
 
-jsp.engine.info=Moteur Jasper JSP 2.3
+jsp.engine.info=Moteur Jasper JSP 3.0
 jsp.error.URLMustStartWithSlash=Le chemin [{0}] doit commencer par un caractère slash
 jsp.error.action.isnottagfile=L''action [{0}] ne peut être utilisée que dans un fichier tag
 jsp.error.action.istagfile=L''action [{0}] ne peut être utilisée dans un fichier tag
diff --git a/java/org/apache/jasper/resources/LocalStrings_ja.properties b/java/org/apache/jasper/resources/LocalStrings_ja.properties
index 58aab4f..f47a2de 100644
--- a/java/org/apache/jasper/resources/LocalStrings_ja.properties
+++ b/java/org/apache/jasper/resources/LocalStrings_ja.properties
@@ -15,7 +15,7 @@
 
 jasper.error.emptybodycontent.nonempty=TLDに従ってタグ [{0}] は空でなければいけませんが、そうではありません
 
-jsp.engine.info=Jasper JSP 2.3エンジン
+jsp.engine.info=Jasper JSP 3.0エンジン
 jsp.error.URLMustStartWithSlash=パス[{0}]はスラッシュ文字で始まる必要があります。
 jsp.error.action.isnottagfile=[{0}] アクションはタグファイル中でのみ使用できません
 jsp.error.action.istagfile=[{0}] アクションはタグファイル中で使用できません
diff --git a/java/org/apache/jasper/resources/LocalStrings_ko.properties b/java/org/apache/jasper/resources/LocalStrings_ko.properties
index ed63764..5cf8e16 100644
--- a/java/org/apache/jasper/resources/LocalStrings_ko.properties
+++ b/java/org/apache/jasper/resources/LocalStrings_ko.properties
@@ -15,7 +15,7 @@
 
 jasper.error.emptybodycontent.nonempty=TLD 파일에 따르면, [{0}] 태그는 반드시 비어 있어야 하는데, 그렇지 않습니다,
 
-jsp.engine.info=Jasper JSP 2.3 엔진
+jsp.engine.info=Jasper JSP 3.0 엔진
 jsp.error.URLMustStartWithSlash=경로 [{0}]은(는) 반드시 슬래시 문자로 시작해야 합니다.
 jsp.error.action.isnottagfile=[{0}] 액션은 오직 태그 파일들 내에서만 사용될 수 있습니다.
 jsp.error.action.istagfile=[{0}] 액션은 태그 파일 내에서 사용될 수 없습니다.
diff --git a/java/org/apache/jasper/runtime/JspFactoryImpl.java b/java/org/apache/jasper/runtime/JspFactoryImpl.java
index 1e4a005..4bbaafb 100644
--- a/java/org/apache/jasper/runtime/JspFactoryImpl.java
+++ b/java/org/apache/jasper/runtime/JspFactoryImpl.java
@@ -38,7 +38,7 @@ import org.apache.jasper.Constants;
  */
 public class JspFactoryImpl extends JspFactory {
 
-    private static final String SPEC_VERSION = "2.3";
+    private static final String SPEC_VERSION = "3.0";
     private static final boolean USE_POOL =
         Boolean.parseBoolean(System.getProperty("org.apache.jasper.runtime.JspFactoryImpl.USE_POOL", "true"));
     private static final int POOL_SIZE =


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


[tomcat] 04/18: Rename javax.el.* to jakarta.el.*

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tomcat.git

commit fddd4fd9c0ca2e2441634c9df42cc80875e25234
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Wed Nov 27 23:45:15 2019 +0000

    Rename javax.el.* to jakarta.el.*
---
 build.xml                                          |  5 ++-
 java/{javax => jakarta}/el/ArrayELResolver.java    |  2 +-
 java/{javax => jakarta}/el/BeanELResolver.java     |  2 +-
 java/{javax => jakarta}/el/BeanNameELResolver.java |  2 +-
 java/{javax => jakarta}/el/BeanNameResolver.java   |  2 +-
 .../{javax => jakarta}/el/CompositeELResolver.java |  2 +-
 java/{javax => jakarta}/el/ELClass.java            |  2 +-
 java/{javax => jakarta}/el/ELContext.java          |  2 +-
 java/{javax => jakarta}/el/ELContextEvent.java     |  2 +-
 java/{javax => jakarta}/el/ELContextListener.java  |  2 +-
 java/{javax => jakarta}/el/ELException.java        |  2 +-
 java/{javax => jakarta}/el/ELManager.java          |  6 +--
 java/{javax => jakarta}/el/ELProcessor.java        |  2 +-
 java/{javax => jakarta}/el/ELResolver.java         |  2 +-
 java/{javax => jakarta}/el/EvaluationListener.java |  2 +-
 java/{javax => jakarta}/el/Expression.java         |  2 +-
 java/{javax => jakarta}/el/ExpressionFactory.java  | 12 +++---
 java/{javax => jakarta}/el/FunctionMapper.java     |  2 +-
 java/{javax => jakarta}/el/ImportHandler.java      |  6 +--
 java/{javax => jakarta}/el/Jre9Compat.java         |  2 +-
 java/{javax => jakarta}/el/JreCompat.java          |  2 +-
 java/{javax => jakarta}/el/LambdaExpression.java   |  2 +-
 java/{javax => jakarta}/el/ListELResolver.java     |  2 +-
 java/{javax => jakarta}/el/LocalStrings.properties |  0
 .../el/LocalStrings_cs.properties                  |  0
 .../el/LocalStrings_de.properties                  |  0
 .../el/LocalStrings_es.properties                  |  0
 .../el/LocalStrings_fr.properties                  |  0
 .../el/LocalStrings_ja.properties                  |  0
 .../el/LocalStrings_ko.properties                  |  0
 .../el/LocalStrings_pt_BR.properties               |  0
 .../el/LocalStrings_zh_CN.properties               |  0
 java/{javax => jakarta}/el/MapELResolver.java      |  2 +-
 java/{javax => jakarta}/el/MethodExpression.java   |  2 +-
 java/{javax => jakarta}/el/MethodInfo.java         |  2 +-
 .../el/MethodNotFoundException.java                |  2 +-
 .../el/PropertyNotFoundException.java              |  2 +-
 .../el/PropertyNotWritableException.java           |  2 +-
 .../el/ResourceBundleELResolver.java               |  2 +-
 java/{javax => jakarta}/el/StandardELContext.java  |  2 +-
 .../el/StaticFieldELResolver.java                  |  2 +-
 java/{javax => jakarta}/el/TypeConverter.java      |  2 +-
 java/{javax => jakarta}/el/Util.java               |  4 +-
 java/{javax => jakarta}/el/ValueExpression.java    |  2 +-
 java/{javax => jakarta}/el/ValueReference.java     |  2 +-
 java/{javax => jakarta}/el/VariableMapper.java     |  2 +-
 java/javax/servlet/jsp/JspApplicationContext.java  |  6 +--
 java/javax/servlet/jsp/JspContext.java             |  4 +-
 java/javax/servlet/jsp/el/ELException.java         |  2 +-
 java/javax/servlet/jsp/el/ELParseException.java    |  2 +-
 java/javax/servlet/jsp/el/Expression.java          |  2 +-
 java/javax/servlet/jsp/el/ExpressionEvaluator.java |  2 +-
 java/javax/servlet/jsp/el/FunctionMapper.java      |  2 +-
 .../servlet/jsp/el/ImplicitObjectELResolver.java   |  7 +--
 .../servlet/jsp/el/ScopedAttributeELResolver.java  |  9 ++--
 java/javax/servlet/jsp/el/VariableResolver.java    |  2 +-
 .../catalina/loader/WebappClassLoaderBase.java     | 31 +++++++++++++-
 java/org/apache/el/ExpressionFactoryImpl.java      | 12 +++---
 java/org/apache/el/MethodExpressionImpl.java       | 38 ++++++++--------
 java/org/apache/el/MethodExpressionLiteral.java    |  8 ++--
 java/org/apache/el/ValueExpressionImpl.java        | 50 +++++++++++-----------
 java/org/apache/el/ValueExpressionLiteral.java     |  6 +--
 java/org/apache/el/lang/ELSupport.java             |  4 +-
 java/org/apache/el/lang/EvaluationContext.java     | 12 +++---
 java/org/apache/el/lang/ExpressionBuilder.java     | 12 +++---
 java/org/apache/el/lang/FunctionMapperFactory.java |  4 +-
 java/org/apache/el/lang/FunctionMapperImpl.java    |  4 +-
 java/org/apache/el/lang/VariableMapperFactory.java |  4 +-
 java/org/apache/el/lang/VariableMapperImpl.java    |  4 +-
 java/org/apache/el/parser/ArithmeticNode.java      |  2 +-
 java/org/apache/el/parser/AstAnd.java              |  2 +-
 java/org/apache/el/parser/AstAssign.java           |  2 +-
 java/org/apache/el/parser/AstBracketSuffix.java    |  2 +-
 java/org/apache/el/parser/AstChoice.java           |  2 +-
 .../apache/el/parser/AstCompositeExpression.java   |  2 +-
 java/org/apache/el/parser/AstConcatenation.java    |  2 +-
 .../apache/el/parser/AstDeferredExpression.java    |  2 +-
 java/org/apache/el/parser/AstDiv.java              |  2 +-
 java/org/apache/el/parser/AstDotSuffix.java        |  2 +-
 .../org/apache/el/parser/AstDynamicExpression.java |  2 +-
 java/org/apache/el/parser/AstEmpty.java            |  2 +-
 java/org/apache/el/parser/AstEqual.java            |  2 +-
 java/org/apache/el/parser/AstFalse.java            |  2 +-
 java/org/apache/el/parser/AstFloatingPoint.java    |  2 +-
 java/org/apache/el/parser/AstFunction.java         | 12 +++---
 java/org/apache/el/parser/AstGreaterThan.java      |  2 +-
 java/org/apache/el/parser/AstGreaterThanEqual.java |  2 +-
 java/org/apache/el/parser/AstIdentifier.java       | 18 ++++----
 java/org/apache/el/parser/AstInteger.java          |  2 +-
 java/org/apache/el/parser/AstLambdaExpression.java |  4 +-
 java/org/apache/el/parser/AstLessThan.java         |  2 +-
 java/org/apache/el/parser/AstLessThanEqual.java    |  2 +-
 java/org/apache/el/parser/AstListData.java         |  2 +-
 .../org/apache/el/parser/AstLiteralExpression.java |  2 +-
 java/org/apache/el/parser/AstMapData.java          |  2 +-
 java/org/apache/el/parser/AstMinus.java            |  2 +-
 java/org/apache/el/parser/AstMod.java              |  2 +-
 java/org/apache/el/parser/AstMult.java             |  2 +-
 java/org/apache/el/parser/AstNegative.java         |  2 +-
 java/org/apache/el/parser/AstNot.java              |  2 +-
 java/org/apache/el/parser/AstNotEqual.java         |  2 +-
 java/org/apache/el/parser/AstNull.java             |  2 +-
 java/org/apache/el/parser/AstOr.java               |  2 +-
 java/org/apache/el/parser/AstPlus.java             |  2 +-
 java/org/apache/el/parser/AstSemicolon.java        |  2 +-
 java/org/apache/el/parser/AstSetData.java          |  2 +-
 java/org/apache/el/parser/AstString.java           |  2 +-
 java/org/apache/el/parser/AstTrue.java             |  2 +-
 java/org/apache/el/parser/AstValue.java            | 12 +++---
 java/org/apache/el/parser/BooleanNode.java         |  2 +-
 java/org/apache/el/parser/ELParser.java            |  3 +-
 java/org/apache/el/parser/ELParser.jjt             |  4 +-
 java/org/apache/el/parser/Node.java                |  6 +--
 java/org/apache/el/parser/SimpleNode.java          |  8 ++--
 java/org/apache/el/stream/Optional.java            |  4 +-
 java/org/apache/el/stream/Stream.java              |  4 +-
 .../org/apache/el/stream/StreamELResolverImpl.java |  4 +-
 java/org/apache/el/util/Jre9Compat.java            |  2 +-
 java/org/apache/el/util/JreCompat.java             |  2 +-
 java/org/apache/el/util/ReflectionUtil.java        | 16 +++----
 java/org/apache/jasper/compiler/Generator.java     | 15 ++++---
 java/org/apache/jasper/compiler/Node.java          |  7 +--
 java/org/apache/jasper/compiler/PageInfo.java      |  3 +-
 .../apache/jasper/compiler/TagFileProcessor.java   |  5 ++-
 java/org/apache/jasper/compiler/Validator.java     |  7 +--
 java/org/apache/jasper/el/ELContextImpl.java       | 28 ++++++------
 java/org/apache/jasper/el/ELContextWrapper.java    |  8 ++--
 java/org/apache/jasper/el/ELResolverImpl.java      | 11 ++---
 .../apache/jasper/el/ExpressionEvaluatorImpl.java  |  7 +--
 java/org/apache/jasper/el/ExpressionImpl.java      |  7 +--
 java/org/apache/jasper/el/FunctionMapperImpl.java  |  2 +-
 java/org/apache/jasper/el/JasperELResolver.java    | 23 +++++-----
 java/org/apache/jasper/el/JspELException.java      |  2 +-
 java/org/apache/jasper/el/JspMethodExpression.java | 12 +++---
 .../jasper/el/JspMethodNotFoundException.java      |  2 +-
 .../jasper/el/JspPropertyNotFoundException.java    |  2 +-
 .../jasper/el/JspPropertyNotWritableException.java |  2 +-
 java/org/apache/jasper/el/JspValueExpression.java  | 10 ++---
 .../org/apache/jasper/el/VariableResolverImpl.java |  3 +-
 .../jasper/runtime/JspApplicationContextImpl.java  | 13 +++---
 .../apache/jasper/runtime/JspContextWrapper.java   | 13 +++---
 .../org/apache/jasper/runtime/PageContextImpl.java | 11 ++---
 .../jasper/runtime/ProtectedFunctionMapper.java    |  2 +-
 .../tomcat/util/descriptor/tld/TldRuleSet.java     |  4 +-
 modules/cxf/pom.xml                                |  2 +-
 res/META-INF/el-api.jar.manifest                   |  4 +-
 res/bnd/el-api.jar.tmp.bnd                         |  2 +-
 res/bnd/tomcat-embed-el.jar.tmp.bnd                |  2 +-
 res/checkstyle/jakarta-import-control.xml          |  4 +-
 res/checkstyle/javax-import-control.xml            |  5 +--
 res/checkstyle/org-import-control.xml              |  4 +-
 res/findbugs/filter-false-positives.xml            |  4 +-
 res/tomcat-maven/tomcat-resource.json              |  2 +-
 .../{javax => jakarta}/el/TestArrayELResolver.java |  2 +-
 test/{javax => jakarta}/el/TestBeanELResolver.java |  2 +-
 .../el/TestBeanELResolverVarargsInvocation.java    |  2 +-
 .../el/TestBeanNameELResolver.java                 |  2 +-
 .../el/TestCompositeELResolver.java                |  2 +-
 test/{javax => jakarta}/el/TestELContext.java      |  4 +-
 test/{javax => jakarta}/el/TestELProcessor.java    | 24 +++++------
 test/{javax => jakarta}/el/TestELResolver.java     |  2 +-
 .../el/TestEvaluationListener.java                 |  4 +-
 test/{javax => jakarta}/el/TestImportHandler.java  |  2 +-
 .../el/TestImportHandlerStandardPackages.java      |  2 +-
 test/{javax => jakarta}/el/TestListELResolver.java |  2 +-
 test/{javax => jakarta}/el/TestMapELResolver.java  |  2 +-
 .../el/TestResourceBundleELResolver.java           |  2 +-
 .../el/TestStaticFieldELResolver.java              |  2 +-
 test/{javax => jakarta}/el/TestUtil.java           |  2 +-
 test/{javax => jakarta}/el/TesterBean.java         |  2 +-
 .../el/TesterBeanNameResolver.java                 |  2 +-
 test/{javax => jakarta}/el/TesterClass.java        |  2 +-
 test/{javax => jakarta}/el/TesterELContext.java    |  2 +-
 .../{javax => jakarta}/el/TesterELResolverOne.java |  2 +-
 .../{javax => jakarta}/el/TesterELResolverTwo.java |  2 +-
 .../el/TesterEvaluationListener.java               |  2 +-
 test/{javax => jakarta}/el/TesterFunctions.java    |  2 +-
 .../el/TesterImportHandlerPerformance.java         |  2 +-
 test/javax/servlet/jsp/TesterPageContext.java      |  3 +-
 .../TestScopedAttributeELResolverPerformance.java  |  9 ++--
 .../catalina/loader/TestWebappClassLoader.java     |  2 +-
 test/org/apache/el/TestELEvaluation.java           |  4 +-
 test/org/apache/el/TestMethodExpressionImpl.java   | 10 ++---
 test/org/apache/el/TestValueExpressionImpl.java    |  8 ++--
 test/org/apache/el/TesterFunctions.java            |  2 +-
 test/org/apache/el/lang/TestELArithmetic.java      |  2 +-
 test/org/apache/el/lang/TestELSupport.java         |  4 +-
 .../apache/el/lang/TesterVariableMapperImpl.java   | 12 +++---
 test/org/apache/el/parser/TestAstAnd.java          |  2 +-
 test/org/apache/el/parser/TestAstAssign.java       | 10 ++---
 test/org/apache/el/parser/TestAstChoice.java       |  2 +-
 .../org/apache/el/parser/TestAstConcatenation.java | 10 ++---
 test/org/apache/el/parser/TestAstFunction.java     |  2 +-
 test/org/apache/el/parser/TestAstIdentifier.java   |  2 +-
 .../apache/el/parser/TestAstLambdaExpression.java  |  6 +--
 test/org/apache/el/parser/TestAstListData.java     | 10 ++---
 test/org/apache/el/parser/TestAstMapData.java      | 10 ++---
 test/org/apache/el/parser/TestAstNot.java          |  2 +-
 test/org/apache/el/parser/TestAstOr.java           |  2 +-
 test/org/apache/el/parser/TestAstSemicolon.java    | 10 ++---
 test/org/apache/el/parser/TestAstSetData.java      | 10 ++---
 test/org/apache/el/parser/TestELParser.java        |  8 ++--
 .../apache/el/stream/TestCollectionOperations.java |  4 +-
 test/org/apache/el/util/TestReflectionUtil.java    |  2 +-
 .../jasper/compiler/TestAttributeParser.java       |  2 +-
 test/org/apache/jasper/compiler/TestELParser.java  | 10 ++---
 .../org/apache/jasper/el/TestJasperELResolver.java |  3 +-
 .../tomcat/util/descriptor/tld/TestTldParser.java  |  4 +-
 test/util/a/Foo.java                               |  2 +-
 test/util/b/Foo.java                               |  2 +-
 test/webapp/bug5nnnn/bug58178c.jsp                 | 10 ++---
 webapps/docs/changelog.xml                         |  2 +-
 webapps/docs/config/systemprops.xml                |  2 +-
 213 files changed, 516 insertions(+), 470 deletions(-)

diff --git a/build.xml b/build.xml
index 133fb74..821ba8c 100644
--- a/build.xml
+++ b/build.xml
@@ -344,7 +344,7 @@
   </patternset>
 
   <patternset id="files.el-api">
-    <include name="javax/el/**" />
+    <include name="jakarta/el/**" />
   </patternset>
 
   <patternset id="files.websocket-api">
@@ -1493,6 +1493,7 @@
            includeantruntime="true">
       <classpath refid="tomcat.test.classpath" />
       <include name="org/apache/**" />
+      <include name="jakarta/**" />
       <include name="javax/**" />
       <include name="util/**" />
       <!-- Exclude these by default as Gump can't run them because the -->
@@ -1949,7 +1950,7 @@ Apache Tomcat ${version} native binaries for Win64 AMD64/EMT64 platform.
         <path location="${ant.core.lib}"/>
       </classpath>
     </javadoc>
-    <javadoc packagenames="javax.el.*"
+    <javadoc packagenames="jakarta.el.*"
       sourcepath="${tomcat.dist}/src/java"
       destdir="${tomcat.dist}/webapps/docs/elapi"
       version="true"
diff --git a/java/javax/el/ArrayELResolver.java b/java/jakarta/el/ArrayELResolver.java
similarity index 99%
rename from java/javax/el/ArrayELResolver.java
rename to java/jakarta/el/ArrayELResolver.java
index d500e85..49839b5 100644
--- a/java/javax/el/ArrayELResolver.java
+++ b/java/jakarta/el/ArrayELResolver.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package javax.el;
+package jakarta.el;
 
 import java.beans.FeatureDescriptor;
 import java.lang.reflect.Array;
diff --git a/java/javax/el/BeanELResolver.java b/java/jakarta/el/BeanELResolver.java
similarity index 99%
rename from java/javax/el/BeanELResolver.java
rename to java/jakarta/el/BeanELResolver.java
index 5e93032..21a1af0 100644
--- a/java/javax/el/BeanELResolver.java
+++ b/java/jakarta/el/BeanELResolver.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package javax.el;
+package jakarta.el;
 
 import java.beans.BeanInfo;
 import java.beans.FeatureDescriptor;
diff --git a/java/javax/el/BeanNameELResolver.java b/java/jakarta/el/BeanNameELResolver.java
similarity index 99%
rename from java/javax/el/BeanNameELResolver.java
rename to java/jakarta/el/BeanNameELResolver.java
index 0e7b48d..4dac042 100644
--- a/java/javax/el/BeanNameELResolver.java
+++ b/java/jakarta/el/BeanNameELResolver.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.el;
+package jakarta.el;
 
 import java.beans.FeatureDescriptor;
 import java.util.Iterator;
diff --git a/java/javax/el/BeanNameResolver.java b/java/jakarta/el/BeanNameResolver.java
similarity index 99%
rename from java/javax/el/BeanNameResolver.java
rename to java/jakarta/el/BeanNameResolver.java
index abe0356..fbf60f3 100644
--- a/java/javax/el/BeanNameResolver.java
+++ b/java/jakarta/el/BeanNameResolver.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.el;
+package jakarta.el;
 
 /**
  * Base implementation that provides a minimal default implementation that is
diff --git a/java/javax/el/CompositeELResolver.java b/java/jakarta/el/CompositeELResolver.java
similarity index 99%
rename from java/javax/el/CompositeELResolver.java
rename to java/jakarta/el/CompositeELResolver.java
index f28f528..afcdbcd 100644
--- a/java/javax/el/CompositeELResolver.java
+++ b/java/jakarta/el/CompositeELResolver.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.el;
+package jakarta.el;
 
 import java.beans.FeatureDescriptor;
 import java.util.Iterator;
diff --git a/java/javax/el/ELClass.java b/java/jakarta/el/ELClass.java
similarity index 98%
rename from java/javax/el/ELClass.java
rename to java/jakarta/el/ELClass.java
index 8e2338d..0d00302 100644
--- a/java/javax/el/ELClass.java
+++ b/java/jakarta/el/ELClass.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.el;
+package jakarta.el;
 
 /**
  * @since EL 3.0
diff --git a/java/javax/el/ELContext.java b/java/jakarta/el/ELContext.java
similarity index 99%
rename from java/javax/el/ELContext.java
rename to java/jakarta/el/ELContext.java
index 46f0564..aae67a4 100644
--- a/java/javax/el/ELContext.java
+++ b/java/jakarta/el/ELContext.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.el;
+package jakarta.el;
 
 import java.util.ArrayList;
 import java.util.Deque;
diff --git a/java/javax/el/ELContextEvent.java b/java/jakarta/el/ELContextEvent.java
similarity index 98%
rename from java/javax/el/ELContextEvent.java
rename to java/jakarta/el/ELContextEvent.java
index 2ec1961..5eb3fc6 100644
--- a/java/javax/el/ELContextEvent.java
+++ b/java/jakarta/el/ELContextEvent.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package javax.el;
+package jakarta.el;
 
 import java.util.EventObject;
 
diff --git a/java/javax/el/ELContextListener.java b/java/jakarta/el/ELContextListener.java
similarity index 98%
rename from java/javax/el/ELContextListener.java
rename to java/jakarta/el/ELContextListener.java
index f8701f8..95cbca7 100644
--- a/java/javax/el/ELContextListener.java
+++ b/java/jakarta/el/ELContextListener.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package javax.el;
+package jakarta.el;
 
 /**
  * @author Jacob Hookom [jacob/hookom.net]
diff --git a/java/javax/el/ELException.java b/java/jakarta/el/ELException.java
similarity index 98%
rename from java/javax/el/ELException.java
rename to java/jakarta/el/ELException.java
index 0c26acd..18fb612 100644
--- a/java/javax/el/ELException.java
+++ b/java/jakarta/el/ELException.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package javax.el;
+package jakarta.el;
 
 /**
  * Represents any of the exception conditions that can arise during expression
diff --git a/java/javax/el/ELManager.java b/java/jakarta/el/ELManager.java
similarity index 95%
rename from java/javax/el/ELManager.java
rename to java/jakarta/el/ELManager.java
index c3d60ea..3623688 100644
--- a/java/javax/el/ELManager.java
+++ b/java/jakarta/el/ELManager.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.el;
+package jakarta.el;
 
 import java.lang.reflect.Method;
 import java.util.Map;
@@ -62,11 +62,11 @@ public class ELManager {
     }
 
     public void importStatic(String staticMemberName)
-            throws javax.el.ELException {
+            throws jakarta.el.ELException {
         getELContext().getImportHandler().importStatic(staticMemberName);
     }
 
-    public void importClass(String className) throws javax.el.ELException {
+    public void importClass(String className) throws jakarta.el.ELException {
         getELContext().getImportHandler().importClass(className);
     }
 
diff --git a/java/javax/el/ELProcessor.java b/java/jakarta/el/ELProcessor.java
similarity index 99%
rename from java/javax/el/ELProcessor.java
rename to java/jakarta/el/ELProcessor.java
index 3827168..6499f49 100644
--- a/java/javax/el/ELProcessor.java
+++ b/java/jakarta/el/ELProcessor.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.el;
+package jakarta.el;
 
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
diff --git a/java/javax/el/ELResolver.java b/java/jakarta/el/ELResolver.java
similarity index 99%
rename from java/javax/el/ELResolver.java
rename to java/jakarta/el/ELResolver.java
index 6a10cd1..5c3a928 100644
--- a/java/javax/el/ELResolver.java
+++ b/java/jakarta/el/ELResolver.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.el;
+package jakarta.el;
 
 import java.util.Iterator;
 
diff --git a/java/javax/el/EvaluationListener.java b/java/jakarta/el/EvaluationListener.java
similarity index 98%
rename from java/javax/el/EvaluationListener.java
rename to java/jakarta/el/EvaluationListener.java
index 785ebda..a1bb3d0 100644
--- a/java/javax/el/EvaluationListener.java
+++ b/java/jakarta/el/EvaluationListener.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.el;
+package jakarta.el;
 
 /**
  * @since EL 3.0
diff --git a/java/javax/el/Expression.java b/java/jakarta/el/Expression.java
similarity index 98%
rename from java/javax/el/Expression.java
rename to java/jakarta/el/Expression.java
index 56286b0..55e05b9 100644
--- a/java/javax/el/Expression.java
+++ b/java/jakarta/el/Expression.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package javax.el;
+package jakarta.el;
 
 import java.io.Serializable;
 
diff --git a/java/javax/el/ExpressionFactory.java b/java/jakarta/el/ExpressionFactory.java
similarity index 97%
rename from java/javax/el/ExpressionFactory.java
rename to java/jakarta/el/ExpressionFactory.java
index 7bd20d6..35253b9 100644
--- a/java/javax/el/ExpressionFactory.java
+++ b/java/jakarta/el/ExpressionFactory.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package javax.el;
+package jakarta.el;
 
 import java.io.BufferedReader;
 import java.io.File;
@@ -48,9 +48,9 @@ public abstract class ExpressionFactory {
         (System.getSecurityManager() != null);
 
     private static final String SERVICE_RESOURCE_NAME =
-        "META-INF/services/javax.el.ExpressionFactory";
+        "META-INF/services/jakarta.el.ExpressionFactory";
 
-    private static final String PROPERTY_NAME = "javax.el.ExpressionFactory";
+    private static final String PROPERTY_NAME = "jakarta.el.ExpressionFactory";
 
     private static final String PROPERTY_FILE;
 
@@ -79,9 +79,9 @@ public abstract class ExpressionFactory {
      * Create a new {@link ExpressionFactory}. The class to use is determined by
      * the following search order:
      * <ol>
-     * <li>services API (META-INF/services/javax.el.ExpressionFactory)</li>
-     * <li>$JRE_HOME/lib/el.properties - key javax.el.ExpressionFactory</li>
-     * <li>javax.el.ExpressionFactory</li>
+     * <li>services API (META-INF/services/jakarta.el.ExpressionFactory)</li>
+     * <li>$JRE_HOME/lib/el.properties - key jakarta.el.ExpressionFactory</li>
+     * <li>jakarta.el.ExpressionFactory</li>
      * <li>Platform default implementation -
      *     org.apache.el.ExpressionFactoryImpl</li>
      * </ol>
diff --git a/java/javax/el/FunctionMapper.java b/java/jakarta/el/FunctionMapper.java
similarity index 98%
rename from java/javax/el/FunctionMapper.java
rename to java/jakarta/el/FunctionMapper.java
index a36df34..036f12b 100644
--- a/java/javax/el/FunctionMapper.java
+++ b/java/jakarta/el/FunctionMapper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.el;
+package jakarta.el;
 
 import java.lang.reflect.Method;
 
diff --git a/java/javax/el/ImportHandler.java b/java/jakarta/el/ImportHandler.java
similarity index 99%
rename from java/javax/el/ImportHandler.java
rename to java/jakarta/el/ImportHandler.java
index cfabd9d..cc18f6f 100644
--- a/java/javax/el/ImportHandler.java
+++ b/java/jakarta/el/ImportHandler.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.el;
+package jakarta.el;
 
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
@@ -279,7 +279,7 @@ public class ImportHandler {
     }
 
 
-    public void importStatic(String name) throws javax.el.ELException {
+    public void importStatic(String name) throws jakarta.el.ELException {
         int lastPeriod = name.lastIndexOf('.');
 
         if (lastPeriod < 0) {
@@ -341,7 +341,7 @@ public class ImportHandler {
     }
 
 
-    public void importClass(String name) throws javax.el.ELException {
+    public void importClass(String name) throws jakarta.el.ELException {
         int lastPeriodIndex = name.lastIndexOf('.');
 
         if (lastPeriodIndex < 0) {
diff --git a/java/javax/el/Jre9Compat.java b/java/jakarta/el/Jre9Compat.java
similarity index 99%
rename from java/javax/el/Jre9Compat.java
rename to java/jakarta/el/Jre9Compat.java
index b95f93a..d6ff069 100644
--- a/java/javax/el/Jre9Compat.java
+++ b/java/jakarta/el/Jre9Compat.java
@@ -14,7 +14,7 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-package javax.el;
+package jakarta.el;
 
 import java.lang.reflect.AccessibleObject;
 import java.lang.reflect.Method;
diff --git a/java/javax/el/JreCompat.java b/java/jakarta/el/JreCompat.java
similarity index 99%
rename from java/javax/el/JreCompat.java
rename to java/jakarta/el/JreCompat.java
index 1b21af9..9cd5816 100644
--- a/java/javax/el/JreCompat.java
+++ b/java/jakarta/el/JreCompat.java
@@ -14,7 +14,7 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-package javax.el;
+package jakarta.el;
 
 import java.lang.reflect.AccessibleObject;
 
diff --git a/java/javax/el/LambdaExpression.java b/java/jakarta/el/LambdaExpression.java
similarity index 99%
rename from java/javax/el/LambdaExpression.java
rename to java/jakarta/el/LambdaExpression.java
index 7e9ca06..8863ab9 100644
--- a/java/javax/el/LambdaExpression.java
+++ b/java/jakarta/el/LambdaExpression.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.el;
+package jakarta.el;
 
 import java.util.HashMap;
 import java.util.List;
diff --git a/java/javax/el/ListELResolver.java b/java/jakarta/el/ListELResolver.java
similarity index 99%
rename from java/javax/el/ListELResolver.java
rename to java/jakarta/el/ListELResolver.java
index cd88620..03c03d4 100644
--- a/java/javax/el/ListELResolver.java
+++ b/java/jakarta/el/ListELResolver.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package javax.el;
+package jakarta.el;
 
 import java.beans.FeatureDescriptor;
 import java.util.ArrayList;
diff --git a/java/javax/el/LocalStrings.properties b/java/jakarta/el/LocalStrings.properties
similarity index 100%
rename from java/javax/el/LocalStrings.properties
rename to java/jakarta/el/LocalStrings.properties
diff --git a/java/javax/el/LocalStrings_cs.properties b/java/jakarta/el/LocalStrings_cs.properties
similarity index 100%
rename from java/javax/el/LocalStrings_cs.properties
rename to java/jakarta/el/LocalStrings_cs.properties
diff --git a/java/javax/el/LocalStrings_de.properties b/java/jakarta/el/LocalStrings_de.properties
similarity index 100%
rename from java/javax/el/LocalStrings_de.properties
rename to java/jakarta/el/LocalStrings_de.properties
diff --git a/java/javax/el/LocalStrings_es.properties b/java/jakarta/el/LocalStrings_es.properties
similarity index 100%
rename from java/javax/el/LocalStrings_es.properties
rename to java/jakarta/el/LocalStrings_es.properties
diff --git a/java/javax/el/LocalStrings_fr.properties b/java/jakarta/el/LocalStrings_fr.properties
similarity index 100%
rename from java/javax/el/LocalStrings_fr.properties
rename to java/jakarta/el/LocalStrings_fr.properties
diff --git a/java/javax/el/LocalStrings_ja.properties b/java/jakarta/el/LocalStrings_ja.properties
similarity index 100%
rename from java/javax/el/LocalStrings_ja.properties
rename to java/jakarta/el/LocalStrings_ja.properties
diff --git a/java/javax/el/LocalStrings_ko.properties b/java/jakarta/el/LocalStrings_ko.properties
similarity index 100%
rename from java/javax/el/LocalStrings_ko.properties
rename to java/jakarta/el/LocalStrings_ko.properties
diff --git a/java/javax/el/LocalStrings_pt_BR.properties b/java/jakarta/el/LocalStrings_pt_BR.properties
similarity index 100%
rename from java/javax/el/LocalStrings_pt_BR.properties
rename to java/jakarta/el/LocalStrings_pt_BR.properties
diff --git a/java/javax/el/LocalStrings_zh_CN.properties b/java/jakarta/el/LocalStrings_zh_CN.properties
similarity index 100%
rename from java/javax/el/LocalStrings_zh_CN.properties
rename to java/jakarta/el/LocalStrings_zh_CN.properties
diff --git a/java/javax/el/MapELResolver.java b/java/jakarta/el/MapELResolver.java
similarity index 99%
rename from java/javax/el/MapELResolver.java
rename to java/jakarta/el/MapELResolver.java
index abc0e06..32fede8 100644
--- a/java/javax/el/MapELResolver.java
+++ b/java/jakarta/el/MapELResolver.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package javax.el;
+package jakarta.el;
 
 import java.beans.FeatureDescriptor;
 import java.util.ArrayList;
diff --git a/java/javax/el/MethodExpression.java b/java/jakarta/el/MethodExpression.java
similarity index 99%
rename from java/javax/el/MethodExpression.java
rename to java/jakarta/el/MethodExpression.java
index a0a7e69..5298495 100644
--- a/java/javax/el/MethodExpression.java
+++ b/java/jakarta/el/MethodExpression.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.el;
+package jakarta.el;
 
 public abstract class MethodExpression extends Expression {
 
diff --git a/java/javax/el/MethodInfo.java b/java/jakarta/el/MethodInfo.java
similarity index 98%
rename from java/javax/el/MethodInfo.java
rename to java/jakarta/el/MethodInfo.java
index 2ee7bec..129a3e0 100644
--- a/java/javax/el/MethodInfo.java
+++ b/java/jakarta/el/MethodInfo.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.el;
+package jakarta.el;
 
 public class MethodInfo {
 
diff --git a/java/javax/el/MethodNotFoundException.java b/java/jakarta/el/MethodNotFoundException.java
similarity index 98%
rename from java/javax/el/MethodNotFoundException.java
rename to java/jakarta/el/MethodNotFoundException.java
index 8159331..74446f8 100644
--- a/java/javax/el/MethodNotFoundException.java
+++ b/java/jakarta/el/MethodNotFoundException.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.el;
+package jakarta.el;
 
 public class MethodNotFoundException extends ELException {
 
diff --git a/java/javax/el/PropertyNotFoundException.java b/java/jakarta/el/PropertyNotFoundException.java
similarity index 98%
rename from java/javax/el/PropertyNotFoundException.java
rename to java/jakarta/el/PropertyNotFoundException.java
index 9ed8188..5c4b484 100644
--- a/java/javax/el/PropertyNotFoundException.java
+++ b/java/jakarta/el/PropertyNotFoundException.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.el;
+package jakarta.el;
 
 public class PropertyNotFoundException extends ELException {
 
diff --git a/java/javax/el/PropertyNotWritableException.java b/java/jakarta/el/PropertyNotWritableException.java
similarity index 98%
rename from java/javax/el/PropertyNotWritableException.java
rename to java/jakarta/el/PropertyNotWritableException.java
index 30b7857..6339984 100644
--- a/java/javax/el/PropertyNotWritableException.java
+++ b/java/jakarta/el/PropertyNotWritableException.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.el;
+package jakarta.el;
 
 public class PropertyNotWritableException extends ELException {
 
diff --git a/java/javax/el/ResourceBundleELResolver.java b/java/jakarta/el/ResourceBundleELResolver.java
similarity index 99%
rename from java/javax/el/ResourceBundleELResolver.java
rename to java/jakarta/el/ResourceBundleELResolver.java
index f9b9723..aec32d3 100644
--- a/java/javax/el/ResourceBundleELResolver.java
+++ b/java/jakarta/el/ResourceBundleELResolver.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package javax.el;
+package jakarta.el;
 
 import java.beans.FeatureDescriptor;
 import java.util.ArrayList;
diff --git a/java/javax/el/StandardELContext.java b/java/jakarta/el/StandardELContext.java
similarity index 99%
rename from java/javax/el/StandardELContext.java
rename to java/jakarta/el/StandardELContext.java
index d313483..ae43a73 100644
--- a/java/javax/el/StandardELContext.java
+++ b/java/jakarta/el/StandardELContext.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.el;
+package jakarta.el;
 
 import java.lang.reflect.Method;
 import java.util.HashMap;
diff --git a/java/javax/el/StaticFieldELResolver.java b/java/jakarta/el/StaticFieldELResolver.java
similarity index 99%
rename from java/javax/el/StaticFieldELResolver.java
rename to java/jakarta/el/StaticFieldELResolver.java
index d6a9027..c31501d 100644
--- a/java/javax/el/StaticFieldELResolver.java
+++ b/java/jakarta/el/StaticFieldELResolver.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.el;
+package jakarta.el;
 
 import java.beans.FeatureDescriptor;
 import java.lang.reflect.Constructor;
diff --git a/java/javax/el/TypeConverter.java b/java/jakarta/el/TypeConverter.java
similarity index 98%
rename from java/javax/el/TypeConverter.java
rename to java/jakarta/el/TypeConverter.java
index 6c4d8dc..8acfddc 100644
--- a/java/javax/el/TypeConverter.java
+++ b/java/jakarta/el/TypeConverter.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.el;
+package jakarta.el;
 
 import java.beans.FeatureDescriptor;
 import java.util.Iterator;
diff --git a/java/javax/el/Util.java b/java/jakarta/el/Util.java
similarity index 99%
rename from java/javax/el/Util.java
rename to java/jakarta/el/Util.java
index 2e06837..b265c50 100644
--- a/java/javax/el/Util.java
+++ b/java/jakarta/el/Util.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.el;
+package jakarta.el;
 
 import java.lang.ref.WeakReference;
 import java.lang.reflect.Array;
@@ -70,7 +70,7 @@ class Util {
             }
         }
         ResourceBundle bundle = ResourceBundle.getBundle(
-                "javax.el.LocalStrings", locale);
+                "jakarta.el.LocalStrings", locale);
         try {
             String template = bundle.getString(name);
             if (props != null) {
diff --git a/java/javax/el/ValueExpression.java b/java/jakarta/el/ValueExpression.java
similarity index 99%
rename from java/javax/el/ValueExpression.java
rename to java/jakarta/el/ValueExpression.java
index ffdf8cc..528f7c2 100644
--- a/java/javax/el/ValueExpression.java
+++ b/java/jakarta/el/ValueExpression.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.el;
+package jakarta.el;
 
 public abstract class ValueExpression extends Expression {
 
diff --git a/java/javax/el/ValueReference.java b/java/jakarta/el/ValueReference.java
similarity index 98%
rename from java/javax/el/ValueReference.java
rename to java/jakarta/el/ValueReference.java
index 0c7f3eb..1333ca2 100644
--- a/java/javax/el/ValueReference.java
+++ b/java/jakarta/el/ValueReference.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package javax.el;
+package jakarta.el;
 
 import java.io.Serializable;
 
diff --git a/java/javax/el/VariableMapper.java b/java/jakarta/el/VariableMapper.java
similarity index 98%
rename from java/javax/el/VariableMapper.java
rename to java/jakarta/el/VariableMapper.java
index 4577e38..3f9f5f1 100644
--- a/java/javax/el/VariableMapper.java
+++ b/java/jakarta/el/VariableMapper.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package javax.el;
+package jakarta.el;
 
 /**
  *
diff --git a/java/javax/servlet/jsp/JspApplicationContext.java b/java/javax/servlet/jsp/JspApplicationContext.java
index ff0154c..a998f32 100644
--- a/java/javax/servlet/jsp/JspApplicationContext.java
+++ b/java/javax/servlet/jsp/JspApplicationContext.java
@@ -16,9 +16,9 @@
  */
 package javax.servlet.jsp;
 
-import javax.el.ELContextListener;
-import javax.el.ELResolver;
-import javax.el.ExpressionFactory;
+import jakarta.el.ELContextListener;
+import jakarta.el.ELResolver;
+import jakarta.el.ExpressionFactory;
 
 /**
  * <p>
diff --git a/java/javax/servlet/jsp/JspContext.java b/java/javax/servlet/jsp/JspContext.java
index 0b8221b..e9d4964 100644
--- a/java/javax/servlet/jsp/JspContext.java
+++ b/java/javax/servlet/jsp/JspContext.java
@@ -18,7 +18,7 @@ package javax.servlet.jsp;
 
 import java.util.Enumeration;
 
-import javax.el.ELContext;
+import jakarta.el.ELContext;
 
 /**
  * <p>
@@ -238,7 +238,7 @@ public abstract class JspContext {
      * @return A valid instance of a VariableResolver.
      * @since 2.0
      * @deprecated As of JSP 2.1,
-     *             replaced by javax.el.ELContext.getELResolver()
+     *             replaced by jakarta.el.ELContext.getELResolver()
      *             which can be obtained by
      *             jspContext.getELContext().getELResolver()
      */
diff --git a/java/javax/servlet/jsp/el/ELException.java b/java/javax/servlet/jsp/el/ELException.java
index 132cc7d..2facb9b 100644
--- a/java/javax/servlet/jsp/el/ELException.java
+++ b/java/javax/servlet/jsp/el/ELException.java
@@ -22,7 +22,7 @@ package javax.servlet.jsp.el;
  * evaluation of the evaluator.
  *
  * @since 2.0
- * @deprecated As of JSP 2.1, replaced by javax.el.ELException
+ * @deprecated As of JSP 2.1, replaced by jakarta.el.ELException
  */
 @SuppressWarnings("dep-ann") // TCK signature test fails with annotation
 public class ELException extends Exception {
diff --git a/java/javax/servlet/jsp/el/ELParseException.java b/java/javax/servlet/jsp/el/ELParseException.java
index fdb0d1e..6eeaf34 100644
--- a/java/javax/servlet/jsp/el/ELParseException.java
+++ b/java/javax/servlet/jsp/el/ELParseException.java
@@ -22,7 +22,7 @@ package javax.servlet.jsp.el;
  * Represents a parsing error encountered while parsing an EL expression.
  *
  * @since 2.0
- * @deprecated As of JSP 2.1, replaced by javax.el.ELException
+ * @deprecated As of JSP 2.1, replaced by jakarta.el.ELException
  */
 @SuppressWarnings("dep-ann") // TCK signature test fails with annotation
 public class ELParseException extends ELException {
diff --git a/java/javax/servlet/jsp/el/Expression.java b/java/javax/servlet/jsp/el/Expression.java
index 51635bc..203f408 100644
--- a/java/javax/servlet/jsp/el/Expression.java
+++ b/java/javax/servlet/jsp/el/Expression.java
@@ -30,7 +30,7 @@ package javax.servlet.jsp.el;
  * where ELParseException exceptions are raised. </p>
  *
  * @since 2.0
- * @deprecated As of JSP 2.1, replaced by javax.el.ValueExpression
+ * @deprecated As of JSP 2.1, replaced by jakarta.el.ValueExpression
  */
 @SuppressWarnings("dep-ann") // TCK signature test fails with annotation
 public abstract class Expression {
diff --git a/java/javax/servlet/jsp/el/ExpressionEvaluator.java b/java/javax/servlet/jsp/el/ExpressionEvaluator.java
index 82b8190..32d81bf 100644
--- a/java/javax/servlet/jsp/el/ExpressionEvaluator.java
+++ b/java/javax/servlet/jsp/el/ExpressionEvaluator.java
@@ -52,7 +52,7 @@ package javax.servlet.jsp.el;
  * </ul>
  *
  * @since 2.0
- * @deprecated As of JSP 2.1, replaced by javax.el.ExpressionFactory
+ * @deprecated As of JSP 2.1, replaced by jakarta.el.ExpressionFactory
  */
 @SuppressWarnings("dep-ann")
 // TCK signature test fails with annotation
diff --git a/java/javax/servlet/jsp/el/FunctionMapper.java b/java/javax/servlet/jsp/el/FunctionMapper.java
index 900820f..a7a983f 100644
--- a/java/javax/servlet/jsp/el/FunctionMapper.java
+++ b/java/javax/servlet/jsp/el/FunctionMapper.java
@@ -24,7 +24,7 @@ package javax.servlet.jsp.el;
  * information to resolve the map. </p>
  *
  * @since 2.0
- * @deprecated As of JSP 2.1, replaced by javax.el.FunctionMapper
+ * @deprecated As of JSP 2.1, replaced by jakarta.el.FunctionMapper
  */
 @SuppressWarnings("dep-ann") // TCK signature test fails with annotation
 public interface FunctionMapper {
diff --git a/java/javax/servlet/jsp/el/ImplicitObjectELResolver.java b/java/javax/servlet/jsp/el/ImplicitObjectELResolver.java
index 43ecded..6806a59 100644
--- a/java/javax/servlet/jsp/el/ImplicitObjectELResolver.java
+++ b/java/javax/servlet/jsp/el/ImplicitObjectELResolver.java
@@ -30,15 +30,16 @@ import java.util.Objects;
 import java.util.Set;
 import java.util.Vector;
 
-import javax.el.ELContext;
-import javax.el.ELResolver;
-import javax.el.PropertyNotWritableException;
 import javax.servlet.http.Cookie;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpSession;
 import javax.servlet.jsp.JspContext;
 import javax.servlet.jsp.PageContext;
 
+import jakarta.el.ELContext;
+import jakarta.el.ELResolver;
+import jakarta.el.PropertyNotWritableException;
+
 /**
  *
  * @since 2.1
diff --git a/java/javax/servlet/jsp/el/ScopedAttributeELResolver.java b/java/javax/servlet/jsp/el/ScopedAttributeELResolver.java
index 5316475..4674937 100644
--- a/java/javax/servlet/jsp/el/ScopedAttributeELResolver.java
+++ b/java/javax/servlet/jsp/el/ScopedAttributeELResolver.java
@@ -23,13 +23,14 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Objects;
 
-import javax.el.ELClass;
-import javax.el.ELContext;
-import javax.el.ELResolver;
-import javax.el.ImportHandler;
 import javax.servlet.jsp.JspContext;
 import javax.servlet.jsp.PageContext;
 
+import jakarta.el.ELClass;
+import jakarta.el.ELContext;
+import jakarta.el.ELResolver;
+import jakarta.el.ImportHandler;
+
 /**
 *
 * @since 2.1
diff --git a/java/javax/servlet/jsp/el/VariableResolver.java b/java/javax/servlet/jsp/el/VariableResolver.java
index 011e27f..b659d3c 100644
--- a/java/javax/servlet/jsp/el/VariableResolver.java
+++ b/java/javax/servlet/jsp/el/VariableResolver.java
@@ -30,7 +30,7 @@ package javax.servlet.jsp.el;
  * </p>
  *
  * @since 2.0
- * @deprecated As of JSP 2.1, replaced by javax.el.ELResolver
+ * @deprecated As of JSP 2.1, replaced by jakarta.el.ELResolver
  */
 @SuppressWarnings("dep-ann")
 // TCK signature test fails with annotation
diff --git a/java/org/apache/catalina/loader/WebappClassLoaderBase.java b/java/org/apache/catalina/loader/WebappClassLoaderBase.java
index a62d5d8..4815ad9 100644
--- a/java/org/apache/catalina/loader/WebappClassLoaderBase.java
+++ b/java/org/apache/catalina/loader/WebappClassLoaderBase.java
@@ -2534,7 +2534,36 @@ public abstract class WebappClassLoaderBase extends URLClassLoader
             return false;
 
         char ch;
-        if (name.startsWith("javax")) {
+        if (name.startsWith("jakarta")) {
+            /* 7 == length("jakarta") */
+            if (name.length() == 7) {
+                return false;
+            }
+            ch = name.charAt(7);
+            if (isClassName && ch == '.') {
+                /* 8 == length("jakarta.") */
+                if (name.startsWith("servlet.jsp.jstl.", 8)) {
+                    return false;
+                }
+                if (name.startsWith("el.", 8) ||
+                    name.startsWith("servlet.", 8) ||
+                    name.startsWith("websocket.", 8) ||
+                    name.startsWith("security.auth.message.", 8)) {
+                    return true;
+                }
+            } else if (!isClassName && ch == '/') {
+                /* 8 == length("jakarta/") */
+                if (name.startsWith("servlet/jsp/jstl/", 6)) {
+                    return false;
+                }
+                if (name.startsWith("el/", 8) ||
+                    name.startsWith("servlet/", 8) ||
+                    name.startsWith("websocket/", 8) ||
+                    name.startsWith("security/auth/message/", 8)) {
+                    return true;
+                }
+            }
+        } else if (name.startsWith("javax")) {
             /* 5 == length("javax") */
             if (name.length() == 5) {
                 return false;
diff --git a/java/org/apache/el/ExpressionFactoryImpl.java b/java/org/apache/el/ExpressionFactoryImpl.java
index e32eced..3ce47ad 100644
--- a/java/org/apache/el/ExpressionFactoryImpl.java
+++ b/java/org/apache/el/ExpressionFactoryImpl.java
@@ -16,11 +16,11 @@
  */
 package org.apache.el;
 
-import javax.el.ELContext;
-import javax.el.ELResolver;
-import javax.el.ExpressionFactory;
-import javax.el.MethodExpression;
-import javax.el.ValueExpression;
+import jakarta.el.ELContext;
+import jakarta.el.ELResolver;
+import jakarta.el.ExpressionFactory;
+import jakarta.el.MethodExpression;
+import jakarta.el.ValueExpression;
 
 import org.apache.el.lang.ELSupport;
 import org.apache.el.lang.ExpressionBuilder;
@@ -29,7 +29,7 @@ import org.apache.el.util.MessageFactory;
 
 
 /**
- * @see javax.el.ExpressionFactory
+ * @see jakarta.el.ExpressionFactory
  *
  * @author Jacob Hookom [jacob@hookom.net]
  */
diff --git a/java/org/apache/el/MethodExpressionImpl.java b/java/org/apache/el/MethodExpressionImpl.java
index a3db932..ff5f1d9 100644
--- a/java/org/apache/el/MethodExpressionImpl.java
+++ b/java/org/apache/el/MethodExpressionImpl.java
@@ -22,14 +22,14 @@ import java.io.IOException;
 import java.io.ObjectInput;
 import java.io.ObjectOutput;
 
-import javax.el.ELContext;
-import javax.el.ELException;
-import javax.el.FunctionMapper;
-import javax.el.MethodExpression;
-import javax.el.MethodInfo;
-import javax.el.MethodNotFoundException;
-import javax.el.PropertyNotFoundException;
-import javax.el.VariableMapper;
+import jakarta.el.ELContext;
+import jakarta.el.ELException;
+import jakarta.el.FunctionMapper;
+import jakarta.el.MethodExpression;
+import jakarta.el.MethodInfo;
+import jakarta.el.MethodNotFoundException;
+import jakarta.el.PropertyNotFoundException;
+import jakarta.el.VariableMapper;
 
 import org.apache.el.lang.EvaluationContext;
 import org.apache.el.lang.ExpressionBuilder;
@@ -41,7 +41,7 @@ import org.apache.el.util.ReflectionUtil;
  * An <code>Expression</code> that refers to a method on an object.
  *
  * <p>
- * The {@link javax.el.ExpressionFactory#createMethodExpression} method
+ * The {@link jakarta.el.ExpressionFactory#createMethodExpression} method
  * can be used to parse an expression string and return a concrete instance
  * of <code>MethodExpression</code> that encapsulates the parsed expression.
  * The {@link FunctionMapper} is used at parse time, not evaluation time,
@@ -49,11 +49,11 @@ import org.apache.el.util.ReflectionUtil;
  * However, the {@link ELContext} is needed at evaluation time.</p>
  *
  * <p>The {@link #getMethodInfo} and {@link #invoke} methods will evaluate the
- * expression each time they are called. The {@link javax.el.ELResolver} in the
+ * expression each time they are called. The {@link jakarta.el.ELResolver} in the
  * <code>ELContext</code> is used to resolve the top-level variables and to
  * determine the behavior of the <code>.</code> and <code>[]</code>
  * operators. For any of the two methods, the
- * {@link javax.el.ELResolver#getValue} method is used to resolve all properties
+ * {@link jakarta.el.ELResolver#getValue} method is used to resolve all properties
  * up to but excluding the last one. This provides the <code>base</code> object
  * on which the method appears. If the <code>base</code> object is null, a
  * <code>NullPointerException</code> must be thrown. At the last resolution,
@@ -64,12 +64,12 @@ import org.apache.el.util.ReflectionUtil;
  * <code>MethodExpression</code>).</p>
  *
  * <p>See the notes about comparison, serialization and immutability in
- * the {@link javax.el.Expression} javadocs.
+ * the {@link jakarta.el.Expression} javadocs.
  *
- * @see javax.el.ELResolver
- * @see javax.el.Expression
- * @see javax.el.ExpressionFactory
- * @see javax.el.MethodExpression
+ * @see jakarta.el.ELResolver
+ * @see jakarta.el.Expression
+ * @see jakarta.el.ExpressionFactory
+ * @see jakarta.el.MethodExpression
  *
  * @author Jacob Hookom [jacob@hookom.net]
  */
@@ -156,7 +156,7 @@ public final class MethodExpressionImpl extends MethodExpression implements
      *
      * @return The original expression String.
      *
-     * @see javax.el.Expression#getExpressionString()
+     * @see jakarta.el.Expression#getExpressionString()
      */
     @Override
     public String getExpressionString() {
@@ -183,7 +183,7 @@ public final class MethodExpressionImpl extends MethodExpression implements
      *             if an exception was thrown while performing property or
      *             variable resolution. The thrown exception must be included as
      *             the cause property of this exception, if available.
-     * @see javax.el.MethodExpression#getMethodInfo(javax.el.ELContext)
+     * @see jakarta.el.MethodExpression#getMethodInfo(jakarta.el.ELContext)
      */
     @Override
     public MethodInfo getMethodInfo(ELContext context)
@@ -254,7 +254,7 @@ public final class MethodExpressionImpl extends MethodExpression implements
      *             exception thrown is an <code>InvocationTargetException</code>,
      *             extract its <code>cause</code> and pass it to the
      *             <code>ELException</code> constructor.
-     * @see javax.el.MethodExpression#invoke(javax.el.ELContext,
+     * @see jakarta.el.MethodExpression#invoke(jakarta.el.ELContext,
      *      java.lang.Object[])
      */
     @Override
diff --git a/java/org/apache/el/MethodExpressionLiteral.java b/java/org/apache/el/MethodExpressionLiteral.java
index abdbfe7..ada7ea4 100644
--- a/java/org/apache/el/MethodExpressionLiteral.java
+++ b/java/org/apache/el/MethodExpressionLiteral.java
@@ -22,10 +22,10 @@ import java.io.IOException;
 import java.io.ObjectInput;
 import java.io.ObjectOutput;
 
-import javax.el.ELContext;
-import javax.el.ELException;
-import javax.el.MethodExpression;
-import javax.el.MethodInfo;
+import jakarta.el.ELContext;
+import jakarta.el.ELException;
+import jakarta.el.MethodExpression;
+import jakarta.el.MethodInfo;
 
 import org.apache.el.util.ReflectionUtil;
 
diff --git a/java/org/apache/el/ValueExpressionImpl.java b/java/org/apache/el/ValueExpressionImpl.java
index 2682bbd..f1a7a6a 100644
--- a/java/org/apache/el/ValueExpressionImpl.java
+++ b/java/org/apache/el/ValueExpressionImpl.java
@@ -22,14 +22,14 @@ import java.io.IOException;
 import java.io.ObjectInput;
 import java.io.ObjectOutput;
 
-import javax.el.ELContext;
-import javax.el.ELException;
-import javax.el.FunctionMapper;
-import javax.el.PropertyNotFoundException;
-import javax.el.PropertyNotWritableException;
-import javax.el.ValueExpression;
-import javax.el.ValueReference;
-import javax.el.VariableMapper;
+import jakarta.el.ELContext;
+import jakarta.el.ELException;
+import jakarta.el.FunctionMapper;
+import jakarta.el.PropertyNotFoundException;
+import jakarta.el.PropertyNotWritableException;
+import jakarta.el.ValueExpression;
+import jakarta.el.ValueReference;
+import jakarta.el.VariableMapper;
 
 import org.apache.el.lang.EvaluationContext;
 import org.apache.el.lang.ExpressionBuilder;
@@ -54,7 +54,7 @@ import org.apache.el.util.ReflectionUtil;
  * </p>
  *
  * <p>
- * The {@link javax.el.ExpressionFactory#createValueExpression} method
+ * The {@link jakarta.el.ExpressionFactory#createValueExpression} method
  * can be used to parse an expression string and return a concrete instance
  * of <code>ValueExpression</code> that encapsulates the parsed expression.
  * The {@link FunctionMapper} is used at parse time, not evaluation time,
@@ -63,25 +63,25 @@ import org.apache.el.util.ReflectionUtil;
  *
  * <p>The {@link #getValue}, {@link #setValue}, {@link #isReadOnly} and
  * {@link #getType} methods will evaluate the expression each time they are
- * called. The {@link javax.el.ELResolver} in the <code>ELContext</code> is used
+ * called. The {@link jakarta.el.ELResolver} in the <code>ELContext</code> is used
  * to resolve the top-level variables and to determine the behavior of the
  * <code>.</code> and <code>[]</code> operators. For any of the four methods,
- * the {@link javax.el.ELResolver#getValue} method is used to resolve all
+ * the {@link jakarta.el.ELResolver#getValue} method is used to resolve all
  * properties up to but excluding the last one. This provides the
  * <code>base</code> object. At the last resolution, the
  * <code>ValueExpression</code> will call the corresponding
- * {@link javax.el.ELResolver#getValue}, {@link javax.el.ELResolver#setValue},
- * {@link javax.el.ELResolver#isReadOnly} or {@link javax.el.ELResolver#getType}
+ * {@link jakarta.el.ELResolver#getValue}, {@link jakarta.el.ELResolver#setValue},
+ * {@link jakarta.el.ELResolver#isReadOnly} or {@link jakarta.el.ELResolver#getType}
  * method, depending on which was called on the <code>ValueExpression</code>.
  * </p>
  *
  * <p>See the notes about comparison, serialization and immutability in
- * the {@link javax.el.Expression} javadocs.
+ * the {@link jakarta.el.Expression} javadocs.
  *
- * @see javax.el.ELResolver
- * @see javax.el.Expression
- * @see javax.el.ExpressionFactory
- * @see javax.el.ValueExpression
+ * @see jakarta.el.ELResolver
+ * @see jakarta.el.Expression
+ * @see jakarta.el.ExpressionFactory
+ * @see jakarta.el.ValueExpression
  *
  * @author Jacob Hookom [jacob@hookom.net]
  */
@@ -131,7 +131,7 @@ public final class ValueExpressionImpl extends ValueExpression implements
     /*
      * (non-Javadoc)
      *
-     * @see javax.el.ValueExpression#getExpectedType()
+     * @see jakarta.el.ValueExpression#getExpectedType()
      */
     @Override
     public Class<?> getExpectedType() {
@@ -146,7 +146,7 @@ public final class ValueExpressionImpl extends ValueExpression implements
      *         <code>ExpressionFactory.createValueExpression</code> method
      *         that created this <code>ValueExpression</code>.
      *
-     * @see javax.el.Expression#getExpressionString()
+     * @see jakarta.el.Expression#getExpressionString()
      */
     @Override
     public String getExpressionString() {
@@ -163,7 +163,7 @@ public final class ValueExpressionImpl extends ValueExpression implements
     /*
      * (non-Javadoc)
      *
-     * @see javax.el.ValueExpression#getType(javax.el.ELContext)
+     * @see jakarta.el.ValueExpression#getType(jakarta.el.ELContext)
      */
     @Override
     public Class<?> getType(ELContext context) throws PropertyNotFoundException,
@@ -179,7 +179,7 @@ public final class ValueExpressionImpl extends ValueExpression implements
     /*
      * (non-Javadoc)
      *
-     * @see javax.el.ValueExpression#getValue(javax.el.ELContext)
+     * @see jakarta.el.ValueExpression#getValue(jakarta.el.ELContext)
      */
     @Override
     public Object getValue(ELContext context) throws PropertyNotFoundException,
@@ -208,7 +208,7 @@ public final class ValueExpressionImpl extends ValueExpression implements
     /*
      * (non-Javadoc)
      *
-     * @see javax.el.ValueExpression#isLiteralText()
+     * @see jakarta.el.ValueExpression#isLiteralText()
      */
     @Override
     public boolean isLiteralText() {
@@ -222,7 +222,7 @@ public final class ValueExpressionImpl extends ValueExpression implements
     /*
      * (non-Javadoc)
      *
-     * @see javax.el.ValueExpression#isReadOnly(javax.el.ELContext)
+     * @see jakarta.el.ValueExpression#isReadOnly(jakarta.el.ELContext)
      */
     @Override
     public boolean isReadOnly(ELContext context)
@@ -250,7 +250,7 @@ public final class ValueExpressionImpl extends ValueExpression implements
     /*
      * (non-Javadoc)
      *
-     * @see javax.el.ValueExpression#setValue(javax.el.ELContext,
+     * @see jakarta.el.ValueExpression#setValue(jakarta.el.ELContext,
      *      java.lang.Object)
      */
     @Override
diff --git a/java/org/apache/el/ValueExpressionLiteral.java b/java/org/apache/el/ValueExpressionLiteral.java
index 413f914..8ff72d0 100644
--- a/java/org/apache/el/ValueExpressionLiteral.java
+++ b/java/org/apache/el/ValueExpressionLiteral.java
@@ -21,9 +21,9 @@ import java.io.IOException;
 import java.io.ObjectInput;
 import java.io.ObjectOutput;
 
-import javax.el.ELContext;
-import javax.el.PropertyNotWritableException;
-import javax.el.ValueExpression;
+import jakarta.el.ELContext;
+import jakarta.el.PropertyNotWritableException;
+import jakarta.el.ValueExpression;
 
 import org.apache.el.util.MessageFactory;
 import org.apache.el.util.ReflectionUtil;
diff --git a/java/org/apache/el/lang/ELSupport.java b/java/org/apache/el/lang/ELSupport.java
index e979052..6031d1d 100644
--- a/java/org/apache/el/lang/ELSupport.java
+++ b/java/org/apache/el/lang/ELSupport.java
@@ -27,8 +27,8 @@ import java.util.Collections;
 import java.util.Map;
 import java.util.Set;
 
-import javax.el.ELContext;
-import javax.el.ELException;
+import jakarta.el.ELContext;
+import jakarta.el.ELException;
 
 import org.apache.el.util.MessageFactory;
 
diff --git a/java/org/apache/el/lang/EvaluationContext.java b/java/org/apache/el/lang/EvaluationContext.java
index f0a48a8..fad4c4f 100644
--- a/java/org/apache/el/lang/EvaluationContext.java
+++ b/java/org/apache/el/lang/EvaluationContext.java
@@ -21,12 +21,12 @@ import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 
-import javax.el.ELContext;
-import javax.el.ELResolver;
-import javax.el.EvaluationListener;
-import javax.el.FunctionMapper;
-import javax.el.ImportHandler;
-import javax.el.VariableMapper;
+import jakarta.el.ELContext;
+import jakarta.el.ELResolver;
+import jakarta.el.EvaluationListener;
+import jakarta.el.FunctionMapper;
+import jakarta.el.ImportHandler;
+import jakarta.el.VariableMapper;
 
 public final class EvaluationContext extends ELContext {
 
diff --git a/java/org/apache/el/lang/ExpressionBuilder.java b/java/org/apache/el/lang/ExpressionBuilder.java
index 6c3620b..5c11d2d 100644
--- a/java/org/apache/el/lang/ExpressionBuilder.java
+++ b/java/org/apache/el/lang/ExpressionBuilder.java
@@ -21,12 +21,12 @@ import java.lang.reflect.Method;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
 
-import javax.el.ELContext;
-import javax.el.ELException;
-import javax.el.FunctionMapper;
-import javax.el.MethodExpression;
-import javax.el.ValueExpression;
-import javax.el.VariableMapper;
+import jakarta.el.ELContext;
+import jakarta.el.ELException;
+import jakarta.el.FunctionMapper;
+import jakarta.el.MethodExpression;
+import jakarta.el.ValueExpression;
+import jakarta.el.VariableMapper;
 
 import org.apache.el.MethodExpressionImpl;
 import org.apache.el.MethodExpressionLiteral;
diff --git a/java/org/apache/el/lang/FunctionMapperFactory.java b/java/org/apache/el/lang/FunctionMapperFactory.java
index 59b6cb6..f7ded32 100644
--- a/java/org/apache/el/lang/FunctionMapperFactory.java
+++ b/java/org/apache/el/lang/FunctionMapperFactory.java
@@ -19,7 +19,7 @@ package org.apache.el.lang;
 
 import java.lang.reflect.Method;
 
-import javax.el.FunctionMapper;
+import jakarta.el.FunctionMapper;
 
 import org.apache.el.util.MessageFactory;
 
@@ -40,7 +40,7 @@ public class FunctionMapperFactory extends FunctionMapper {
 
 
     /* (non-Javadoc)
-     * @see javax.el.FunctionMapper#resolveFunction(java.lang.String, java.lang.String)
+     * @see jakarta.el.FunctionMapper#resolveFunction(java.lang.String, java.lang.String)
      */
     @Override
     public Method resolveFunction(String prefix, String localName) {
diff --git a/java/org/apache/el/lang/FunctionMapperImpl.java b/java/org/apache/el/lang/FunctionMapperImpl.java
index b58ab24..81f296e 100644
--- a/java/org/apache/el/lang/FunctionMapperImpl.java
+++ b/java/org/apache/el/lang/FunctionMapperImpl.java
@@ -24,7 +24,7 @@ import java.lang.reflect.Method;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 
-import javax.el.FunctionMapper;
+import jakarta.el.FunctionMapper;
 
 import org.apache.el.util.MessageFactory;
 import org.apache.el.util.ReflectionUtil;
@@ -43,7 +43,7 @@ public class FunctionMapperImpl extends FunctionMapper implements
     /*
      * (non-Javadoc)
      *
-     * @see javax.el.FunctionMapper#resolveFunction(java.lang.String,
+     * @see jakarta.el.FunctionMapper#resolveFunction(java.lang.String,
      *      java.lang.String)
      */
     @Override
diff --git a/java/org/apache/el/lang/VariableMapperFactory.java b/java/org/apache/el/lang/VariableMapperFactory.java
index 3986206..b4d3132 100644
--- a/java/org/apache/el/lang/VariableMapperFactory.java
+++ b/java/org/apache/el/lang/VariableMapperFactory.java
@@ -17,8 +17,8 @@
 
 package org.apache.el.lang;
 
-import javax.el.ValueExpression;
-import javax.el.VariableMapper;
+import jakarta.el.ValueExpression;
+import jakarta.el.VariableMapper;
 
 import org.apache.el.util.MessageFactory;
 
diff --git a/java/org/apache/el/lang/VariableMapperImpl.java b/java/org/apache/el/lang/VariableMapperImpl.java
index 4fdcf7f..bdbd7bf 100644
--- a/java/org/apache/el/lang/VariableMapperImpl.java
+++ b/java/org/apache/el/lang/VariableMapperImpl.java
@@ -24,8 +24,8 @@ import java.io.ObjectOutput;
 import java.util.HashMap;
 import java.util.Map;
 
-import javax.el.ValueExpression;
-import javax.el.VariableMapper;
+import jakarta.el.ValueExpression;
+import jakarta.el.VariableMapper;
 
 public class VariableMapperImpl extends VariableMapper implements Externalizable {
 
diff --git a/java/org/apache/el/parser/ArithmeticNode.java b/java/org/apache/el/parser/ArithmeticNode.java
index b390915..2a665d1 100644
--- a/java/org/apache/el/parser/ArithmeticNode.java
+++ b/java/org/apache/el/parser/ArithmeticNode.java
@@ -16,7 +16,7 @@
  */
 package org.apache.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import org.apache.el.lang.EvaluationContext;
 
diff --git a/java/org/apache/el/parser/AstAnd.java b/java/org/apache/el/parser/AstAnd.java
index b05af99..a147b18 100644
--- a/java/org/apache/el/parser/AstAnd.java
+++ b/java/org/apache/el/parser/AstAnd.java
@@ -18,7 +18,7 @@
 
 package org.apache.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import org.apache.el.lang.EvaluationContext;
 
diff --git a/java/org/apache/el/parser/AstAssign.java b/java/org/apache/el/parser/AstAssign.java
index f6cb785..066625f 100644
--- a/java/org/apache/el/parser/AstAssign.java
+++ b/java/org/apache/el/parser/AstAssign.java
@@ -17,7 +17,7 @@
 /* Generated By:JJTree: Do not edit this line. AstAssign.java Version 4.3 */
 package org.apache.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import org.apache.el.lang.EvaluationContext;
 
diff --git a/java/org/apache/el/parser/AstBracketSuffix.java b/java/org/apache/el/parser/AstBracketSuffix.java
index 1288d4f..4fe5f4b 100644
--- a/java/org/apache/el/parser/AstBracketSuffix.java
+++ b/java/org/apache/el/parser/AstBracketSuffix.java
@@ -18,7 +18,7 @@
 
 package org.apache.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import org.apache.el.lang.EvaluationContext;
 
diff --git a/java/org/apache/el/parser/AstChoice.java b/java/org/apache/el/parser/AstChoice.java
index 120106c..c98ab88 100644
--- a/java/org/apache/el/parser/AstChoice.java
+++ b/java/org/apache/el/parser/AstChoice.java
@@ -18,7 +18,7 @@
 
 package org.apache.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import org.apache.el.lang.EvaluationContext;
 
diff --git a/java/org/apache/el/parser/AstCompositeExpression.java b/java/org/apache/el/parser/AstCompositeExpression.java
index 06ae01d..82ed6a6 100644
--- a/java/org/apache/el/parser/AstCompositeExpression.java
+++ b/java/org/apache/el/parser/AstCompositeExpression.java
@@ -18,7 +18,7 @@
 
 package org.apache.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import org.apache.el.lang.ELSupport;
 import org.apache.el.lang.EvaluationContext;
diff --git a/java/org/apache/el/parser/AstConcatenation.java b/java/org/apache/el/parser/AstConcatenation.java
index 860e99f..f26e0a3 100644
--- a/java/org/apache/el/parser/AstConcatenation.java
+++ b/java/org/apache/el/parser/AstConcatenation.java
@@ -17,7 +17,7 @@
 /* Generated By:JJTree: Do not edit this line. AstConcatenation.java Version 4.3 */
 package org.apache.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import org.apache.el.lang.EvaluationContext;
 
diff --git a/java/org/apache/el/parser/AstDeferredExpression.java b/java/org/apache/el/parser/AstDeferredExpression.java
index 7727609..033820c 100644
--- a/java/org/apache/el/parser/AstDeferredExpression.java
+++ b/java/org/apache/el/parser/AstDeferredExpression.java
@@ -18,7 +18,7 @@
 
 package org.apache.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import org.apache.el.lang.EvaluationContext;
 
diff --git a/java/org/apache/el/parser/AstDiv.java b/java/org/apache/el/parser/AstDiv.java
index 406e230..c28b18f 100644
--- a/java/org/apache/el/parser/AstDiv.java
+++ b/java/org/apache/el/parser/AstDiv.java
@@ -18,7 +18,7 @@
 
 package org.apache.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import org.apache.el.lang.ELArithmetic;
 import org.apache.el.lang.EvaluationContext;
diff --git a/java/org/apache/el/parser/AstDotSuffix.java b/java/org/apache/el/parser/AstDotSuffix.java
index 3c8d1b5..59c4427 100644
--- a/java/org/apache/el/parser/AstDotSuffix.java
+++ b/java/org/apache/el/parser/AstDotSuffix.java
@@ -18,7 +18,7 @@
 
 package org.apache.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import org.apache.el.lang.EvaluationContext;
 import org.apache.el.util.MessageFactory;
diff --git a/java/org/apache/el/parser/AstDynamicExpression.java b/java/org/apache/el/parser/AstDynamicExpression.java
index b14d9ec..b2e1595 100644
--- a/java/org/apache/el/parser/AstDynamicExpression.java
+++ b/java/org/apache/el/parser/AstDynamicExpression.java
@@ -18,7 +18,7 @@
 
 package org.apache.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import org.apache.el.lang.EvaluationContext;
 
diff --git a/java/org/apache/el/parser/AstEmpty.java b/java/org/apache/el/parser/AstEmpty.java
index 47c0590..62c5a68 100644
--- a/java/org/apache/el/parser/AstEmpty.java
+++ b/java/org/apache/el/parser/AstEmpty.java
@@ -21,7 +21,7 @@ package org.apache.el.parser;
 import java.util.Collection;
 import java.util.Map;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import org.apache.el.lang.EvaluationContext;
 
diff --git a/java/org/apache/el/parser/AstEqual.java b/java/org/apache/el/parser/AstEqual.java
index d194272..878958a 100644
--- a/java/org/apache/el/parser/AstEqual.java
+++ b/java/org/apache/el/parser/AstEqual.java
@@ -18,7 +18,7 @@
 
 package org.apache.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import org.apache.el.lang.EvaluationContext;
 
diff --git a/java/org/apache/el/parser/AstFalse.java b/java/org/apache/el/parser/AstFalse.java
index 27527aa..d047581 100644
--- a/java/org/apache/el/parser/AstFalse.java
+++ b/java/org/apache/el/parser/AstFalse.java
@@ -18,7 +18,7 @@
 
 package org.apache.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import org.apache.el.lang.EvaluationContext;
 
diff --git a/java/org/apache/el/parser/AstFloatingPoint.java b/java/org/apache/el/parser/AstFloatingPoint.java
index 9316ec3..c9129a3 100644
--- a/java/org/apache/el/parser/AstFloatingPoint.java
+++ b/java/org/apache/el/parser/AstFloatingPoint.java
@@ -20,7 +20,7 @@ package org.apache.el.parser;
 
 import java.math.BigDecimal;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import org.apache.el.lang.EvaluationContext;
 
diff --git a/java/org/apache/el/parser/AstFunction.java b/java/org/apache/el/parser/AstFunction.java
index 09ac424..a95f83c 100644
--- a/java/org/apache/el/parser/AstFunction.java
+++ b/java/org/apache/el/parser/AstFunction.java
@@ -21,12 +21,12 @@ package org.apache.el.parser;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 
-import javax.el.ELClass;
-import javax.el.ELException;
-import javax.el.FunctionMapper;
-import javax.el.LambdaExpression;
-import javax.el.ValueExpression;
-import javax.el.VariableMapper;
+import jakarta.el.ELClass;
+import jakarta.el.ELException;
+import jakarta.el.FunctionMapper;
+import jakarta.el.LambdaExpression;
+import jakarta.el.ValueExpression;
+import jakarta.el.VariableMapper;
 
 import org.apache.el.lang.EvaluationContext;
 import org.apache.el.util.MessageFactory;
diff --git a/java/org/apache/el/parser/AstGreaterThan.java b/java/org/apache/el/parser/AstGreaterThan.java
index eadc4a2..037d910 100644
--- a/java/org/apache/el/parser/AstGreaterThan.java
+++ b/java/org/apache/el/parser/AstGreaterThan.java
@@ -18,7 +18,7 @@
 
 package org.apache.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import org.apache.el.lang.EvaluationContext;
 
diff --git a/java/org/apache/el/parser/AstGreaterThanEqual.java b/java/org/apache/el/parser/AstGreaterThanEqual.java
index 8c74ceb..fd1ab76 100644
--- a/java/org/apache/el/parser/AstGreaterThanEqual.java
+++ b/java/org/apache/el/parser/AstGreaterThanEqual.java
@@ -18,7 +18,7 @@
 
 package org.apache.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import org.apache.el.lang.EvaluationContext;
 
diff --git a/java/org/apache/el/parser/AstIdentifier.java b/java/org/apache/el/parser/AstIdentifier.java
index 74deb84..d21fe9b 100644
--- a/java/org/apache/el/parser/AstIdentifier.java
+++ b/java/org/apache/el/parser/AstIdentifier.java
@@ -18,15 +18,15 @@
 
 package org.apache.el.parser;
 
-import javax.el.ELClass;
-import javax.el.ELException;
-import javax.el.MethodExpression;
-import javax.el.MethodInfo;
-import javax.el.MethodNotFoundException;
-import javax.el.PropertyNotFoundException;
-import javax.el.ValueExpression;
-import javax.el.ValueReference;
-import javax.el.VariableMapper;
+import jakarta.el.ELClass;
+import jakarta.el.ELException;
+import jakarta.el.MethodExpression;
+import jakarta.el.MethodInfo;
+import jakarta.el.MethodNotFoundException;
+import jakarta.el.PropertyNotFoundException;
+import jakarta.el.ValueExpression;
+import jakarta.el.ValueReference;
+import jakarta.el.VariableMapper;
 
 import org.apache.el.lang.EvaluationContext;
 import org.apache.el.util.MessageFactory;
diff --git a/java/org/apache/el/parser/AstInteger.java b/java/org/apache/el/parser/AstInteger.java
index 5b0a377..fc519d2 100644
--- a/java/org/apache/el/parser/AstInteger.java
+++ b/java/org/apache/el/parser/AstInteger.java
@@ -20,7 +20,7 @@ package org.apache.el.parser;
 
 import java.math.BigInteger;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import org.apache.el.lang.EvaluationContext;
 
diff --git a/java/org/apache/el/parser/AstLambdaExpression.java b/java/org/apache/el/parser/AstLambdaExpression.java
index f719c33..580c5d9 100644
--- a/java/org/apache/el/parser/AstLambdaExpression.java
+++ b/java/org/apache/el/parser/AstLambdaExpression.java
@@ -20,8 +20,8 @@ package org.apache.el.parser;
 import java.util.ArrayList;
 import java.util.List;
 
-import javax.el.ELException;
-import javax.el.LambdaExpression;
+import jakarta.el.ELException;
+import jakarta.el.LambdaExpression;
 
 import org.apache.el.ValueExpressionImpl;
 import org.apache.el.lang.EvaluationContext;
diff --git a/java/org/apache/el/parser/AstLessThan.java b/java/org/apache/el/parser/AstLessThan.java
index cc7a3cc..63c1b3c 100644
--- a/java/org/apache/el/parser/AstLessThan.java
+++ b/java/org/apache/el/parser/AstLessThan.java
@@ -18,7 +18,7 @@
 
 package org.apache.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import org.apache.el.lang.EvaluationContext;
 
diff --git a/java/org/apache/el/parser/AstLessThanEqual.java b/java/org/apache/el/parser/AstLessThanEqual.java
index 2e84f5b..24104a5 100644
--- a/java/org/apache/el/parser/AstLessThanEqual.java
+++ b/java/org/apache/el/parser/AstLessThanEqual.java
@@ -18,7 +18,7 @@
 
 package org.apache.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import org.apache.el.lang.EvaluationContext;
 
diff --git a/java/org/apache/el/parser/AstListData.java b/java/org/apache/el/parser/AstListData.java
index 0a0229d..eb88917 100644
--- a/java/org/apache/el/parser/AstListData.java
+++ b/java/org/apache/el/parser/AstListData.java
@@ -20,7 +20,7 @@ package org.apache.el.parser;
 import java.util.ArrayList;
 import java.util.List;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import org.apache.el.lang.EvaluationContext;
 
diff --git a/java/org/apache/el/parser/AstLiteralExpression.java b/java/org/apache/el/parser/AstLiteralExpression.java
index 7244df1..856b760 100644
--- a/java/org/apache/el/parser/AstLiteralExpression.java
+++ b/java/org/apache/el/parser/AstLiteralExpression.java
@@ -18,7 +18,7 @@
 
 package org.apache.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import org.apache.el.lang.EvaluationContext;
 
diff --git a/java/org/apache/el/parser/AstMapData.java b/java/org/apache/el/parser/AstMapData.java
index bd711c4..ce7245b 100644
--- a/java/org/apache/el/parser/AstMapData.java
+++ b/java/org/apache/el/parser/AstMapData.java
@@ -20,7 +20,7 @@ package org.apache.el.parser;
 import java.util.HashMap;
 import java.util.Map;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import org.apache.el.lang.EvaluationContext;
 
diff --git a/java/org/apache/el/parser/AstMinus.java b/java/org/apache/el/parser/AstMinus.java
index 0530f4f..ace11fb 100644
--- a/java/org/apache/el/parser/AstMinus.java
+++ b/java/org/apache/el/parser/AstMinus.java
@@ -18,7 +18,7 @@
 
 package org.apache.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import org.apache.el.lang.ELArithmetic;
 import org.apache.el.lang.EvaluationContext;
diff --git a/java/org/apache/el/parser/AstMod.java b/java/org/apache/el/parser/AstMod.java
index 7c06930..5cd3484 100644
--- a/java/org/apache/el/parser/AstMod.java
+++ b/java/org/apache/el/parser/AstMod.java
@@ -18,7 +18,7 @@
 
 package org.apache.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import org.apache.el.lang.ELArithmetic;
 import org.apache.el.lang.EvaluationContext;
diff --git a/java/org/apache/el/parser/AstMult.java b/java/org/apache/el/parser/AstMult.java
index b2adc68..6d1f60e 100644
--- a/java/org/apache/el/parser/AstMult.java
+++ b/java/org/apache/el/parser/AstMult.java
@@ -18,7 +18,7 @@
 
 package org.apache.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import org.apache.el.lang.ELArithmetic;
 import org.apache.el.lang.EvaluationContext;
diff --git a/java/org/apache/el/parser/AstNegative.java b/java/org/apache/el/parser/AstNegative.java
index 28164a2..0359c23 100644
--- a/java/org/apache/el/parser/AstNegative.java
+++ b/java/org/apache/el/parser/AstNegative.java
@@ -21,7 +21,7 @@ package org.apache.el.parser;
 import java.math.BigDecimal;
 import java.math.BigInteger;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import org.apache.el.lang.EvaluationContext;
 
diff --git a/java/org/apache/el/parser/AstNot.java b/java/org/apache/el/parser/AstNot.java
index c7045d6..3ac99d3 100644
--- a/java/org/apache/el/parser/AstNot.java
+++ b/java/org/apache/el/parser/AstNot.java
@@ -18,7 +18,7 @@
 
 package org.apache.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import org.apache.el.lang.EvaluationContext;
 
diff --git a/java/org/apache/el/parser/AstNotEqual.java b/java/org/apache/el/parser/AstNotEqual.java
index 2223459..f2c70e5 100644
--- a/java/org/apache/el/parser/AstNotEqual.java
+++ b/java/org/apache/el/parser/AstNotEqual.java
@@ -18,7 +18,7 @@
 
 package org.apache.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import org.apache.el.lang.EvaluationContext;
 
diff --git a/java/org/apache/el/parser/AstNull.java b/java/org/apache/el/parser/AstNull.java
index d6f196b..bc149f1 100644
--- a/java/org/apache/el/parser/AstNull.java
+++ b/java/org/apache/el/parser/AstNull.java
@@ -18,7 +18,7 @@
 
 package org.apache.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import org.apache.el.lang.EvaluationContext;
 
diff --git a/java/org/apache/el/parser/AstOr.java b/java/org/apache/el/parser/AstOr.java
index d469dc3..dfc0677 100644
--- a/java/org/apache/el/parser/AstOr.java
+++ b/java/org/apache/el/parser/AstOr.java
@@ -18,7 +18,7 @@
 
 package org.apache.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import org.apache.el.lang.EvaluationContext;
 
diff --git a/java/org/apache/el/parser/AstPlus.java b/java/org/apache/el/parser/AstPlus.java
index 99036af..2728ee6 100644
--- a/java/org/apache/el/parser/AstPlus.java
+++ b/java/org/apache/el/parser/AstPlus.java
@@ -18,7 +18,7 @@
 
 package org.apache.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import org.apache.el.lang.ELArithmetic;
 import org.apache.el.lang.EvaluationContext;
diff --git a/java/org/apache/el/parser/AstSemicolon.java b/java/org/apache/el/parser/AstSemicolon.java
index 56e5c9b..fb72c77 100644
--- a/java/org/apache/el/parser/AstSemicolon.java
+++ b/java/org/apache/el/parser/AstSemicolon.java
@@ -17,7 +17,7 @@
 /* Generated By:JJTree: Do not edit this line. AstSemicolon.java Version 4.3 */
 package org.apache.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import org.apache.el.lang.EvaluationContext;
 
diff --git a/java/org/apache/el/parser/AstSetData.java b/java/org/apache/el/parser/AstSetData.java
index d8e422f..e53e7ed 100644
--- a/java/org/apache/el/parser/AstSetData.java
+++ b/java/org/apache/el/parser/AstSetData.java
@@ -20,7 +20,7 @@ package org.apache.el.parser;
 import java.util.HashSet;
 import java.util.Set;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import org.apache.el.lang.EvaluationContext;
 
diff --git a/java/org/apache/el/parser/AstString.java b/java/org/apache/el/parser/AstString.java
index 7ea9f82..0f66113 100644
--- a/java/org/apache/el/parser/AstString.java
+++ b/java/org/apache/el/parser/AstString.java
@@ -18,7 +18,7 @@
 
 package org.apache.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import org.apache.el.lang.EvaluationContext;
 
diff --git a/java/org/apache/el/parser/AstTrue.java b/java/org/apache/el/parser/AstTrue.java
index 126eed8..8d37f1f 100644
--- a/java/org/apache/el/parser/AstTrue.java
+++ b/java/org/apache/el/parser/AstTrue.java
@@ -18,7 +18,7 @@
 
 package org.apache.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import org.apache.el.lang.EvaluationContext;
 
diff --git a/java/org/apache/el/parser/AstValue.java b/java/org/apache/el/parser/AstValue.java
index caa264a..ebee1df 100644
--- a/java/org/apache/el/parser/AstValue.java
+++ b/java/org/apache/el/parser/AstValue.java
@@ -22,12 +22,12 @@ import java.lang.reflect.Array;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 
-import javax.el.ELException;
-import javax.el.ELResolver;
-import javax.el.LambdaExpression;
-import javax.el.MethodInfo;
-import javax.el.PropertyNotFoundException;
-import javax.el.ValueReference;
+import jakarta.el.ELException;
+import jakarta.el.ELResolver;
+import jakarta.el.LambdaExpression;
+import jakarta.el.MethodInfo;
+import jakarta.el.PropertyNotFoundException;
+import jakarta.el.ValueReference;
 
 import org.apache.el.lang.ELSupport;
 import org.apache.el.lang.EvaluationContext;
diff --git a/java/org/apache/el/parser/BooleanNode.java b/java/org/apache/el/parser/BooleanNode.java
index 2ef320c..3cd042a 100644
--- a/java/org/apache/el/parser/BooleanNode.java
+++ b/java/org/apache/el/parser/BooleanNode.java
@@ -16,7 +16,7 @@
  */
 package org.apache.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import org.apache.el.lang.EvaluationContext;
 
diff --git a/java/org/apache/el/parser/ELParser.java b/java/org/apache/el/parser/ELParser.java
index f412e48..1d9783f 100644
--- a/java/org/apache/el/parser/ELParser.java
+++ b/java/org/apache/el/parser/ELParser.java
@@ -1,7 +1,8 @@
 /* Generated By:JJTree&JavaCC: Do not edit this line. ELParser.java */
 package org.apache.el.parser;
 import java.io.StringReader;
-import javax.el.ELException;
+
+import jakarta.el.ELException;
 @SuppressWarnings("all") // Ignore warnings in generated code
 public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParserConstants {/*@bgen(jjtree)*/
   protected JJTELParserState jjtree = new JJTELParserState();
diff --git a/java/org/apache/el/parser/ELParser.jjt b/java/org/apache/el/parser/ELParser.jjt
index 5bca021..d519d2b 100644
--- a/java/org/apache/el/parser/ELParser.jjt
+++ b/java/org/apache/el/parser/ELParser.jjt
@@ -25,7 +25,7 @@ options
 {
     STATIC=false;
     NODE_PREFIX="Ast";
-    VISITOR_EXCEPTION="javax.el.ELException";
+    VISITOR_EXCEPTION="jakarta.el.ELException";
     VISITOR=false;
     MULTI=true;
     NODE_DEFAULT_VOID=true;
@@ -38,7 +38,7 @@ options
 PARSER_BEGIN( ELParser )
 package org.apache.el.parser;
 import java.io.StringReader;
-import javax.el.ELException;
+import jakarta.el.ELException;
 public class ELParser {
 
     public static Node parse(String ref) throws ELException {
diff --git a/java/org/apache/el/parser/Node.java b/java/org/apache/el/parser/Node.java
index 57fc54a..3aced06 100644
--- a/java/org/apache/el/parser/Node.java
+++ b/java/org/apache/el/parser/Node.java
@@ -19,9 +19,9 @@
 
 package org.apache.el.parser;
 
-import javax.el.ELException;
-import javax.el.MethodInfo;
-import javax.el.ValueReference;
+import jakarta.el.ELException;
+import jakarta.el.MethodInfo;
+import jakarta.el.ValueReference;
 
 import org.apache.el.lang.EvaluationContext;
 
diff --git a/java/org/apache/el/parser/SimpleNode.java b/java/org/apache/el/parser/SimpleNode.java
index 2d3e6a6..e2a2789 100644
--- a/java/org/apache/el/parser/SimpleNode.java
+++ b/java/org/apache/el/parser/SimpleNode.java
@@ -20,10 +20,10 @@ package org.apache.el.parser;
 
 import java.util.Arrays;
 
-import javax.el.ELException;
-import javax.el.MethodInfo;
-import javax.el.PropertyNotWritableException;
-import javax.el.ValueReference;
+import jakarta.el.ELException;
+import jakarta.el.MethodInfo;
+import jakarta.el.PropertyNotWritableException;
+import jakarta.el.ValueReference;
 
 import org.apache.el.lang.ELSupport;
 import org.apache.el.lang.EvaluationContext;
diff --git a/java/org/apache/el/stream/Optional.java b/java/org/apache/el/stream/Optional.java
index da68b2d..19478f9 100644
--- a/java/org/apache/el/stream/Optional.java
+++ b/java/org/apache/el/stream/Optional.java
@@ -16,8 +16,8 @@
  */
 package org.apache.el.stream;
 
-import javax.el.ELException;
-import javax.el.LambdaExpression;
+import jakarta.el.ELException;
+import jakarta.el.LambdaExpression;
 
 import org.apache.el.util.MessageFactory;
 
diff --git a/java/org/apache/el/stream/Stream.java b/java/org/apache/el/stream/Stream.java
index 85fe57a..d3f0b30 100644
--- a/java/org/apache/el/stream/Stream.java
+++ b/java/org/apache/el/stream/Stream.java
@@ -25,8 +25,8 @@ import java.util.List;
 import java.util.NoSuchElementException;
 import java.util.Set;
 
-import javax.el.ELException;
-import javax.el.LambdaExpression;
+import jakarta.el.ELException;
+import jakarta.el.LambdaExpression;
 
 import org.apache.el.lang.ELArithmetic;
 import org.apache.el.lang.ELSupport;
diff --git a/java/org/apache/el/stream/StreamELResolverImpl.java b/java/org/apache/el/stream/StreamELResolverImpl.java
index f5f6bcf..29c97e2 100644
--- a/java/org/apache/el/stream/StreamELResolverImpl.java
+++ b/java/org/apache/el/stream/StreamELResolverImpl.java
@@ -22,8 +22,8 @@ import java.util.Collection;
 import java.util.Iterator;
 import java.util.NoSuchElementException;
 
-import javax.el.ELContext;
-import javax.el.ELResolver;
+import jakarta.el.ELContext;
+import jakarta.el.ELResolver;
 
 public class StreamELResolverImpl extends ELResolver {
 
diff --git a/java/org/apache/el/util/Jre9Compat.java b/java/org/apache/el/util/Jre9Compat.java
index b4d10d7..91cd7bc 100644
--- a/java/org/apache/el/util/Jre9Compat.java
+++ b/java/org/apache/el/util/Jre9Compat.java
@@ -23,7 +23,7 @@ import java.lang.reflect.Method;
  * This is a cut down version of org.apache.tomcat.util.Jre9Compat that provides
  * only the methods required by the EL implementation.
  *
- * This class is duplicated in javax.el
+ * This class is duplicated in jakarta.el
  * When making changes keep the two in sync.
  */
 class Jre9Compat extends JreCompat {
diff --git a/java/org/apache/el/util/JreCompat.java b/java/org/apache/el/util/JreCompat.java
index 8f226f2..ac01386 100644
--- a/java/org/apache/el/util/JreCompat.java
+++ b/java/org/apache/el/util/JreCompat.java
@@ -22,7 +22,7 @@ import java.lang.reflect.AccessibleObject;
  * This is a cut down version of org.apache.tomcat.util.JreCompat that provides
  * only the methods required by the EL implementation.
  *
- * This class is duplicated in javax.el
+ * This class is duplicated in jakarta.el
  * When making changes keep the two in sync.
  */
 public class JreCompat {
diff --git a/java/org/apache/el/util/ReflectionUtil.java b/java/org/apache/el/util/ReflectionUtil.java
index c9f1f2e..f35f7c8 100644
--- a/java/org/apache/el/util/ReflectionUtil.java
+++ b/java/org/apache/el/util/ReflectionUtil.java
@@ -26,8 +26,8 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.Set;
 
-import javax.el.ELException;
-import javax.el.MethodNotFoundException;
+import jakarta.el.ELException;
+import jakarta.el.MethodNotFoundException;
 
 import org.apache.el.lang.ELSupport;
 import org.apache.el.lang.EvaluationContext;
@@ -124,7 +124,7 @@ public class ReflectionUtil {
      *         the given criteria
      */
     /*
-     * This class duplicates code in javax.el.Util. When making changes keep
+     * This class duplicates code in jakarta.el.Util. When making changes keep
      * the code in sync.
      */
     @SuppressWarnings("null")
@@ -297,7 +297,7 @@ public class ReflectionUtil {
     }
 
     /*
-     * This class duplicates code in javax.el.Util. When making changes keep
+     * This class duplicates code in jakarta.el.Util. When making changes keep
      * the code in sync.
      */
     private static Method resolveAmbiguousMethod(Set<Method> candidates,
@@ -365,7 +365,7 @@ public class ReflectionUtil {
 
 
     /*
-     * This class duplicates code in javax.el.Util. When making changes keep
+     * This class duplicates code in jakarta.el.Util. When making changes keep
      * the code in sync.
      */
     private static boolean isAssignableFrom(Class<?> src, Class<?> target) {
@@ -403,7 +403,7 @@ public class ReflectionUtil {
 
 
     /*
-     * This class duplicates code in javax.el.Util. When making changes keep
+     * This class duplicates code in jakarta.el.Util. When making changes keep
      * the code in sync.
      */
     private static boolean isCoercibleFrom(EvaluationContext ctx, Object src, Class<?> target) {
@@ -419,7 +419,7 @@ public class ReflectionUtil {
 
 
     /*
-     * This class duplicates code in javax.el.Util. When making changes keep
+     * This class duplicates code in jakarta.el.Util. When making changes keep
      * the code in sync.
      */
     private static Method getMethod(Class<?> type, Object base, Method m) {
@@ -501,7 +501,7 @@ public class ReflectionUtil {
 
 
     /*
-     * This class duplicates code in javax.el.Util. When making changes keep
+     * This class duplicates code in jakarta.el.Util. When making changes keep
      * the code in sync.
      */
     private static class MatchResult implements Comparable<MatchResult> {
diff --git a/java/org/apache/jasper/compiler/Generator.java b/java/org/apache/jasper/compiler/Generator.java
index 02492ee..f156d18 100644
--- a/java/org/apache/jasper/compiler/Generator.java
+++ b/java/org/apache/jasper/compiler/Generator.java
@@ -41,13 +41,14 @@ import java.util.Set;
 import java.util.TimeZone;
 import java.util.Vector;
 
-import javax.el.MethodExpression;
-import javax.el.ValueExpression;
 import javax.servlet.jsp.tagext.TagAttributeInfo;
 import javax.servlet.jsp.tagext.TagInfo;
 import javax.servlet.jsp.tagext.TagVariableInfo;
 import javax.servlet.jsp.tagext.VariableInfo;
 
+import jakarta.el.MethodExpression;
+import jakarta.el.ValueExpression;
+
 import org.apache.el.util.JreCompat;
 import org.apache.jasper.Constants;
 import org.apache.jasper.JasperException;
@@ -431,7 +432,7 @@ class Generator {
      * ServletConfig is not readily available.
      */
     private void generateGetters() {
-        out.printil("public javax.el.ExpressionFactory _jsp_getExpressionFactory() {");
+        out.printil("public jakarta.el.ExpressionFactory _jsp_getExpressionFactory() {");
         out.pushIndent();
         if (!ctxt.isTagFile()) {
             out.printin("if (");
@@ -678,7 +679,7 @@ class Generator {
             }
             out.println();
         }
-        out.printin("private volatile javax.el.ExpressionFactory ");
+        out.printin("private volatile jakarta.el.ExpressionFactory ");
         out.print(VAR_EXPRESSIONFACTORY);
         out.println(";");
         out.printin("private volatile org.apache.tomcat.InstanceManager ");
@@ -4043,11 +4044,11 @@ class Generator {
 
                 // we need to scope the modified VariableMapper for consistency and performance
                 if (!variableMapperVar) {
-                    out.printil("javax.el.VariableMapper _el_variablemapper = jspContext.getELContext().getVariableMapper();");
+                    out.printil("jakarta.el.VariableMapper _el_variablemapper = jspContext.getELContext().getVariableMapper();");
                     variableMapperVar = true;
                 }
 
-                out.printin("javax.el.ValueExpression _el_ve");
+                out.printin("jakarta.el.ValueExpression _el_ve");
                 out.print(i);
                 out.print(" = _el_variablemapper.setVariable(");
                 out.print(quote(attrName));
@@ -4055,7 +4056,7 @@ class Generator {
                 if (attrInfos[i].isDeferredMethod()) {
                     out.print("_jsp_getExpressionFactory().createValueExpression(");
                     out.print(toGetterMethod(attrName));
-                    out.print(",javax.el.MethodExpression.class)");
+                    out.print(",jakarta.el.MethodExpression.class)");
                 } else {
                     out.print(toGetterMethod(attrName));
                 }
diff --git a/java/org/apache/jasper/compiler/Node.java b/java/org/apache/jasper/compiler/Node.java
index 687b19c..14aeb6a 100644
--- a/java/org/apache/jasper/compiler/Node.java
+++ b/java/org/apache/jasper/compiler/Node.java
@@ -20,9 +20,6 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Vector;
 
-import javax.el.ELContext;
-import javax.el.ELException;
-import javax.el.ExpressionFactory;
 import javax.servlet.jsp.tagext.BodyTag;
 import javax.servlet.jsp.tagext.DynamicAttributes;
 import javax.servlet.jsp.tagext.IterationTag;
@@ -36,6 +33,10 @@ import javax.servlet.jsp.tagext.TagVariableInfo;
 import javax.servlet.jsp.tagext.TryCatchFinally;
 import javax.servlet.jsp.tagext.VariableInfo;
 
+import jakarta.el.ELContext;
+import jakarta.el.ELException;
+import jakarta.el.ExpressionFactory;
+
 import org.apache.jasper.Constants;
 import org.apache.jasper.JasperException;
 import org.apache.jasper.compiler.tagplugin.TagPluginContext;
diff --git a/java/org/apache/jasper/compiler/PageInfo.java b/java/org/apache/jasper/compiler/PageInfo.java
index 9aed5ba..59c6038 100644
--- a/java/org/apache/jasper/compiler/PageInfo.java
+++ b/java/org/apache/jasper/compiler/PageInfo.java
@@ -25,9 +25,10 @@ import java.util.Map;
 import java.util.Set;
 import java.util.Vector;
 
-import javax.el.ExpressionFactory;
 import javax.servlet.jsp.tagext.TagLibraryInfo;
 
+import jakarta.el.ExpressionFactory;
+
 import org.apache.jasper.Constants;
 import org.apache.jasper.JasperException;
 
diff --git a/java/org/apache/jasper/compiler/TagFileProcessor.java b/java/org/apache/jasper/compiler/TagFileProcessor.java
index 3b3300d..01224c5 100644
--- a/java/org/apache/jasper/compiler/TagFileProcessor.java
+++ b/java/org/apache/jasper/compiler/TagFileProcessor.java
@@ -23,8 +23,6 @@ import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Vector;
 
-import javax.el.MethodExpression;
-import javax.el.ValueExpression;
 import javax.servlet.jsp.tagext.TagAttributeInfo;
 import javax.servlet.jsp.tagext.TagFileInfo;
 import javax.servlet.jsp.tagext.TagInfo;
@@ -32,6 +30,9 @@ import javax.servlet.jsp.tagext.TagLibraryInfo;
 import javax.servlet.jsp.tagext.TagVariableInfo;
 import javax.servlet.jsp.tagext.VariableInfo;
 
+import jakarta.el.MethodExpression;
+import jakarta.el.ValueExpression;
+
 import org.apache.jasper.JasperException;
 import org.apache.jasper.JspCompilationContext;
 import org.apache.jasper.runtime.JspSourceDependent;
diff --git a/java/org/apache/jasper/compiler/Validator.java b/java/org/apache/jasper/compiler/Validator.java
index cb476a3..0208041 100644
--- a/java/org/apache/jasper/compiler/Validator.java
+++ b/java/org/apache/jasper/compiler/Validator.java
@@ -28,9 +28,6 @@ import java.util.Map;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import javax.el.ELException;
-import javax.el.ExpressionFactory;
-import javax.el.FunctionMapper;
 import javax.servlet.jsp.JspFactory;
 import javax.servlet.jsp.tagext.FunctionInfo;
 import javax.servlet.jsp.tagext.PageData;
@@ -41,6 +38,10 @@ import javax.servlet.jsp.tagext.TagInfo;
 import javax.servlet.jsp.tagext.TagLibraryInfo;
 import javax.servlet.jsp.tagext.ValidationMessage;
 
+import jakarta.el.ELException;
+import jakarta.el.ExpressionFactory;
+import jakarta.el.FunctionMapper;
+
 import org.apache.jasper.JasperException;
 import org.apache.jasper.compiler.ELNode.Text;
 import org.apache.jasper.el.ELContextImpl;
diff --git a/java/org/apache/jasper/el/ELContextImpl.java b/java/org/apache/jasper/el/ELContextImpl.java
index f2e2267..273c1f1 100644
--- a/java/org/apache/jasper/el/ELContextImpl.java
+++ b/java/org/apache/jasper/el/ELContextImpl.java
@@ -20,20 +20,20 @@ import java.lang.reflect.Method;
 import java.util.HashMap;
 import java.util.Map;
 
-import javax.el.ArrayELResolver;
-import javax.el.BeanELResolver;
-import javax.el.CompositeELResolver;
-import javax.el.ELContext;
-import javax.el.ELManager;
-import javax.el.ELResolver;
-import javax.el.ExpressionFactory;
-import javax.el.FunctionMapper;
-import javax.el.ListELResolver;
-import javax.el.MapELResolver;
-import javax.el.ResourceBundleELResolver;
-import javax.el.StaticFieldELResolver;
-import javax.el.ValueExpression;
-import javax.el.VariableMapper;
+import jakarta.el.ArrayELResolver;
+import jakarta.el.BeanELResolver;
+import jakarta.el.CompositeELResolver;
+import jakarta.el.ELContext;
+import jakarta.el.ELManager;
+import jakarta.el.ELResolver;
+import jakarta.el.ExpressionFactory;
+import jakarta.el.FunctionMapper;
+import jakarta.el.ListELResolver;
+import jakarta.el.MapELResolver;
+import jakarta.el.ResourceBundleELResolver;
+import jakarta.el.StaticFieldELResolver;
+import jakarta.el.ValueExpression;
+import jakarta.el.VariableMapper;
 
 import org.apache.jasper.Constants;
 
diff --git a/java/org/apache/jasper/el/ELContextWrapper.java b/java/org/apache/jasper/el/ELContextWrapper.java
index 8c18293..7c5abcb 100644
--- a/java/org/apache/jasper/el/ELContextWrapper.java
+++ b/java/org/apache/jasper/el/ELContextWrapper.java
@@ -18,10 +18,10 @@ package org.apache.jasper.el;
 
 import java.util.Locale;
 
-import javax.el.ELContext;
-import javax.el.ELResolver;
-import javax.el.FunctionMapper;
-import javax.el.VariableMapper;
+import jakarta.el.ELContext;
+import jakarta.el.ELResolver;
+import jakarta.el.FunctionMapper;
+import jakarta.el.VariableMapper;
 
 /**
  * Simple ELContextWrapper for runtime evaluation of EL w/ dynamic FunctionMappers
diff --git a/java/org/apache/jasper/el/ELResolverImpl.java b/java/org/apache/jasper/el/ELResolverImpl.java
index 3a143a3..00001ac 100644
--- a/java/org/apache/jasper/el/ELResolverImpl.java
+++ b/java/org/apache/jasper/el/ELResolverImpl.java
@@ -20,13 +20,14 @@ package org.apache.jasper.el;
 import java.util.Iterator;
 import java.util.Objects;
 
-import javax.el.ELContext;
-import javax.el.ELException;
-import javax.el.ELResolver;
-import javax.el.ExpressionFactory;
-import javax.el.PropertyNotWritableException;
 import javax.servlet.jsp.el.VariableResolver;
 
+import jakarta.el.ELContext;
+import jakarta.el.ELException;
+import jakarta.el.ELResolver;
+import jakarta.el.ExpressionFactory;
+import jakarta.el.PropertyNotWritableException;
+
 @Deprecated
 public final class ELResolverImpl extends ELResolver {
 
diff --git a/java/org/apache/jasper/el/ExpressionEvaluatorImpl.java b/java/org/apache/jasper/el/ExpressionEvaluatorImpl.java
index 0a2a8a7..3c48c4b 100644
--- a/java/org/apache/jasper/el/ExpressionEvaluatorImpl.java
+++ b/java/org/apache/jasper/el/ExpressionEvaluatorImpl.java
@@ -16,8 +16,6 @@
  */
 package org.apache.jasper.el;
 
-import javax.el.ExpressionFactory;
-import javax.el.ValueExpression;
 import javax.servlet.jsp.el.ELException;
 import javax.servlet.jsp.el.ELParseException;
 import javax.servlet.jsp.el.Expression;
@@ -25,6 +23,9 @@ import javax.servlet.jsp.el.ExpressionEvaluator;
 import javax.servlet.jsp.el.FunctionMapper;
 import javax.servlet.jsp.el.VariableResolver;
 
+import jakarta.el.ExpressionFactory;
+import jakarta.el.ValueExpression;
+
 @Deprecated
 public final class ExpressionEvaluatorImpl extends ExpressionEvaluator {
 
@@ -46,7 +47,7 @@ public final class ExpressionEvaluatorImpl extends ExpressionEvaluator {
             }
             ValueExpression ve = this.factory.createValueExpression(ctx, expression, expectedType);
             return new ExpressionImpl(ve, factory);
-        } catch (javax.el.ELException e) {
+        } catch (jakarta.el.ELException e) {
             throw new ELParseException(e.getMessage());
         }
     }
diff --git a/java/org/apache/jasper/el/ExpressionImpl.java b/java/org/apache/jasper/el/ExpressionImpl.java
index 85e9ff3..a607da0 100644
--- a/java/org/apache/jasper/el/ExpressionImpl.java
+++ b/java/org/apache/jasper/el/ExpressionImpl.java
@@ -16,13 +16,14 @@
  */
 package org.apache.jasper.el;
 
-import javax.el.ELContext;
-import javax.el.ExpressionFactory;
-import javax.el.ValueExpression;
 import javax.servlet.jsp.el.ELException;
 import javax.servlet.jsp.el.Expression;
 import javax.servlet.jsp.el.VariableResolver;
 
+import jakarta.el.ELContext;
+import jakarta.el.ExpressionFactory;
+import jakarta.el.ValueExpression;
+
 @Deprecated
 public final class ExpressionImpl extends Expression {
 
diff --git a/java/org/apache/jasper/el/FunctionMapperImpl.java b/java/org/apache/jasper/el/FunctionMapperImpl.java
index 93c9cd3..c8d45d7 100644
--- a/java/org/apache/jasper/el/FunctionMapperImpl.java
+++ b/java/org/apache/jasper/el/FunctionMapperImpl.java
@@ -21,7 +21,7 @@ import java.lang.reflect.Method;
 import javax.servlet.jsp.el.FunctionMapper;
 
 @Deprecated
-public final class FunctionMapperImpl extends javax.el.FunctionMapper {
+public final class FunctionMapperImpl extends jakarta.el.FunctionMapper {
 
     private final FunctionMapper fnMapper;
 
diff --git a/java/org/apache/jasper/el/JasperELResolver.java b/java/org/apache/jasper/el/JasperELResolver.java
index 99189807..2b04ffc 100644
--- a/java/org/apache/jasper/el/JasperELResolver.java
+++ b/java/org/apache/jasper/el/JasperELResolver.java
@@ -23,20 +23,21 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.concurrent.atomic.AtomicInteger;
 
-import javax.el.ArrayELResolver;
-import javax.el.BeanELResolver;
-import javax.el.CompositeELResolver;
-import javax.el.ELContext;
-import javax.el.ELException;
-import javax.el.ELResolver;
-import javax.el.ListELResolver;
-import javax.el.MapELResolver;
-import javax.el.PropertyNotFoundException;
-import javax.el.ResourceBundleELResolver;
-import javax.el.StaticFieldELResolver;
 import javax.servlet.jsp.el.ImplicitObjectELResolver;
 import javax.servlet.jsp.el.ScopedAttributeELResolver;
 
+import jakarta.el.ArrayELResolver;
+import jakarta.el.BeanELResolver;
+import jakarta.el.CompositeELResolver;
+import jakarta.el.ELContext;
+import jakarta.el.ELException;
+import jakarta.el.ELResolver;
+import jakarta.el.ListELResolver;
+import jakarta.el.MapELResolver;
+import jakarta.el.PropertyNotFoundException;
+import jakarta.el.ResourceBundleELResolver;
+import jakarta.el.StaticFieldELResolver;
+
 import org.apache.jasper.runtime.ExceptionUtils;
 import org.apache.jasper.runtime.JspRuntimeLibrary;
 
diff --git a/java/org/apache/jasper/el/JspELException.java b/java/org/apache/jasper/el/JspELException.java
index a7651ff..a881dd3 100644
--- a/java/org/apache/jasper/el/JspELException.java
+++ b/java/org/apache/jasper/el/JspELException.java
@@ -16,7 +16,7 @@
  */
 package org.apache.jasper.el;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 public class JspELException extends ELException {
 
diff --git a/java/org/apache/jasper/el/JspMethodExpression.java b/java/org/apache/jasper/el/JspMethodExpression.java
index ca6a384..820f21c 100644
--- a/java/org/apache/jasper/el/JspMethodExpression.java
+++ b/java/org/apache/jasper/el/JspMethodExpression.java
@@ -21,12 +21,12 @@ import java.io.IOException;
 import java.io.ObjectInput;
 import java.io.ObjectOutput;
 
-import javax.el.ELContext;
-import javax.el.ELException;
-import javax.el.MethodExpression;
-import javax.el.MethodInfo;
-import javax.el.MethodNotFoundException;
-import javax.el.PropertyNotFoundException;
+import jakarta.el.ELContext;
+import jakarta.el.ELException;
+import jakarta.el.MethodExpression;
+import jakarta.el.MethodInfo;
+import jakarta.el.MethodNotFoundException;
+import jakarta.el.PropertyNotFoundException;
 
 public final class JspMethodExpression extends MethodExpression implements
         Externalizable {
diff --git a/java/org/apache/jasper/el/JspMethodNotFoundException.java b/java/org/apache/jasper/el/JspMethodNotFoundException.java
index 886d82c..2827b19 100644
--- a/java/org/apache/jasper/el/JspMethodNotFoundException.java
+++ b/java/org/apache/jasper/el/JspMethodNotFoundException.java
@@ -16,7 +16,7 @@
  */
 package org.apache.jasper.el;
 
-import javax.el.MethodNotFoundException;
+import jakarta.el.MethodNotFoundException;
 
 public class JspMethodNotFoundException extends MethodNotFoundException {
 
diff --git a/java/org/apache/jasper/el/JspPropertyNotFoundException.java b/java/org/apache/jasper/el/JspPropertyNotFoundException.java
index 3482d99..4217449 100644
--- a/java/org/apache/jasper/el/JspPropertyNotFoundException.java
+++ b/java/org/apache/jasper/el/JspPropertyNotFoundException.java
@@ -16,7 +16,7 @@
  */
 package org.apache.jasper.el;
 
-import javax.el.PropertyNotFoundException;
+import jakarta.el.PropertyNotFoundException;
 
 public final class JspPropertyNotFoundException extends
         PropertyNotFoundException {
diff --git a/java/org/apache/jasper/el/JspPropertyNotWritableException.java b/java/org/apache/jasper/el/JspPropertyNotWritableException.java
index 0e2c169..38bde63 100644
--- a/java/org/apache/jasper/el/JspPropertyNotWritableException.java
+++ b/java/org/apache/jasper/el/JspPropertyNotWritableException.java
@@ -16,7 +16,7 @@
  */
 package org.apache.jasper.el;
 
-import javax.el.PropertyNotWritableException;
+import jakarta.el.PropertyNotWritableException;
 
 public class JspPropertyNotWritableException extends
         PropertyNotWritableException {
diff --git a/java/org/apache/jasper/el/JspValueExpression.java b/java/org/apache/jasper/el/JspValueExpression.java
index 6030c18..9fbea5f 100644
--- a/java/org/apache/jasper/el/JspValueExpression.java
+++ b/java/org/apache/jasper/el/JspValueExpression.java
@@ -21,11 +21,11 @@ import java.io.IOException;
 import java.io.ObjectInput;
 import java.io.ObjectOutput;
 
-import javax.el.ELContext;
-import javax.el.ELException;
-import javax.el.PropertyNotFoundException;
-import javax.el.PropertyNotWritableException;
-import javax.el.ValueExpression;
+import jakarta.el.ELContext;
+import jakarta.el.ELException;
+import jakarta.el.PropertyNotFoundException;
+import jakarta.el.PropertyNotWritableException;
+import jakarta.el.ValueExpression;
 
 /**
  * Wrapper for providing context to ValueExpressions
diff --git a/java/org/apache/jasper/el/VariableResolverImpl.java b/java/org/apache/jasper/el/VariableResolverImpl.java
index 57e0da9..b6eaa82 100644
--- a/java/org/apache/jasper/el/VariableResolverImpl.java
+++ b/java/org/apache/jasper/el/VariableResolverImpl.java
@@ -16,10 +16,11 @@
  */
 package org.apache.jasper.el;
 
-import javax.el.ELContext;
 import javax.servlet.jsp.el.ELException;
 import javax.servlet.jsp.el.VariableResolver;
 
+import jakarta.el.ELContext;
+
 @Deprecated
 public final class VariableResolverImpl implements VariableResolver {
 
diff --git a/java/org/apache/jasper/runtime/JspApplicationContextImpl.java b/java/org/apache/jasper/runtime/JspApplicationContextImpl.java
index f779b1b..c0b89d2 100644
--- a/java/org/apache/jasper/runtime/JspApplicationContextImpl.java
+++ b/java/org/apache/jasper/runtime/JspApplicationContextImpl.java
@@ -21,16 +21,17 @@ import java.security.PrivilegedAction;
 import java.util.ArrayList;
 import java.util.List;
 
-import javax.el.CompositeELResolver;
-import javax.el.ELContext;
-import javax.el.ELContextEvent;
-import javax.el.ELContextListener;
-import javax.el.ELResolver;
-import javax.el.ExpressionFactory;
 import javax.servlet.ServletContext;
 import javax.servlet.jsp.JspApplicationContext;
 import javax.servlet.jsp.JspContext;
 
+import jakarta.el.CompositeELResolver;
+import jakarta.el.ELContext;
+import jakarta.el.ELContextEvent;
+import jakarta.el.ELContextListener;
+import jakarta.el.ELResolver;
+import jakarta.el.ExpressionFactory;
+
 import org.apache.jasper.Constants;
 import org.apache.jasper.compiler.Localizer;
 import org.apache.jasper.el.ELContextImpl;
diff --git a/java/org/apache/jasper/runtime/JspContextWrapper.java b/java/org/apache/jasper/runtime/JspContextWrapper.java
index 765edf3..1bda259 100644
--- a/java/org/apache/jasper/runtime/JspContextWrapper.java
+++ b/java/org/apache/jasper/runtime/JspContextWrapper.java
@@ -28,12 +28,6 @@ import java.util.Locale;
 import java.util.Map;
 import java.util.Set;
 
-import javax.el.ELContext;
-import javax.el.ELResolver;
-import javax.el.EvaluationListener;
-import javax.el.FunctionMapper;
-import javax.el.ImportHandler;
-import javax.el.VariableMapper;
 import javax.servlet.Servlet;
 import javax.servlet.ServletConfig;
 import javax.servlet.ServletContext;
@@ -53,6 +47,13 @@ import javax.servlet.jsp.tagext.BodyContent;
 import javax.servlet.jsp.tagext.JspTag;
 import javax.servlet.jsp.tagext.VariableInfo;
 
+import jakarta.el.ELContext;
+import jakarta.el.ELResolver;
+import jakarta.el.EvaluationListener;
+import jakarta.el.FunctionMapper;
+import jakarta.el.ImportHandler;
+import jakarta.el.VariableMapper;
+
 import org.apache.jasper.compiler.Localizer;
 
 /**
diff --git a/java/org/apache/jasper/runtime/PageContextImpl.java b/java/org/apache/jasper/runtime/PageContextImpl.java
index ddb3ef4..0aa46f6 100644
--- a/java/org/apache/jasper/runtime/PageContextImpl.java
+++ b/java/org/apache/jasper/runtime/PageContextImpl.java
@@ -25,11 +25,6 @@ import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.Set;
 
-import javax.el.ELContext;
-import javax.el.ELException;
-import javax.el.ExpressionFactory;
-import javax.el.ImportHandler;
-import javax.el.ValueExpression;
 import javax.servlet.RequestDispatcher;
 import javax.servlet.Servlet;
 import javax.servlet.ServletConfig;
@@ -46,6 +41,12 @@ import javax.servlet.jsp.JspWriter;
 import javax.servlet.jsp.PageContext;
 import javax.servlet.jsp.tagext.BodyContent;
 
+import jakarta.el.ELContext;
+import jakarta.el.ELException;
+import jakarta.el.ExpressionFactory;
+import jakarta.el.ImportHandler;
+import jakarta.el.ValueExpression;
+
 import org.apache.jasper.Constants;
 import org.apache.jasper.compiler.Localizer;
 import org.apache.jasper.el.ELContextImpl;
diff --git a/java/org/apache/jasper/runtime/ProtectedFunctionMapper.java b/java/org/apache/jasper/runtime/ProtectedFunctionMapper.java
index 2f354b6..59a6d7a 100644
--- a/java/org/apache/jasper/runtime/ProtectedFunctionMapper.java
+++ b/java/org/apache/jasper/runtime/ProtectedFunctionMapper.java
@@ -30,7 +30,7 @@ import javax.servlet.jsp.el.FunctionMapper;
  * @author Kin-man Chung
  */
 @SuppressWarnings("deprecation") // Have to support old JSP EL API
-public final class ProtectedFunctionMapper extends javax.el.FunctionMapper
+public final class ProtectedFunctionMapper extends jakarta.el.FunctionMapper
         implements FunctionMapper {
 
     /**
diff --git a/java/org/apache/tomcat/util/descriptor/tld/TldRuleSet.java b/java/org/apache/tomcat/util/descriptor/tld/TldRuleSet.java
index f298fd3..3607e5e 100644
--- a/java/org/apache/tomcat/util/descriptor/tld/TldRuleSet.java
+++ b/java/org/apache/tomcat/util/descriptor/tld/TldRuleSet.java
@@ -252,12 +252,12 @@ public class TldRuleSet implements RuleSet {
                 type = "javax.servlet.jsp.tagext.JspFragment";
                 requestTime = true;
             } else if (deferredValue) {
-                type = "javax.el.ValueExpression";
+                type = "jakarta.el.ValueExpression";
                 if (expectedTypeName == null) {
                     expectedTypeName = "java.lang.Object";
                 }
             } else if (deferredMethod) {
-                type = "javax.el.MethodExpression";
+                type = "jakarta.el.MethodExpression";
                 if (methodSignature == null) {
                     methodSignature = "java.lang.Object method()";
                 }
diff --git a/modules/cxf/pom.xml b/modules/cxf/pom.xml
index 7bfff9a..2015ff0 100644
--- a/modules/cxf/pom.xml
+++ b/modules/cxf/pom.xml
@@ -126,7 +126,7 @@
                                 <excludes>
                                     <!-- Already present in Tomcat or in the CDI bundle -->
                                     <exclude>jakarta.annotation:jakarta.annotation-api</exclude>
-									<exclude>javax.el:*</exclude>
+									<exclude>jakarta.el:*</exclude>
 									<exclude>javax.enterprise:cdi-api</exclude>
 									<exclude>javax.inject:*</exclude>
 									<exclude>javax.interceptor:*</exclude>
diff --git a/res/META-INF/el-api.jar.manifest b/res/META-INF/el-api.jar.manifest
index 4ff0991..63a6728 100644
--- a/res/META-INF/el-api.jar.manifest
+++ b/res/META-INF/el-api.jar.manifest
@@ -2,10 +2,10 @@ Manifest-version: 1.0
 X-Compile-Source-JDK: @source.jdk@
 X-Compile-Target-JDK: @target.jdk@
 
-Name: javax/el/
+Name: jakarta/el/
 Specification-Title: Expression Language
 Specification-Version: 3.0
 Specification-Vendor: Sun Microsystems, Inc.
-Implementation-Title: javax.el
+Implementation-Title: jakarta.el
 Implementation-Version: 3.0.@el.revision@
 Implementation-Vendor: Apache Software Foundation
diff --git a/res/bnd/el-api.jar.tmp.bnd b/res/bnd/el-api.jar.tmp.bnd
index daa49f4..ba8b981 100644
--- a/res/bnd/el-api.jar.tmp.bnd
+++ b/res/bnd/el-api.jar.tmp.bnd
@@ -15,4 +15,4 @@
 Bundle-Name: tomcat-el-api
 Bundle-SymbolicName: org.apache.tomcat-el-api
 Bundle-Version: @VERSION@
-Export-Package: javax.el
\ No newline at end of file
+Export-Package: jakarta.el
\ No newline at end of file
diff --git a/res/bnd/tomcat-embed-el.jar.tmp.bnd b/res/bnd/tomcat-embed-el.jar.tmp.bnd
index 8b83d18..f01f731 100644
--- a/res/bnd/tomcat-embed-el.jar.tmp.bnd
+++ b/res/bnd/tomcat-embed-el.jar.tmp.bnd
@@ -17,7 +17,7 @@ Bundle-Name: tomcat-embed-jasper-el
 Bundle-SymbolicName: org.apache.tomcat-embed-jasper-el
 Bundle-Version: @VERSION@
 Export-Package: \
-    javax.el,\
+    jakarta.el,\
     org.apache.el,\
     org.apache.el.lang,\
     org.apache.el.parser
\ No newline at end of file
diff --git a/res/checkstyle/jakarta-import-control.xml b/res/checkstyle/jakarta-import-control.xml
index 580ce0e..0acf63d 100644
--- a/res/checkstyle/jakarta-import-control.xml
+++ b/res/checkstyle/jakarta-import-control.xml
@@ -27,5 +27,7 @@
   <subpackage name="ejb">
     <allow pkg="jakarta.ejb"/>
   </subpackage>
-
+  <subpackage name="el">
+    <allow pkg="jakarta.el"/>
+  </subpackage>
 </import-control>
\ No newline at end of file
diff --git a/res/checkstyle/javax-import-control.xml b/res/checkstyle/javax-import-control.xml
index b6faa80..b843edd 100644
--- a/res/checkstyle/javax-import-control.xml
+++ b/res/checkstyle/javax-import-control.xml
@@ -21,9 +21,6 @@
 
 <import-control pkg="javax">
   <allow pkg="java"/>
-  <subpackage name="el">
-    <allow pkg="javax.el"/>
-  </subpackage>
   <subpackage name="mail">
     <allow pkg="javax.mail"/>
   </subpackage>
@@ -55,7 +52,7 @@
     <allow pkg="javax.servlet"/>
     <disallow pkg="javax.servlet.jsp" local-only="true"/>
     <subpackage name="jsp">
-      <allow pkg="javax.el"/>
+      <allow pkg="jakarta.el"/>
       <allow pkg="javax.servlet.jsp"/>
     </subpackage>
   </subpackage>
diff --git a/res/checkstyle/org-import-control.xml b/res/checkstyle/org-import-control.xml
index 83605cd..df2f563 100644
--- a/res/checkstyle/org-import-control.xml
+++ b/res/checkstyle/org-import-control.xml
@@ -98,11 +98,11 @@
     <allow pkg="org.apache.tomcat.util"/>
   </subpackage>
   <subpackage name="el">
-    <allow pkg="javax.el"/>
+    <allow pkg="jakarta.el"/>
     <allow pkg="org.apache.el"/>
   </subpackage>
   <subpackage name="jasper">
-    <allow pkg="javax.el"/>
+    <allow pkg="jakarta.el"/>
     <allow pkg="javax.servlet"/>
     <allow pkg="org.apache.el"/>
     <allow pkg="org.apache.jasper"/>
diff --git a/res/findbugs/filter-false-positives.xml b/res/findbugs/filter-false-positives.xml
index cefc6fe..b407d71 100644
--- a/res/findbugs/filter-false-positives.xml
+++ b/res/findbugs/filter-false-positives.xml
@@ -18,7 +18,7 @@
   <!--  Considered to be false positives -->
   <Match>
     <!-- Only base null is handled by this resolver -->
-    <Class name="javax.el.BeanNameELResolver"/>
+    <Class name="jakarta.el.BeanNameELResolver"/>
     <Or>
       <Method name="getType" />
       <Method name="getValue" />
@@ -1579,7 +1579,7 @@
   <!-- Test code -->
   <Match>
     <!-- Code is deliberately unused -->
-    <Class name="javax.el.TestImportHandler" />
+    <Class name="jakarta.el.TestImportHandler" />
     <Method name="testImportPackage01_57574"/>
     <Bug pattern="UC_USELESS_OBJECT"/>
   </Match>
diff --git a/res/tomcat-maven/tomcat-resource.json b/res/tomcat-maven/tomcat-resource.json
index ad3b13e..3a1e030 100644
--- a/res/tomcat-maven/tomcat-resource.json
+++ b/res/tomcat-maven/tomcat-resource.json
@@ -1,6 +1,6 @@
 {
   "bundles":[
-    {"name":"javax.el.LocalStrings"},
+    {"name":"jakarta.el.LocalStrings"},
     {"name":"javax.servlet.LocalStrings"},
     {"name":"javax.servlet.http.LocalStrings"},
     {"name":"org.apache.catalina.authenticator.LocalStrings"},
diff --git a/test/javax/el/TestArrayELResolver.java b/test/jakarta/el/TestArrayELResolver.java
similarity index 99%
rename from test/javax/el/TestArrayELResolver.java
rename to test/jakarta/el/TestArrayELResolver.java
index 1280fb1..80aaf43 100644
--- a/test/javax/el/TestArrayELResolver.java
+++ b/test/jakarta/el/TestArrayELResolver.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.el;
+package jakarta.el;
 
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/test/javax/el/TestBeanELResolver.java b/test/jakarta/el/TestBeanELResolver.java
similarity index 99%
rename from test/javax/el/TestBeanELResolver.java
rename to test/jakarta/el/TestBeanELResolver.java
index 7bd9bce..a1bf5a3 100644
--- a/test/javax/el/TestBeanELResolver.java
+++ b/test/jakarta/el/TestBeanELResolver.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.el;
+package jakarta.el;
 
 import java.beans.FeatureDescriptor;
 import java.beans.PropertyDescriptor;
diff --git a/test/javax/el/TestBeanELResolverVarargsInvocation.java b/test/jakarta/el/TestBeanELResolverVarargsInvocation.java
similarity index 99%
rename from test/javax/el/TestBeanELResolverVarargsInvocation.java
rename to test/jakarta/el/TestBeanELResolverVarargsInvocation.java
index 7c1dec3..926b251 100644
--- a/test/javax/el/TestBeanELResolverVarargsInvocation.java
+++ b/test/jakarta/el/TestBeanELResolverVarargsInvocation.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.el;
+package jakarta.el;
 
 import java.lang.reflect.Method;
 import java.util.HashMap;
diff --git a/test/javax/el/TestBeanNameELResolver.java b/test/jakarta/el/TestBeanNameELResolver.java
similarity index 99%
rename from test/javax/el/TestBeanNameELResolver.java
rename to test/jakarta/el/TestBeanNameELResolver.java
index f5ea30f..f80455e 100644
--- a/test/javax/el/TestBeanNameELResolver.java
+++ b/test/jakarta/el/TestBeanNameELResolver.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.el;
+package jakarta.el;
 
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/test/javax/el/TestCompositeELResolver.java b/test/jakarta/el/TestCompositeELResolver.java
similarity index 98%
rename from test/javax/el/TestCompositeELResolver.java
rename to test/jakarta/el/TestCompositeELResolver.java
index a4485ff..d2bbc37 100644
--- a/test/javax/el/TestCompositeELResolver.java
+++ b/test/jakarta/el/TestCompositeELResolver.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.el;
+package jakarta.el;
 
 import javax.servlet.http.HttpServletResponse;
 
diff --git a/test/javax/el/TestELContext.java b/test/jakarta/el/TestELContext.java
similarity index 98%
rename from test/javax/el/TestELContext.java
rename to test/jakarta/el/TestELContext.java
index ce9f257..0abd30c 100644
--- a/test/javax/el/TestELContext.java
+++ b/test/jakarta/el/TestELContext.java
@@ -14,11 +14,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.el;
+package jakarta.el;
 
 import java.util.List;
 
-import javax.el.TesterEvaluationListener.Pair;
+import jakarta.el.TesterEvaluationListener.Pair;
 
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/test/javax/el/TestELProcessor.java b/test/jakarta/el/TestELProcessor.java
similarity index 86%
rename from test/javax/el/TestELProcessor.java
rename to test/jakarta/el/TestELProcessor.java
index 4d3a146..4bf6673 100644
--- a/test/javax/el/TestELProcessor.java
+++ b/test/jakarta/el/TestELProcessor.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.el;
+package jakarta.el;
 
 import org.junit.Assert;
 import org.junit.Test;
@@ -85,7 +85,7 @@ public class TestELProcessor {
     public void testDefineFunctionName03() throws Exception {
         TesterFunctions.resetCallList();
         ELProcessor elp = new ELProcessor();
-        elp.defineFunction("fn", "test", "javax.el.TesterFunctions", "void doIt()");
+        elp.defineFunction("fn", "test", "jakarta.el.TesterFunctions", "void doIt()");
         elp.eval("fn:test()");
         Assert.assertEquals("A", TesterFunctions.getCallList());
     }
@@ -95,7 +95,7 @@ public class TestELProcessor {
     public void testDefineFunctionName04() throws Exception {
         TesterFunctions.resetCallList();
         ELProcessor elp = new ELProcessor();
-        elp.defineFunction("fn", "test", "javax.el.TesterFunctions", "void doIt(int)");
+        elp.defineFunction("fn", "test", "jakarta.el.TesterFunctions", "void doIt(int)");
         elp.eval("fn:test(5)");
         Assert.assertEquals("B", TesterFunctions.getCallList());
     }
@@ -105,7 +105,7 @@ public class TestELProcessor {
     public void testDefineFunctionName05() throws Exception {
         TesterFunctions.resetCallList();
         ELProcessor elp = new ELProcessor();
-        elp.defineFunction("fn", "test", "javax.el.TesterFunctions", "void doIt(Integer)");
+        elp.defineFunction("fn", "test", "jakarta.el.TesterFunctions", "void doIt(Integer)");
         elp.eval("fn:test(null)");
         Assert.assertEquals("C", TesterFunctions.getCallList());
     }
@@ -115,7 +115,7 @@ public class TestELProcessor {
     public void testDefineFunctionName06() throws Exception {
         TesterFunctions.resetCallList();
         ELProcessor elp = new ELProcessor();
-        elp.defineFunction("", "", "javax.el.TesterFunctions", "void doIt(int)");
+        elp.defineFunction("", "", "jakarta.el.TesterFunctions", "void doIt(int)");
         elp.eval("doIt(5)");
         Assert.assertEquals("B", TesterFunctions.getCallList());
     }
@@ -125,7 +125,7 @@ public class TestELProcessor {
     public void testDefineFunctionName07() throws Exception {
         TesterFunctions.resetCallList();
         ELProcessor elp = new ELProcessor();
-        elp.defineFunction("fn", "", "javax.el.TesterFunctions", "void doIt(int)");
+        elp.defineFunction("fn", "", "jakarta.el.TesterFunctions", "void doIt(int)");
         elp.eval("fn:doIt(5)");
         Assert.assertEquals("B", TesterFunctions.getCallList());
     }
@@ -135,7 +135,7 @@ public class TestELProcessor {
     public void testDefineFunctionName08() throws Exception {
         TesterFunctions.resetCallList();
         ELProcessor elp = new ELProcessor();
-        elp.defineFunction("fn", "", "javax.el.TesterFunctions", "void doIt(int[])");
+        elp.defineFunction("fn", "", "jakarta.el.TesterFunctions", "void doIt(int[])");
         elp.eval("fn:doIt([5].stream().toArray())");
         Assert.assertEquals("D", TesterFunctions.getCallList());
     }
@@ -145,7 +145,7 @@ public class TestELProcessor {
     public void testDefineFunctionName09() throws Exception {
         TesterFunctions.resetCallList();
         ELProcessor elp = new ELProcessor();
-        elp.defineFunction("fn", "", "javax.el.TesterFunctions", "void doIt(int[][])");
+        elp.defineFunction("fn", "", "jakarta.el.TesterFunctions", "void doIt(int[][])");
         elp.eval("fn:doIt([[5].stream().toArray()].stream().toArray())");
         Assert.assertEquals("E", TesterFunctions.getCallList());
     }
@@ -156,7 +156,7 @@ public class TestELProcessor {
         TesterFunctions.resetCallList();
         ELProcessor elp = new ELProcessor();
         elp.defineFunction("fn", "test1", "java.lang.Integer", "Integer valueOf(int)");
-        elp.defineFunction("fn", "test2", "javax.el.TesterFunctions", "void doIt(Integer[])");
+        elp.defineFunction("fn", "test2", "jakarta.el.TesterFunctions", "void doIt(Integer[])");
         elp.eval("fn:test2([fn:test1(1), fn:test1(2)].stream().toArray())");
         Assert.assertEquals("F", TesterFunctions.getCallList());
     }
@@ -167,7 +167,7 @@ public class TestELProcessor {
         TesterFunctions.resetCallList();
         ELProcessor elp = new ELProcessor();
         elp.defineFunction("fn", "test1", "java.lang.Integer", "Integer valueOf(int)");
-        elp.defineFunction("fn", "test2", "javax.el.TesterFunctions", "void doIt(Integer[][])");
+        elp.defineFunction("fn", "test2", "jakarta.el.TesterFunctions", "void doIt(Integer[][])");
         elp.eval("fn:test2([[fn:test1(1), fn:test1(2)].stream().toArray()].stream().toArray())");
         Assert.assertEquals("G", TesterFunctions.getCallList());
     }
@@ -177,7 +177,7 @@ public class TestELProcessor {
     public void testDefineFunctionName12() throws Exception {
         TesterFunctions.resetCallList();
         ELProcessor elp = new ELProcessor();
-        elp.defineFunction("fn", "test", "javax.el.TesterFunctions", "void doIt(long...)");
+        elp.defineFunction("fn", "test", "jakarta.el.TesterFunctions", "void doIt(long...)");
         elp.eval("fn:test(1,2)");
         Assert.assertEquals("H", TesterFunctions.getCallList());
     }
@@ -187,7 +187,7 @@ public class TestELProcessor {
     public void testDefineFunctionName13() throws Exception {
         TesterFunctions.resetCallList();
         ELProcessor elp = new ELProcessor();
-        elp.defineFunction("fn", "test", "javax.el.TesterFunctions", "void doIt(Object...)");
+        elp.defineFunction("fn", "test", "jakarta.el.TesterFunctions", "void doIt(Object...)");
         elp.eval("fn:test(null, null)");
         Assert.assertEquals("I", TesterFunctions.getCallList());
     }
diff --git a/test/javax/el/TestELResolver.java b/test/jakarta/el/TestELResolver.java
similarity index 99%
rename from test/javax/el/TestELResolver.java
rename to test/jakarta/el/TestELResolver.java
index 3caaa53..b492ea1 100644
--- a/test/javax/el/TestELResolver.java
+++ b/test/jakarta/el/TestELResolver.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.el;
+package jakarta.el;
 
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/test/javax/el/TestEvaluationListener.java b/test/jakarta/el/TestEvaluationListener.java
similarity index 98%
rename from test/javax/el/TestEvaluationListener.java
rename to test/jakarta/el/TestEvaluationListener.java
index 13d8356..4a0cd70 100644
--- a/test/javax/el/TestEvaluationListener.java
+++ b/test/jakarta/el/TestEvaluationListener.java
@@ -14,11 +14,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.el;
+package jakarta.el;
 
 import java.util.List;
 
-import javax.el.TesterEvaluationListener.Pair;
+import jakarta.el.TesterEvaluationListener.Pair;
 
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/test/javax/el/TestImportHandler.java b/test/jakarta/el/TestImportHandler.java
similarity index 99%
rename from test/javax/el/TestImportHandler.java
rename to test/jakarta/el/TestImportHandler.java
index 56c4a28..7f157aa 100644
--- a/test/javax/el/TestImportHandler.java
+++ b/test/jakarta/el/TestImportHandler.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.el;
+package jakarta.el;
 
 import java.util.ArrayList;
 
diff --git a/test/javax/el/TestImportHandlerStandardPackages.java b/test/jakarta/el/TestImportHandlerStandardPackages.java
similarity index 99%
rename from test/javax/el/TestImportHandlerStandardPackages.java
rename to test/jakarta/el/TestImportHandlerStandardPackages.java
index 4d9c01a..203b3e4 100644
--- a/test/javax/el/TestImportHandlerStandardPackages.java
+++ b/test/jakarta/el/TestImportHandlerStandardPackages.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.el;
+package jakarta.el;
 
 import java.io.File;
 import java.lang.reflect.Field;
diff --git a/test/javax/el/TestListELResolver.java b/test/jakarta/el/TestListELResolver.java
similarity index 99%
rename from test/javax/el/TestListELResolver.java
rename to test/jakarta/el/TestListELResolver.java
index 60aea8c..0bfad0d 100644
--- a/test/javax/el/TestListELResolver.java
+++ b/test/jakarta/el/TestListELResolver.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.el;
+package jakarta.el;
 
 import java.util.ArrayList;
 import java.util.Collections;
diff --git a/test/javax/el/TestMapELResolver.java b/test/jakarta/el/TestMapELResolver.java
similarity index 99%
rename from test/javax/el/TestMapELResolver.java
rename to test/jakarta/el/TestMapELResolver.java
index 1a87b7f..0889a04 100644
--- a/test/javax/el/TestMapELResolver.java
+++ b/test/jakarta/el/TestMapELResolver.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.el;
+package jakarta.el;
 
 import java.beans.FeatureDescriptor;
 import java.util.Collections;
diff --git a/test/javax/el/TestResourceBundleELResolver.java b/test/jakarta/el/TestResourceBundleELResolver.java
similarity index 99%
rename from test/javax/el/TestResourceBundleELResolver.java
rename to test/jakarta/el/TestResourceBundleELResolver.java
index 5acf029..5c0adfa 100644
--- a/test/javax/el/TestResourceBundleELResolver.java
+++ b/test/jakarta/el/TestResourceBundleELResolver.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.el;
+package jakarta.el;
 
 import java.beans.FeatureDescriptor;
 import java.util.Enumeration;
diff --git a/test/javax/el/TestStaticFieldELResolver.java b/test/jakarta/el/TestStaticFieldELResolver.java
similarity index 99%
rename from test/javax/el/TestStaticFieldELResolver.java
rename to test/jakarta/el/TestStaticFieldELResolver.java
index 3655865..4e97a24 100644
--- a/test/javax/el/TestStaticFieldELResolver.java
+++ b/test/jakarta/el/TestStaticFieldELResolver.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.el;
+package jakarta.el;
 
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/test/javax/el/TestUtil.java b/test/jakarta/el/TestUtil.java
similarity index 98%
rename from test/javax/el/TestUtil.java
rename to test/jakarta/el/TestUtil.java
index 536771c..dc2a5ed 100644
--- a/test/javax/el/TestUtil.java
+++ b/test/jakarta/el/TestUtil.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.el;
+package jakarta.el;
 
 import java.util.Date;
 
diff --git a/test/javax/el/TesterBean.java b/test/jakarta/el/TesterBean.java
similarity index 98%
rename from test/javax/el/TesterBean.java
rename to test/jakarta/el/TesterBean.java
index 0ee12fa..e781476 100644
--- a/test/javax/el/TesterBean.java
+++ b/test/jakarta/el/TesterBean.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.el;
+package jakarta.el;
 
 public class TesterBean {
 
diff --git a/test/javax/el/TesterBeanNameResolver.java b/test/jakarta/el/TesterBeanNameResolver.java
similarity index 99%
rename from test/javax/el/TesterBeanNameResolver.java
rename to test/jakarta/el/TesterBeanNameResolver.java
index 8da8638..3fb2b76 100644
--- a/test/javax/el/TesterBeanNameResolver.java
+++ b/test/jakarta/el/TesterBeanNameResolver.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.el;
+package jakarta.el;
 
 import java.util.HashMap;
 import java.util.Map;
diff --git a/test/javax/el/TesterClass.java b/test/jakarta/el/TesterClass.java
similarity index 98%
rename from test/javax/el/TesterClass.java
rename to test/jakarta/el/TesterClass.java
index 699b3ec..7057aee 100644
--- a/test/javax/el/TesterClass.java
+++ b/test/jakarta/el/TesterClass.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.el;
+package jakarta.el;
 
 public class TesterClass {
 
diff --git a/test/javax/el/TesterELContext.java b/test/jakarta/el/TesterELContext.java
similarity index 98%
rename from test/javax/el/TesterELContext.java
rename to test/jakarta/el/TesterELContext.java
index 34f3106..7478cfb 100644
--- a/test/javax/el/TesterELContext.java
+++ b/test/jakarta/el/TesterELContext.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.el;
+package jakarta.el;
 
 public class TesterELContext extends ELContext {
 
diff --git a/test/javax/el/TesterELResolverOne.java b/test/jakarta/el/TesterELResolverOne.java
similarity index 98%
rename from test/javax/el/TesterELResolverOne.java
rename to test/jakarta/el/TesterELResolverOne.java
index 62217eb..07427f7 100644
--- a/test/javax/el/TesterELResolverOne.java
+++ b/test/jakarta/el/TesterELResolverOne.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.el;
+package jakarta.el;
 
 public class TesterELResolverOne extends TypeConverter {
 
diff --git a/test/javax/el/TesterELResolverTwo.java b/test/jakarta/el/TesterELResolverTwo.java
similarity index 98%
rename from test/javax/el/TesterELResolverTwo.java
rename to test/jakarta/el/TesterELResolverTwo.java
index 6ffac1f..1e4c977 100644
--- a/test/javax/el/TesterELResolverTwo.java
+++ b/test/jakarta/el/TesterELResolverTwo.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.el;
+package jakarta.el;
 
 public class TesterELResolverTwo extends TypeConverter {
 
diff --git a/test/javax/el/TesterEvaluationListener.java b/test/jakarta/el/TesterEvaluationListener.java
similarity index 99%
rename from test/javax/el/TesterEvaluationListener.java
rename to test/jakarta/el/TesterEvaluationListener.java
index 7431bee..5ba0a07 100644
--- a/test/javax/el/TesterEvaluationListener.java
+++ b/test/jakarta/el/TesterEvaluationListener.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.el;
+package jakarta.el;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/test/javax/el/TesterFunctions.java b/test/jakarta/el/TesterFunctions.java
similarity index 98%
rename from test/javax/el/TesterFunctions.java
rename to test/jakarta/el/TesterFunctions.java
index 565a495..c14ad2b 100644
--- a/test/javax/el/TesterFunctions.java
+++ b/test/jakarta/el/TesterFunctions.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.el;
+package jakarta.el;
 
 public class TesterFunctions {
 
diff --git a/test/javax/el/TesterImportHandlerPerformance.java b/test/jakarta/el/TesterImportHandlerPerformance.java
similarity index 98%
rename from test/javax/el/TesterImportHandlerPerformance.java
rename to test/jakarta/el/TesterImportHandlerPerformance.java
index e15405a..afef1a2 100644
--- a/test/javax/el/TesterImportHandlerPerformance.java
+++ b/test/jakarta/el/TesterImportHandlerPerformance.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.el;
+package jakarta.el;
 
 import org.junit.Test;
 
diff --git a/test/javax/servlet/jsp/TesterPageContext.java b/test/javax/servlet/jsp/TesterPageContext.java
index 6898d43..8619fdc 100644
--- a/test/javax/servlet/jsp/TesterPageContext.java
+++ b/test/javax/servlet/jsp/TesterPageContext.java
@@ -19,7 +19,6 @@ package javax.servlet.jsp;
 import java.io.IOException;
 import java.util.Enumeration;
 
-import javax.el.ELContext;
 import javax.servlet.Servlet;
 import javax.servlet.ServletConfig;
 import javax.servlet.ServletContext;
@@ -28,6 +27,8 @@ import javax.servlet.ServletRequest;
 import javax.servlet.ServletResponse;
 import javax.servlet.http.HttpSession;
 
+import jakarta.el.ELContext;
+
 public class TesterPageContext extends PageContext {
 
     @Override
diff --git a/test/javax/servlet/jsp/el/TestScopedAttributeELResolverPerformance.java b/test/javax/servlet/jsp/el/TestScopedAttributeELResolverPerformance.java
index 9295155..8aa5c21 100644
--- a/test/javax/servlet/jsp/el/TestScopedAttributeELResolverPerformance.java
+++ b/test/javax/servlet/jsp/el/TestScopedAttributeELResolverPerformance.java
@@ -16,13 +16,14 @@
  */
 package javax.servlet.jsp.el;
 
-import javax.el.ELContext;
-import javax.el.ELManager;
-import javax.el.ELResolver;
-import javax.el.StandardELContext;
 import javax.servlet.jsp.JspContext;
 import javax.servlet.jsp.TesterPageContext;
 
+import jakarta.el.ELContext;
+import jakarta.el.ELManager;
+import jakarta.el.ELResolver;
+import jakarta.el.StandardELContext;
+
 import org.junit.Test;
 
 public class TestScopedAttributeELResolverPerformance {
diff --git a/test/org/apache/catalina/loader/TestWebappClassLoader.java b/test/org/apache/catalina/loader/TestWebappClassLoader.java
index 3bba4cc..cda4df0 100644
--- a/test/org/apache/catalina/loader/TestWebappClassLoader.java
+++ b/test/org/apache/catalina/loader/TestWebappClassLoader.java
@@ -100,7 +100,7 @@ public class TestWebappClassLoader extends TomcatBaseTest {
             "org.apache.juli",
             "org.apache.naming",
             "org.apache.tomcat",
-            "javax.el",
+            "jakarta.el",
             "javax.servlet",
             "javax.websocket",
             "javax.security.auth.message"
diff --git a/test/org/apache/el/TestELEvaluation.java b/test/org/apache/el/TestELEvaluation.java
index 41e41e9..b4110cd 100644
--- a/test/org/apache/el/TestELEvaluation.java
+++ b/test/org/apache/el/TestELEvaluation.java
@@ -20,8 +20,8 @@ package org.apache.el;
 import java.io.File;
 import java.util.Date;
 
-import javax.el.ELException;
-import javax.el.ValueExpression;
+import jakarta.el.ELException;
+import jakarta.el.ValueExpression;
 
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/test/org/apache/el/TestMethodExpressionImpl.java b/test/org/apache/el/TestMethodExpressionImpl.java
index 8edf1f1..dfcc91f 100644
--- a/test/org/apache/el/TestMethodExpressionImpl.java
+++ b/test/org/apache/el/TestMethodExpressionImpl.java
@@ -17,11 +17,11 @@
 
 package org.apache.el;
 
-import javax.el.ELContext;
-import javax.el.ExpressionFactory;
-import javax.el.MethodExpression;
-import javax.el.MethodNotFoundException;
-import javax.el.ValueExpression;
+import jakarta.el.ELContext;
+import jakarta.el.ExpressionFactory;
+import jakarta.el.MethodExpression;
+import jakarta.el.MethodNotFoundException;
+import jakarta.el.ValueExpression;
 
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/test/org/apache/el/TestValueExpressionImpl.java b/test/org/apache/el/TestValueExpressionImpl.java
index 0e816be..899ef9e 100644
--- a/test/org/apache/el/TestValueExpressionImpl.java
+++ b/test/org/apache/el/TestValueExpressionImpl.java
@@ -23,10 +23,10 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import javax.el.ELContext;
-import javax.el.ExpressionFactory;
-import javax.el.ValueExpression;
-import javax.el.ValueReference;
+import jakarta.el.ELContext;
+import jakarta.el.ExpressionFactory;
+import jakarta.el.ValueExpression;
+import jakarta.el.ValueReference;
 
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/test/org/apache/el/TesterFunctions.java b/test/org/apache/el/TesterFunctions.java
index 0f655b7..5108e98 100644
--- a/test/org/apache/el/TesterFunctions.java
+++ b/test/org/apache/el/TesterFunctions.java
@@ -19,7 +19,7 @@ package org.apache.el;
 
 import java.lang.reflect.Method;
 
-import javax.el.FunctionMapper;
+import jakarta.el.FunctionMapper;
 
 public class TesterFunctions {
     public static String trim(String input) {
diff --git a/test/org/apache/el/lang/TestELArithmetic.java b/test/org/apache/el/lang/TestELArithmetic.java
index bd47393..6c4e80c 100644
--- a/test/org/apache/el/lang/TestELArithmetic.java
+++ b/test/org/apache/el/lang/TestELArithmetic.java
@@ -19,7 +19,7 @@ package org.apache.el.lang;
 import java.math.BigDecimal;
 import java.math.BigInteger;
 
-import javax.el.ELProcessor;
+import jakarta.el.ELProcessor;
 
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/test/org/apache/el/lang/TestELSupport.java b/test/org/apache/el/lang/TestELSupport.java
index 3276aff..e3d8bf9 100644
--- a/test/org/apache/el/lang/TestELSupport.java
+++ b/test/org/apache/el/lang/TestELSupport.java
@@ -20,8 +20,8 @@ import java.beans.PropertyEditorManager;
 import java.math.BigDecimal;
 import java.math.BigInteger;
 
-import javax.el.ELException;
-import javax.el.ELManager;
+import jakarta.el.ELException;
+import jakarta.el.ELManager;
 
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/test/org/apache/el/lang/TesterVariableMapperImpl.java b/test/org/apache/el/lang/TesterVariableMapperImpl.java
index fa4c879..31fd6ca 100644
--- a/test/org/apache/el/lang/TesterVariableMapperImpl.java
+++ b/test/org/apache/el/lang/TesterVariableMapperImpl.java
@@ -16,12 +16,12 @@
  */
 package org.apache.el.lang;
 
-import javax.el.ELContext;
-import javax.el.ELManager;
-import javax.el.ExpressionFactory;
-import javax.el.TesterELContext;
-import javax.el.ValueExpression;
-import javax.el.VariableMapper;
+import jakarta.el.ELContext;
+import jakarta.el.ELManager;
+import jakarta.el.ExpressionFactory;
+import jakarta.el.TesterELContext;
+import jakarta.el.ValueExpression;
+import jakarta.el.VariableMapper;
 
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/test/org/apache/el/parser/TestAstAnd.java b/test/org/apache/el/parser/TestAstAnd.java
index 0969d5d..040717f 100644
--- a/test/org/apache/el/parser/TestAstAnd.java
+++ b/test/org/apache/el/parser/TestAstAnd.java
@@ -16,7 +16,7 @@
  */
 package org.apache.el.parser;
 
-import javax.el.ELProcessor;
+import jakarta.el.ELProcessor;
 
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/test/org/apache/el/parser/TestAstAssign.java b/test/org/apache/el/parser/TestAstAssign.java
index 88a61ec..3e0e0cd 100644
--- a/test/org/apache/el/parser/TestAstAssign.java
+++ b/test/org/apache/el/parser/TestAstAssign.java
@@ -16,11 +16,11 @@
  */
 package org.apache.el.parser;
 
-import javax.el.ELContext;
-import javax.el.ELManager;
-import javax.el.ELProcessor;
-import javax.el.ExpressionFactory;
-import javax.el.ValueExpression;
+import jakarta.el.ELContext;
+import jakarta.el.ELManager;
+import jakarta.el.ELProcessor;
+import jakarta.el.ExpressionFactory;
+import jakarta.el.ValueExpression;
 
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/test/org/apache/el/parser/TestAstChoice.java b/test/org/apache/el/parser/TestAstChoice.java
index d85d28e..0eaa9f4 100644
--- a/test/org/apache/el/parser/TestAstChoice.java
+++ b/test/org/apache/el/parser/TestAstChoice.java
@@ -16,7 +16,7 @@
  */
 package org.apache.el.parser;
 
-import javax.el.ELProcessor;
+import jakarta.el.ELProcessor;
 
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/test/org/apache/el/parser/TestAstConcatenation.java b/test/org/apache/el/parser/TestAstConcatenation.java
index 8a28d86..68c51a8 100644
--- a/test/org/apache/el/parser/TestAstConcatenation.java
+++ b/test/org/apache/el/parser/TestAstConcatenation.java
@@ -16,11 +16,11 @@
  */
 package org.apache.el.parser;
 
-import javax.el.ELContext;
-import javax.el.ELManager;
-import javax.el.ELProcessor;
-import javax.el.ExpressionFactory;
-import javax.el.ValueExpression;
+import jakarta.el.ELContext;
+import jakarta.el.ELManager;
+import jakarta.el.ELProcessor;
+import jakarta.el.ExpressionFactory;
+import jakarta.el.ValueExpression;
 
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/test/org/apache/el/parser/TestAstFunction.java b/test/org/apache/el/parser/TestAstFunction.java
index 25e7e7f..c4d72b8 100644
--- a/test/org/apache/el/parser/TestAstFunction.java
+++ b/test/org/apache/el/parser/TestAstFunction.java
@@ -16,7 +16,7 @@
  */
 package org.apache.el.parser;
 
-import javax.el.ELProcessor;
+import jakarta.el.ELProcessor;
 
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/test/org/apache/el/parser/TestAstIdentifier.java b/test/org/apache/el/parser/TestAstIdentifier.java
index 25d4016..7f8b925 100644
--- a/test/org/apache/el/parser/TestAstIdentifier.java
+++ b/test/org/apache/el/parser/TestAstIdentifier.java
@@ -16,7 +16,7 @@
  */
 package org.apache.el.parser;
 
-import javax.el.ELProcessor;
+import jakarta.el.ELProcessor;
 
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/test/org/apache/el/parser/TestAstLambdaExpression.java b/test/org/apache/el/parser/TestAstLambdaExpression.java
index 41dbff0..226ad64 100644
--- a/test/org/apache/el/parser/TestAstLambdaExpression.java
+++ b/test/org/apache/el/parser/TestAstLambdaExpression.java
@@ -16,8 +16,8 @@
  */
 package org.apache.el.parser;
 
-import javax.el.ELException;
-import javax.el.ELProcessor;
+import jakarta.el.ELException;
+import jakarta.el.ELProcessor;
 
 import org.junit.Assert;
 import org.junit.Test;
@@ -225,7 +225,7 @@ public class TestAstLambdaExpression {
     }
 
 
-    @Test(expected=javax.el.ELException.class)
+    @Test(expected=jakarta.el.ELException.class)
     public void testLambdaAsFunction08() {
         // Using a name space for the function is not allowed
         ELProcessor processor = new ELProcessor();
diff --git a/test/org/apache/el/parser/TestAstListData.java b/test/org/apache/el/parser/TestAstListData.java
index 94ff7b9..0309ff9 100644
--- a/test/org/apache/el/parser/TestAstListData.java
+++ b/test/org/apache/el/parser/TestAstListData.java
@@ -20,11 +20,11 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
-import javax.el.ELContext;
-import javax.el.ELManager;
-import javax.el.ELProcessor;
-import javax.el.ExpressionFactory;
-import javax.el.ValueExpression;
+import jakarta.el.ELContext;
+import jakarta.el.ELManager;
+import jakarta.el.ELProcessor;
+import jakarta.el.ExpressionFactory;
+import jakarta.el.ValueExpression;
 
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/test/org/apache/el/parser/TestAstMapData.java b/test/org/apache/el/parser/TestAstMapData.java
index 32a8876..06b5503 100644
--- a/test/org/apache/el/parser/TestAstMapData.java
+++ b/test/org/apache/el/parser/TestAstMapData.java
@@ -20,11 +20,11 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 
-import javax.el.ELContext;
-import javax.el.ELManager;
-import javax.el.ELProcessor;
-import javax.el.ExpressionFactory;
-import javax.el.ValueExpression;
+import jakarta.el.ELContext;
+import jakarta.el.ELManager;
+import jakarta.el.ELProcessor;
+import jakarta.el.ExpressionFactory;
+import jakarta.el.ValueExpression;
 
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/test/org/apache/el/parser/TestAstNot.java b/test/org/apache/el/parser/TestAstNot.java
index 3dfe655..f6b859d 100644
--- a/test/org/apache/el/parser/TestAstNot.java
+++ b/test/org/apache/el/parser/TestAstNot.java
@@ -16,7 +16,7 @@
  */
 package org.apache.el.parser;
 
-import javax.el.ELProcessor;
+import jakarta.el.ELProcessor;
 
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/test/org/apache/el/parser/TestAstOr.java b/test/org/apache/el/parser/TestAstOr.java
index b055ce1..46a30d0 100644
--- a/test/org/apache/el/parser/TestAstOr.java
+++ b/test/org/apache/el/parser/TestAstOr.java
@@ -16,7 +16,7 @@
  */
 package org.apache.el.parser;
 
-import javax.el.ELProcessor;
+import jakarta.el.ELProcessor;
 
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/test/org/apache/el/parser/TestAstSemicolon.java b/test/org/apache/el/parser/TestAstSemicolon.java
index 0a57ceb..0660850 100644
--- a/test/org/apache/el/parser/TestAstSemicolon.java
+++ b/test/org/apache/el/parser/TestAstSemicolon.java
@@ -16,11 +16,11 @@
  */
 package org.apache.el.parser;
 
-import javax.el.ELContext;
-import javax.el.ELManager;
-import javax.el.ELProcessor;
-import javax.el.ExpressionFactory;
-import javax.el.ValueExpression;
+import jakarta.el.ELContext;
+import jakarta.el.ELManager;
+import jakarta.el.ELProcessor;
+import jakarta.el.ExpressionFactory;
+import jakarta.el.ValueExpression;
 
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/test/org/apache/el/parser/TestAstSetData.java b/test/org/apache/el/parser/TestAstSetData.java
index 0e2847e..db7c357 100644
--- a/test/org/apache/el/parser/TestAstSetData.java
+++ b/test/org/apache/el/parser/TestAstSetData.java
@@ -20,11 +20,11 @@ import java.util.Collections;
 import java.util.HashSet;
 import java.util.Set;
 
-import javax.el.ELContext;
-import javax.el.ELManager;
-import javax.el.ELProcessor;
-import javax.el.ExpressionFactory;
-import javax.el.ValueExpression;
+import jakarta.el.ELContext;
+import jakarta.el.ELManager;
+import jakarta.el.ELProcessor;
+import jakarta.el.ExpressionFactory;
+import jakarta.el.ValueExpression;
 
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/test/org/apache/el/parser/TestELParser.java b/test/org/apache/el/parser/TestELParser.java
index d2f22ed..97e812a 100644
--- a/test/org/apache/el/parser/TestELParser.java
+++ b/test/org/apache/el/parser/TestELParser.java
@@ -19,10 +19,10 @@ package org.apache.el.parser;
 
 import java.io.StringReader;
 
-import javax.el.ELContext;
-import javax.el.ELException;
-import javax.el.ExpressionFactory;
-import javax.el.ValueExpression;
+import jakarta.el.ELContext;
+import jakarta.el.ELException;
+import jakarta.el.ExpressionFactory;
+import jakarta.el.ValueExpression;
 
 import org.junit.Assert;
 import org.junit.Ignore;
diff --git a/test/org/apache/el/stream/TestCollectionOperations.java b/test/org/apache/el/stream/TestCollectionOperations.java
index a0a7de3..bf800ca 100644
--- a/test/org/apache/el/stream/TestCollectionOperations.java
+++ b/test/org/apache/el/stream/TestCollectionOperations.java
@@ -20,8 +20,8 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
-import javax.el.ELException;
-import javax.el.ELProcessor;
+import jakarta.el.ELException;
+import jakarta.el.ELProcessor;
 
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/test/org/apache/el/util/TestReflectionUtil.java b/test/org/apache/el/util/TestReflectionUtil.java
index f39ae85..43b519f 100644
--- a/test/org/apache/el/util/TestReflectionUtil.java
+++ b/test/org/apache/el/util/TestReflectionUtil.java
@@ -16,7 +16,7 @@
  */
 package org.apache.el.util;
 
-import javax.el.MethodNotFoundException;
+import jakarta.el.MethodNotFoundException;
 
 import org.junit.Test;
 
diff --git a/test/org/apache/jasper/compiler/TestAttributeParser.java b/test/org/apache/jasper/compiler/TestAttributeParser.java
index eab6a42..4aaae48 100644
--- a/test/org/apache/jasper/compiler/TestAttributeParser.java
+++ b/test/org/apache/jasper/compiler/TestAttributeParser.java
@@ -17,7 +17,7 @@
 
 package org.apache.jasper.compiler;
 
-import javax.el.ValueExpression;
+import jakarta.el.ValueExpression;
 
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/test/org/apache/jasper/compiler/TestELParser.java b/test/org/apache/jasper/compiler/TestELParser.java
index ec4a3cb..6b47533 100644
--- a/test/org/apache/jasper/compiler/TestELParser.java
+++ b/test/org/apache/jasper/compiler/TestELParser.java
@@ -16,11 +16,11 @@
  */
 package org.apache.jasper.compiler;
 
-import javax.el.ELContext;
-import javax.el.ELException;
-import javax.el.ELManager;
-import javax.el.ExpressionFactory;
-import javax.el.ValueExpression;
+import jakarta.el.ELContext;
+import jakarta.el.ELException;
+import jakarta.el.ELManager;
+import jakarta.el.ExpressionFactory;
+import jakarta.el.ValueExpression;
 
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/test/org/apache/jasper/el/TestJasperELResolver.java b/test/org/apache/jasper/el/TestJasperELResolver.java
index 948465c..869618d 100644
--- a/test/org/apache/jasper/el/TestJasperELResolver.java
+++ b/test/org/apache/jasper/el/TestJasperELResolver.java
@@ -21,9 +21,10 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.atomic.AtomicInteger;
 
-import javax.el.ELResolver;
 import javax.servlet.jsp.el.ImplicitObjectELResolver;
 
+import jakarta.el.ELResolver;
+
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/test/org/apache/tomcat/util/descriptor/tld/TestTldParser.java b/test/org/apache/tomcat/util/descriptor/tld/TestTldParser.java
index 2c64a59..f1d4f5e 100644
--- a/test/org/apache/tomcat/util/descriptor/tld/TestTldParser.java
+++ b/test/org/apache/tomcat/util/descriptor/tld/TestTldParser.java
@@ -84,12 +84,12 @@ public class TestTldParser {
 
         attributeInfo = tag.getAttributes().get(2);
         Assert.assertEquals("deferredValue", attributeInfo.getName());
-        Assert.assertEquals("javax.el.ValueExpression", attributeInfo.getTypeName());
+        Assert.assertEquals("jakarta.el.ValueExpression", attributeInfo.getTypeName());
         Assert.assertEquals("java.util.Date", attributeInfo.getExpectedTypeName());
 
         attributeInfo = tag.getAttributes().get(3);
         Assert.assertEquals("deferredMethod", attributeInfo.getName());
-        Assert.assertEquals("javax.el.MethodExpression", attributeInfo.getTypeName());
+        Assert.assertEquals("jakarta.el.MethodExpression", attributeInfo.getTypeName());
         Assert.assertEquals("java.util.Date getDate()", attributeInfo.getMethodSignature());
 
         Assert.assertEquals(1, xml.getTagFiles().size());
diff --git a/test/util/a/Foo.java b/test/util/a/Foo.java
index 20f8409..ce6b556 100644
--- a/test/util/a/Foo.java
+++ b/test/util/a/Foo.java
@@ -17,7 +17,7 @@
 package util.a;
 
 /**
- * Tester class used for {@link javax.el.TestImportHandler}.
+ * Tester class used for {@link jakarta.el.TestImportHandler}.
  */
 class Foo {
 }
diff --git a/test/util/b/Foo.java b/test/util/b/Foo.java
index aa0a719..77bc623 100644
--- a/test/util/b/Foo.java
+++ b/test/util/b/Foo.java
@@ -17,7 +17,7 @@
 package util.b;
 
 /**
- * Tester class used for {@link javax.el.TestImportHandler}.
+ * Tester class used for {@link jakarta.el.TestImportHandler}.
  */
 public class Foo {
 }
diff --git a/test/webapp/bug5nnnn/bug58178c.jsp b/test/webapp/bug5nnnn/bug58178c.jsp
index 095f2d4..5709727 100644
--- a/test/webapp/bug5nnnn/bug58178c.jsp
+++ b/test/webapp/bug5nnnn/bug58178c.jsp
@@ -15,15 +15,14 @@
   limitations under the License.
 --%>
 <%@ taglib prefix="tags" tagdir="/WEB-INF/tags" %>
-<%!
-static class TestListener implements javax.el.ELContextListener {
+<%!static class TestListener implements jakarta.el.ELContextListener {
 
     private int jspCount = 0;
     private int tagCount = 0;
 
     @Override
-    public void contextCreated(javax.el.ELContextEvent event) {
-        javax.el.ELContext elContext = event.getELContext();
+    public void contextCreated(jakarta.el.ELContextEvent event) {
+        jakarta.el.ELContext elContext = event.getELContext();
         if (elContext instanceof org.apache.jasper.el.ELContextImpl) {
             jspCount++;
         } else {
@@ -43,8 +42,7 @@ static class TestListener implements javax.el.ELContextListener {
 
 static TestListener listener = new TestListener();
 
-private boolean listenerAdded;
-%>
+private boolean listenerAdded;%>
 <%
 synchronized(this) {
     if (!listenerAdded) {
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index dafce54..4807d30 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -5610,7 +5610,7 @@
       </update>
       <fix>
         <bug>61065</bug>: Ensure that once the class is resolved by
-        <code>javax.el.ImportHandler#resolveClass</code> it will be cached with
+        <code>jakarta.el.ImportHandler#resolveClass</code> it will be cached with
         the proper name. (violetagg)
       </fix>
     </changelog>
diff --git a/webapps/docs/config/systemprops.xml b/webapps/docs/config/systemprops.xml
index d49a67d..ff25981 100644
--- a/webapps/docs/config/systemprops.xml
+++ b/webapps/docs/config/systemprops.xml
@@ -80,7 +80,7 @@
   <properties>
 
     <property name="org.apache.el.BeanELResolver. CACHE_SIZE">
-      <p>The number of javax.el.BeanELResolver.BeanProperties objects that will
+      <p>The number of jakarta.el.BeanELResolver.BeanProperties objects that will
       be cached by the EL Parser.</p>
       <p>If not specified, the default of <code>1000</code> will be used.</p>
     </property>


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


[tomcat] 17/18: Clear out the changelog for 10.0.0.x

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tomcat.git

commit 9cd22e95a3a6fa9533fcdc8adb1d24ffae5e6407
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Mon Jan 13 11:46:46 2020 +0000

    Clear out the changelog for 10.0.0.x
    
    Expectation is that first release will be 10.0.0.0-M1
---
 webapps/docs/changelog.xml | 8934 +-------------------------------------------
 1 file changed, 1 insertion(+), 8933 deletions(-)

diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index 4807d30..df3a222 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -44,8939 +44,7 @@
   They eventually become mixed with the numbered issues (i.e., numbered
   issues do not "pop up" wrt. others).
 -->
-<section name="Tomcat 9.0.31 (markt)" rtext="in development">
-  <subsection name="Catalina">
-    <changelog>
-      <update>
-        Do not store username and password as session notes during
-        authentication if they are not needed. (kkolinko)
-      </update>
-      <fix>
-        Avoid useless environment restore when not using GSSCredential
-        in JNDIRealm. (remm)
-      </fix>
-      <fix>
-        <bug>64005</bug>: Correct a regression in the static resource caching
-        changes introduced in 9.0.28. Avoid a <code>NullPointerException</code>
-        when working with the URL provided for the root of a packed WAR. (markt)
-      </fix>
-      <fix>
-        <bug>64006</bug>: Provide default configuration source based on the
-        current directory if none has been set, for full compatibility with
-        existing code. (remm)
-      </fix>
-      <fix>
-        <bug>64008</bug>: Clarify/expand the Javadoc for the
-        <code>Tomcat#addWebapp()</code> and related methods. (markt)
-      </fix>
-      <scode>
-        Deprecate the <code>JmxRemoteLifecycleListener</code> as the features it
-        provides are now available in the remote JMX capability included with
-        the JRE. This listener will be removed in Tomcat 10 and may be removed
-        from Tomcat 9.0.x some time after 2020-12-31. (markt)
-      </scode>
-      <fix>
-        <bug>64011</bug>: <code>JNDIRealm</code> no longer authenticates to LDAP.
-        (michaelo)
-      </fix>
-      <fix>
-        <bug>64023</bug>: Skip null-valued session attributes when deserializing
-        sessions. (schultz)
-      </fix>
-      <update>
-        <bug>63691</bug>: Skip all jar and directory scanning when the wildcard
-        pattern &quot;*&quot; or &quot;*.jar&quot; is set or added to
-        <code>tomcat.util.scan.StandardJarScanFilter.jarsToSkip</code>. (isapir)
-      </update>
-      <fix>
-        Do not throw a NullPointerException when an MBean or operation cannot
-        be found by the JMXProxyServlet. (schultz)
-      </fix>
-      <fix>
-        <bug>58577</bug>: Respect the argument-count when searching for MBean
-        operations to invoke via the JMXProxyServlet. (schultz)
-      </fix>
-      <update>
-        <bug>64067</bug>: Allow more than one parameter when defining RewriteMaps.
-        (fschumacher)
-      </update>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <update>
-        Simplify NIO blocking read and write. (remm)
-      </update>
-      <fix>
-        Ensure that Servlet Asynchronous processing timeouts fire when requests
-        are made using HTTP/2. (markt)
-      </fix>
-      <fix>
-        Fix the corrupton of the TLS configuration when using the deprecated TLS
-        attributes on the Connector if the configuration has already been set
-        via the new <code>SSLHostConfig</code> and
-        <code>SSLHostConfigCertificate</code> elements. (markt)
-      </fix>
-      <fix>
-        <bug>63966</bug>: Switch the message shown when using HTTP to connect to
-        an HTTPS port from ISO-8859-1 to UTF-8. (markt)
-      </fix>
-      <fix>
-        <bug>64007</bug>: Cancel selection key in poller before wrapper close to
-        avoid possible deadlock. (remm)
-      </fix>
-      <add>
-        Add support for RFC 5915 formatted, unencrypted EC key files when using
-        a JSSE based TLS connector. (markt)
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="Jasper">
-    <changelog>
-      <fix>
-        Update the performance optimisation for using expressions in tags that
-        depend on uninitialised tag attributes with implied scope to make the
-        performance optimisation aware of the new public class
-        (<code>java.lang.Record</code>) added in Java 14. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Cluster">
-    <changelog>
-      <fix>
-        <bug>64043</bug>: Ensure that session ID changes are replicated during
-        form-authentication. (kfujino)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <fix>
-        <bug>63995</bug>: Ensure statements are closed when a pooled JDBC
-        connection is passivated in Tomcat's fork of Commons DBCP2. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.30 (markt)" rtext="2019-12-12">
-  <subsection name="Catalina">
-    <changelog>
-      <add>
-        <bug>63681</bug>: Introduce RealmBase#authenticate(GSSName, GSSCredential)
-        and friends. (michaelo)
-      </add>
-      <fix>
-        <bug>63964</bug>: Correct a regression in the static resource caching
-        changes introduced in 9.0.28. URLs constructed from URLs obtained from
-        the cache could not be used to access resources. (markt)
-      </fix>
-      <fix>
-        <bug>63970</bug>: Correct a regression in the static resource caching
-        changes introduced in 9.0.28. Connections to URLs obtained for JAR
-        resources could not be cast to <code>JarURLConnection</code>. (markt)
-      </fix>
-      <add>
-        <bug>63937</bug>: Add a new attribute to the standard
-        <code>Authenticator</code> implementations,
-        <code>allowCorsPreflight</code>, that allows the
-        <code>Authenticator</code>s to be configured to allow CORS preflight
-        requests to bypass authentication as required by the CORS specification.
-        (markt)
-      </add>
-      <fix>
-        <bug>63939</bug>: Correct the same origin check in the CORS filter. An
-        origin with an explicit default port is now considered to be the same as
-        an origin without a default port and origins are now compared in a
-        case-sensitive manner as required by the CORS specification. (markt)
-      </fix>
-      <fix>
-        <bug>63981</bug>: Allow multiple calls to
-        <code>Registry.disableRegistry()</code> without the second and
-        subsequent calls triggering the logging of a warning. Based on a patch
-        by Andy Wilkinson. (markt)
-      </fix>
-      <fix>
-        <bug>63982</bug>: CombinedRealm makes assumptions about principal implementation
-        (michaelo)
-      </fix>
-      <fix>
-        <bug>63983</bug>: Correct a regression in the static resource caching
-        changes introduced in 9.0.28. A large number of file descriptors were
-        opened that could reach the OS limit before being released by GC.
-        (markt)
-      </fix>
-      <update>
-        <bug>63987</bug>: Deprecate <code>Realm.getRoles(Principal)</code>. (michaelo)
-      </update>
-      <scode>
-        Add a unit test for the session <code>FileStore</code> implementation
-        and refactor loops in <code>FileStore</code> to use the ForEach style.
-        Pull request provided by Govinda Sakhare. (markt)
-      </scode>
-      <update>
-        Moved server-side include (SSI) module into a separate JAR library. (schultz)
-      </update>
-      <fix>
-        Refactor FORM authentication to reduce duplicate code and to ensure that
-        the authenticated Principal is not cached in the session when caching is
-        disabled. This is the fix for CVE-2019-17563. (markt/kkolinko)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <fix>
-        Fix endpoint closeSocket and destroySocket discrepancies, in particular
-        in the APR connector. (remm)
-      </fix>
-      <fix>
-        Harmonize maxConnections default value to 8192 across all connectors.
-        (remm)
-      </fix>
-      <fix>
-        <bug>63931</bug>: Improve timeout handling for asyncIO to ensure that
-        blocking operations see a <code>SocketTimeoutException</code> if one
-        occurs. (remm/markt)
-      </fix>
-      <fix>
-        <bug>63932</bug>: By default, do not compress content that has a strong
-        ETag. This behaviour is configuration for the HTTP/1.1 and HTTP/2
-        connectors via the new Connector attribute
-        <code>noCompressionStrongETag</code>. (markt)
-      </fix>
-      <fix>
-        <bug>63949</bug>: Fix non blocking write problems with NIO due to the
-        need for a write loop. (remm)
-      </fix>
-      <fix>
-        Simplify regular endpoint writes by removing write(Non)BlockingDirect.
-        All regular writes will now be buffered for a more predictable
-        behavior. (remm)
-      </fix>
-      <fix>
-        Send an exception directly to the completion handler when a timeout
-        exception occurs for the operation, and add a boolean to make sure the
-        completion handler is called only once. (remm/markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="WebSocket">
-    <changelog>
-      <fix>
-        Ensure a couple of very unlikely concurrency issues are avoided when
-        writing WebSocket messages. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Web applications">
-    <changelog>
-      <fix>
-        Fix the broken re-try link on the error page for the FORM authentication
-        example in the JSP section of the examples web application. (markt)
-      </fix>
-      <add>
-        Improvements to CsrfPreventionFilter: additional logging, allow the
-        CSRF nonce request parameter name to be customized.
-        (schultz)
-      </add>
-      <fix>
-        Correct the documentation for the <code>maxConnections</code> attribute
-        of the <code>Connector</code> in the documentation web application.
-        (markt)
-      </fix>
-      <add>
-        Add the ability to set and display session attributes in the JSP FORM
-        authentication example to demonstrate session persistence across
-        restarts for authenticated sessions. (markt)
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <fix>
-        Correct the fix for <bug>63815</bug> (quoting the use of
-        <code>CATALINA_OPTS</code> and <code>JAVA_OPTS</code> when used in shell
-        scripts to avoid the expansion of <code>*</code>) as it caused various
-        regressions, particularly with <code>daemon.sh</code>. (markt)
-      </fix>
-      <update>
-        Update the OWB module to Apache OpenWebBeans 2.0.13. (remm)
-      </update>
-      <update>
-        Support Java 11 in Graal Native Images with Graal 19.3+. (remm)
-      </update>
-      <add>
-        Expand the search made by the Windows installer for a suitable Java
-        installation to include the 64-bit JDK registry entries and the
-        <code>JAVA_HOME</code> environment variable. Pull request provided by
-        Alexander Norz. (markt)
-      </add>
-      <add>
-        Expand the coverage of the Korean translations provided with Apache
-        Tomcat. (woonsan)
-      </add>
-      <add>
-        Expand the coverage of the French translations provided with Apache
-        Tomcat. (remm)
-      </add>
-      <add>
-        Expand the coverage of the Chinese translations provided with Apache
-        Tomcat. Contributions provided by lins and 磊. (markt)
-      </add>
-      <add>
-        Update the internal fork of Apache Commons BCEL to ff6941e (2019-12-06,
-        6.4.2-dev). Code clean-up only. (markt)
-      </add>
-      <add>
-        Update the internal fork of Apache Commons Codec to 9637dd4 (2019-12-06,
-        1.14-SNAPSHOT). Code clean-up and a fix for CODEC-265. (markt)
-      </add>
-      <add>
-        Update the internal fork of Apache Commons FileUpload to 2317552
-        (2019-12-06, 2.0-SNAPSHOT). Refactoring. (markt)
-      </add>
-      <add>
-        Update the internal fork of Apache Commons Pool 2 to 6092f92 (2019-12-06,
-        2.8.0-SNAPSHOT). Clean-up and minor refactoring. (markt)
-      </add>
-      <add>
-        Update the internal fork of Apache Commons DBCP 2 to a36390 (2019-12-06,
-        2.7.1-SNAPSHOT). Minor refactoring. (markt)
-      </add>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.29 (markt)" rtext="2019-11-21">
-  <subsection name="Catalina">
-    <changelog>
-      <fix>
-       Refactor JMX remote RMI registry creation. This is the fix for
-       CVE-2019-12418. (remm)
-      </fix>
-      <add>
-        Improvement to CsrfPreventionFilter: expose the latest available nonce
-        as a request attribute; expose the expected nonce request parameter
-        name as a context attribute.
-        (schultz)
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <add>
-        <bug>63835</bug>: Add support for Keep-Alive response header. (michaelo)
-      </add>
-      <fix>
-        Correct a logic bug in the <code>NioEndpoint</code> timeout handling
-        that meant a write timeout could be handled as a read timeout. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Web applications">
-    <changelog>
-      <add>
-        Add a warning regarding potential poor performance of the HTTP and AJP
-        connectors if <code>socket.txBufSize</code> is configured with an
-        explicit value rather than using the JVM default. (markt)
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <fix>
-        Improve OWB module based using custom shade appender. (remm)
-      </fix>
-      <fix>
-        Add security filter in OWB module in addition to the valve for more flexibility. (remm)
-      </fix>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.28 (markt)" rtext="not released">
-  <subsection name="Catalina">
-    <changelog>
-      <fix>
-        Bad paths for URIs can cause exceptions on Windows due to its
-        path separator, so wrap using an IOException. (remm)
-      </fix>
-      <fix>
-        <bug>63832</bug>: Properly mark container as FAILED when a JVM error
-        occurs on stop. (remm)
-      </fix>
-      <add>
-        Add more details on the usage of <code>RewriteMap</code>
-        functionality in the <code>RewriteValve</code>. (fschumacher)
-      </add>
-      <fix>
-        <bug>63836</bug> Ensure that references to the Host object are cleared
-        once the Host instance is destroyed. (markt)
-      </fix>
-      <fix>
-        Ensure that, when static resource caching is enabled for a web
-        application, all access to static files (including JSP files) goes via
-        the cache so that a consistent view of the static files is seen. Prior
-        to this change it was possible to see an updated last modified time but
-        the content would be that prior to the modification. (markt)
-      </fix>
-      <update>
-        <bug>63905</bug> Clean up Tomcat CSS. (michaelo)
-      </update>
-      <fix>
-        <bug>63909</bug>: When the <code>ExpiresFilter</code> is used without a
-        default and the response is served by the Default Servlet, ensure that
-        the filter processes the response if the Default Servlet sets a 304 (Not
-        Found) status code. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <fix>
-        Ensure that <code>ServletRequest.isAsyncStarted()</code> returns
-        <code>false</code> once <code>AsyncContext.complete()</code> or
-        <code>AsyncContext.dispatch()</code> has been called during
-        <code>AsyncListener.onTimeout()</code> or
-        <code>AsyncListener.onError()</code>. (markt)
-      </fix>
-      <fix>
-        <bug>63816</bug> and <bug>63817</bug>: Correctly handle I/O errors after
-        asynchronous processing has been started but before the container thread
-        that started asynchronous processing has completed processing the
-        current request/response. (markt)
-      </fix>
-      <fix>
-        <bug>63825</bug>: When processing the <code>Expect</code> and
-        <code>Connection</code> HTTP headers looking for a specific token, be
-        stricter in ensuring that the exact token is present. (markt)
-      </fix>
-      <fix>
-        <bug>63829</bug>: Improve the check of the <code>Content-Encoding</code>
-        header when looking to see if Tomcat is serving pre-compressed content.
-        Ensure that only a full token is matched and that the match is case
-        insensitive. (markt)
-      </fix>
-      <fix>
-        <bug>63864</bug>: Refactor parsing of the <code>transfer-encoding</code>
-        request header to use the shared parsing code and reduce duplication.
-        (markt)
-      </fix>
-      <fix>
-        <bug>63865</bug>: Add <code>Unset</code> option to same-site cookies
-        and pass through <code>None</code> value if set by user. Patch provided
-        by John Kelly. (markt)
-      </fix>
-      <fix>
-        <bug>63879</bug>: Remove stack trace from debug logging on socket
-        wrapper close. (remm)
-      </fix>
-      <update>
-        Add connection tracking on the connector endpoint to remove excessive
-        concurrency in the protocol handler when maintaining an association
-        between the socket wrapper and its current processor. (remm)
-      </update>
-      <fix>
-        <bug>63894</bug>: Ensure that the configured values for
-        <code>certificateVerification</code> and
-        <code>certificateVerificationDepth</code> are correctly passed to the
-        OpenSSL based SSLEngine implementation. (remm/markt)
-      </fix>
-      <fix>
-        Improve cleanup after errors when setting socket options. (remm)
-      </fix>
-      <fix>
-        <bug>63859</bug>: Do not perform a blocking read after a
-        <code>CPING</code> message is received by the AJP connector because, if
-        the JK Connector is configured with
-        <code>ping_mode=&quot;I&quot;</code>, the <code>CPING</code> message
-        will not always be followed by the start of a request. (markt)
-      </fix>
-      <fix>
-        Properly calculate all dynamic parts of the ErrorReportValve response
-        on the fly in
-        <code>org.apache.coyote.http2.TestHttp2InitialConnection</code>.
-        (michaelo)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Jasper">
-    <changelog>
-      <fix>
-        <bug>63897</bug>: Capture the timestamp of a JSP for the purposes of
-        modification tracking before the JSP is compiled to prevent a race
-        condition if the JSP is modified during compilation. Patch provided by
-        Karl von Randow. (markt)
-      </fix>
-      <fix>
-        Fix a race condition that could mean changes to a modified JSP were not
-        visible to end users. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="WebSocket">
-    <changelog>
-      <fix>
-        <bug>63913</bug>: Wrap any <code>NullPointerException</code>s throw by
-        the <code>Inflater</code> or <code>Deflater</code> used by the
-        <code>PerMessageDeflate</code> extension in an <code>IOException</code>
-        so that the error can be caught and handled by the WebSocket error
-        handling mechanism. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Web applications">
-    <changelog>
-      <fix>
-        Correct the description of the default value for the server attribute in
-        the security How-To. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <fix>
-        <bug>63815</bug>: Quote the use of <code>CATALINA_OPTS</code> and
-        <code>JAVA_OPTS</code> when used in shell scripts to avoid the expansion
-        of <code>*</code>. Note that any newlines present in
-        <code>CATALINA_OPTS</code> and/or <code>JAVA_OPTS</code> will no longer
-        removed. (markt)
-      </fix>
-      <fix>
-        <bug>63826</bug>: Remove <code>commons-daemon-native.tar.gz</code> and
-        <code>tomcat-native.tar.gz</code> from the binary zip distributions for
-        Windows since compiled versions of those components are already
-        included within the zip distributions. (markt)
-      </fix>
-      <fix>
-        <bug>63838</bug>: Suppress reflexive access warnings when running the
-        unit tests on the command line. (markt)
-      </fix>
-      <fix>
-        Add missing charsets from the HPE JVM on HP-UX to pass unit tests in
-        <code>org.apache.tomcat.util.buf.TestCharsetCache</code>. (michaelo)
-      </fix>
-      <update>
-        Update the CXF module to Apache CXF 3.3.4. (remm)
-      </update>
-      <add>
-        Expand the coverage and quality of the French translations provided
-        with Apache Tomcat. (remm)
-      </add>
-      <add>
-        Expand the coverage and quality of the Japanese translations provided
-        with Apache Tomcat. Patch provided by motohashi.yuki. (markt)
-      </add>
-      <add>
-        Expand the coverage and quality of the Simplified Chinese translations
-        provided with Apache Tomcat. Contributions provided by rpo130, Mason
-        Shen, leeyazhou, winsonzhao, qingshi huang, Lay, Shucheng Hou and
-        Yanming Zhou. (markt)
-      </add>
-      <add>
-        Expand the coverage and quality of the Brazilian Portuguese translations
-        provided with Apache Tomcat. Patch provided by Danielamorais. (markt)
-      </add>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.27 (markt)" rtext="2019-10-11">
-  <subsection name="Catalina">
-    <changelog>
-      <fix>
-        Correct a regression introduced in 9.0.25 that prevented configuration
-        files from being loaded from the class path. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <fix>
-        Use URL safe base 64 encoding rather than standard base 64 encoding when
-        generating or parsing the <code>HTTP2-Settings</code> header as part of
-        an HTTP upgrade to <code>h2c</code> as required by RFC 7540. (markt)
-      </fix>
-      <fix>
-        <bug>63765</bug>: NIO2 should try to unwrap after TLS handshake to
-        avoid edge cases. (remm)
-      </fix>
-      <fix>
-        <bug>63766</bug>: Ensure Processor objects are recycled when processing
-        an HTTP upgrade connection that terminates before processing switches to
-        the Processor for the upgraded protocol. (markt)
-      </fix>
-      <fix>
-        Fix a memory leak introduced by the HTTP/2 timeout refactoring in 9.0.23
-        that could occur when HTTP/2 or WebSocket was used. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Jasper">
-    <changelog>
-      <update>
-        Update to the Eclipse JDT compiler 4.13. (markt)
-      </update>
-      <fix>
-        Add GraalVM specific ELResolver to avoid BeanInfo use in BeanElResolver
-        if possible, as it needs manual reflection configuration. (remm)
-      </fix>
-      <fix>
-        <bug>63781</bug>: When performing various checks related to the
-        visibility of classes, fields an methods in the EL implementation, also
-        check that the containing module has been exported. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Web Socket">
-    <changelog>
-      <fix>
-        <bug>63753</bug>: Ensure that the <code>Host</code> header in a Web
-        Socket HTTP upgrade request only contains a port if a non-default port
-        is being used. (markt)
-      </fix>
-      <fix>
-        When running on Java 9 and above, don't attempt to instantiate WebSocket
-        Endpoints found in modules that are not exported. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Web Applications">
-    <changelog>
-      <add>
-        Add base GraalVM documentation. (remm)
-      </add>
-      <add>
-        Add Javadoc for the Common Annotations API implementation. (markt)
-      </add>
-      <fix>
-        Correct various typos in the comments, error messages and Javadoc. Patch
-        provided by 康智冬. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="jdbc-pool">
-    <changelog>
-      <fix>
-        When connections are validated without an explicit validation query,
-        ensure that any transactions opened by the validation process are
-        committed. Patch provided by Pascal Davoust. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <scode>
-        Deprecate <code>org.apache.tomcat.util.compat.TLS</code>.
-        Its functionality was only used for unit tests in
-        <code>org.apache.tomcat.util.net.TesterSupport</code>
-        and has been moved there. (rjung)
-      </scode>
-      <fix>
-        <bug>63759</bug>: When installing Tomcat with the Windows installer,
-        grant sufficient privileges to enable the uninstaller to execute when
-        user account control is active. (markt)
-      </fix>
-      <add>
-        Use a build property to define the minimum supported Java version and
-        use that build property to reduce the number of edits required to update
-        the minimum supported Java version. (markt)
-      </add>
-      <update>
-        Update the OWB module to Apache OpenWebBeans 2.0.12. (remm)
-      </update>
-      <update>
-        Update the CXF module to Apache CXF 3.3.3. (remm)
-      </update>
-      <update>
-        <bug>63767</bug>: Update to Commons Daemon 1.2.2. This corrects a
-        regression in Commons Daemon 1.2.0 and 1.2.1 that caused the Windows
-        Service to crash on start when running on an operating system that had
-        not been fully updated. (markt)
-      </update>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.26 (markt)" rtext="2019-09-19">
-  <subsection name="Other">
-    <changelog>
-      <fix>
-        Re-tagged to ensure that the source file for the changelog did not
-        contain an XML byte order mark. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.25 (markt)" rtext="not released">
-  <subsection name="Catalina">
-    <changelog>
-      <fix>
-        Avoid a possible <code>InvalidPathException</code> when obtaining a URI
-        for a configuration file. (markt)
-      </fix>
-      <fix>
-        <bug>63684</bug>: <code>Wrapper</code> never passed to
-        <code>RealmBase.hasRole()</code> for given security constraints.
-        (michaelo)
-      </fix>
-      <fix>
-        <bug>63740</bug>: Ensure configuration files are loaded correctly when a
-        <code>Host</code> is configured with an <code>xmlBase</code>. Patch
-        provided by uk4sx. (markt)
-      </fix>
-      <fix>
-        Avoid a potential <code>NullPointerException</code> on Service stop if a
-        Service is embedded directly (i.e. with no Server) in an application
-        and JNDI is enabled. Patch provided by S. Ali Tokmen. (markt)
-      </fix>
-      <add>
-        Add a new <code>PropertySource</code> implementation,
-        <code>EnvironmentPropertySource</code>, that can be used to do property
-        replacement in configuration files with environment variables. Based on
-        a pull request provided by Thomas Meyer. (markt)
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <fix>
-        <bug>63682</bug>: Fix a potential hang when using the asynchronous
-        Servlet API to write the response body and the stream and/or connection
-        window reaches 0 bytes in size. (markt)
-      </fix>
-      <fix>
-        <bug>63690</bug>: Use the average of the current and previous sizes when
-        calculating overhead for HTTP/2 <code>DATA</code> and
-        <code>WINDOW_UPDATE</code> frames to avoid false positives as a result
-        of client side buffering behaviour that causes a small percentage of
-        non-final DATA frames to be smaller than expected. (markt)
-      </fix>
-      <fix>
-        <bug>63706</bug>: Avoid NPE accessing https port with plaintext. (remm)
-      </fix>
-      <fix>
-        Correct typos in the names of the configuration attributes
-        <code>overheadDataThreshold</code> and
-        <code>overheadWindowUpdateThreshold</code>. (markt)
-      </fix>
-      <fix>
-        If the HTTP/2 connection requires an initial window size larger than the
-        default, send a WINDOW_UPDATE to increase the flow control window for the
-        connection so that the initial size of the flow control window for the
-        connection is consistent with the increased value. (markt)
-      </fix>
-      <fix>
-        <bug>63710</bug>: When using HTTP/2, ensure that a
-        <code>content-length</code> header is not set for those responses with
-        status codes that do not permit one. (markt)
-      </fix>
-      <fix>
-        <bug>63737</bug>: Correct various issues when parsing the
-        <code>accept-encoding</code> header to determine if gzip encoding is
-        supported including only parsing the first header found. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Jasper">
-    <changelog>
-      <fix>
-        <bug>63724</bug>: Correct a regression introduced in 9.0.21 that broke
-        compilation of JSPs in some configurations. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Web applications">
-    <changelog>
-      <fix>
-        Correct the source code links on the index page for the ROOT web
-        application to point to Git rather than Subversion. (markt)
-      </fix>
-      <fix>
-        Fix various issues with the Javadoc generated for the documentation web
-        application to enable release builds to be built with Java 10 onwards.
-        (markt)
-      </fix>
-      <fix>
-        <bug>63733</bug>: Remove the documentation for the &quot;Additional
-        Components&quot; since they have been removed / merged into the core
-        Tomcat distribution for 9.0.5 onwards. (markt)
-      </fix>
-      <fix>
-        <bug>63739</bug>: Correct the invalid <code>Automatic-Module-Name</code>
-        manifest entries for the Tomcat provided JARs included in the Tomcat
-        embedded distribution. (markt)
-      </fix>
-      <fix>
-        Fix a large number of Javadoc and documentation typos. Patch provided by
-        KangZhiDong. (markt)
-      </fix>
-      <fix>
-        Spelling and formatting corrections for the cluster how-to. Pull request
-        provided by Bill Mitchell. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <add>
-        Expand the coverage and quality of the French translations provided
-        with Apache Tomcat. (remm)
-      </add>
-      <add>
-        Expand the coverage and quality of the Simplified Chinese translations
-        provided with Apache Tomcat. Includes contributions by leeyazhou and
-        康智冬. (markt)
-      </add>
-      <fix>
-        <bug>62140</bug>: Additional usage documentation in comments for
-        <code>catalina.[bat|sh]</code>. (markt)
-      </fix>
-      <fix>
-        Fix <code>JSSE_OPTS</code> quoting in <code>catalina.bat</code>.
-        Contributed by Peter Uhnak. (fschumacher)
-      </fix>
-      <update>
-        <bug>63625</bug>: Update to Commons Daemon 1.2.1. This corrects several
-        regressions in Commons Daemon 1.2.1, most notably the Windows Service
-        crashing on start when using 32-bit JVMs. (markt)
-      </update>
-      <fix>
-        <bug>63689</bug>: Correct a regression in the fix for <bug>63285</bug>
-        that meant that when installing a service, the service display name was
-        not set. (markt)
-      </fix>
-      <fix>
-        When performing a silent install with the Windows Installer, ensure that
-        the registry entries are added to the 64-bit registry when using a
-        64-bit JVM. (markt)
-      </fix>
-      <fix>
-        Remove unused i18n messages and associated translations. Patch provided
-        by KangZhiDong. (markt)
-      </fix>
-      <add>
-        Expand the coverage and quality of the Korean translations provided
-        with Apache Tomcat. (woonsan)
-      </add>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.24 (markt)" rtext="2019-08-17">
-  <subsection name="Coyote">
-    <changelog>
-      <scode>
-        Remove the code in the sendfile poller that ensured smaller pollsets
-        were used with older, no longer supported versions of Windows that
-        could not support larger pollsets. (markt)
-      </scode>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.23 (markt)" rtext="not released">
-  <subsection name="Catalina">
-    <changelog>
-      <add>
-        <bug>57665</bug>: Add support for the <code>X-Forwarded-Host</code>
-        header to the <code>RemoteIpFilter</code> and <code>RemoteIpValve</code>.
-        (markt)
-      </add>
-      <add>
-        <bug>62496</bug>: Add option to write auth information (remote user/auth type)
-        to response headers. (michaelo)
-      </add>
-      <fix>
-        <bug>63550</bug>: Only try the <code>alternateURL</code> in the
-        <code>JNDIRealm</code> if one has been specified. (markt)
-      </fix>
-      <add>
-        <bug>63556</bug>: Mark request as forwarded in RemoteIpValve and
-        RemoteIpFilter (michaelo)
-      </add>
-      <fix>
-        <bug>63579</bug>: Correct parsing of malformed OPTIONS requests and
-        reject them with a 400 response rather than triggering an internal error
-        that results in a 500 response. (markt)
-      </fix>
-      <fix>
-        <bug>63608</bug>: Align the implementation of the negative match feature
-        for patterns used with the <code>RewriteValve</code> with the
-        description in the documentation. (markt)
-      </fix>
-      <update>
-        <bug>63627</bug>: Implement more fine-grained handling in
-        <code>RealmBase.authenticate(GSSContext, boolean)</code>. (michaelo)
-      </update>
-      <fix>
-        If an unhandled exception occurs on a asynchronous thread started via
-        <code>AsyncContext.start(Runnable)</code>, process it using the standard
-        error page mechanism. (markt)
-      </fix>
-      <fix>
-        Discard large byte buffers allocated using setBufferSize when recycling
-        the request. (remm)
-      </fix>
-      <fix>
-        Avoid a <code>NullPointerException</code> in the
-        <code>CrawlerSessionManagerValve</code> if no ROOT Context is deployed
-        and a request does not map to any of the other deployed Contexts. Patch
-        provided by Jop Zinkweg. (markt)
-      </fix>
-      <fix>
-        <bug>63636</bug>: <code>Context.findRoleMapping()</code> never called
-        in <code>StandardWrapper.findSecurityReference()</code>. (michaelo)
-      </fix>
-     </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <scode>
-        Refactor the APR poller to always use a single pollset now that the
-        Windows operating systems that required multiple smaller pollsets to be
-        used are no longer supported. (markt)
-      </scode>
-      <fix>
-        <bug>63524</bug>: Improve the handling of PEM file based keys and
-        certificates that do not include a full certificate chain when
-        configuring the internal, in-memory key store. Improve the handling of
-        PKCS#1 formatted private keys when configuring the internal, in-memory
-        key store. (markt)
-      </fix>
-      <update>
-        Add callback when finishing the set properties rule in the digester.
-        (remm)
-      </update>
-      <fix>
-        <bug>63568</bug>: Avoid error when trying to set tcpNoDelay on socket
-        types that do not support it, which can occur when using the NIO
-        inherited channel capability. Submitted by František Kučera. (remm)
-      </fix>
-      <fix>
-        <bug>63570</bug>: Fix regression retrieving local address with
-        the NIO connector. Submitted by Aditya Kadakia. (remm)
-      </fix>
-      <fix>
-        Correct parsing of invalid host names that contain bytes in the range
-        128 to 255 and reject them with a 400 response rather than triggering an
-        internal error that results in a 500 response. (markt)
-      </fix>
-      <fix>
-        <bug>63571</bug>: Allow users to configure infinite TLS session caches
-        and/or timeouts. (markt)
-      </fix>
-      <fix>
-        <bug>63578</bug>: Improve handling of invalid requests so that 400
-        responses are returned to the client rather than 500 responses. (markt)
-      </fix>
-      <fix>
-        Fix h2spec test suite failure. It is an error if a Huffman encoded
-        string literal contains the EOS symbol. (jfclere)
-      </fix>
-      <add>
-        Connections that fail the TLS handshake will now appear in the access
-        logs with a 400 status code. (markt)
-      </add>
-      <fix>
-        Timeouts for HTTP/2 connections were not always correctly handled
-        leaving some connections open for longer than expected. (markt)
-      </fix>
-      <fix>
-        <bug>63650</bug>: Refactor initialisation for JSSE based TLS connectors
-        to enable custom JSSE providers that provide custom cipher suites to be
-        used. (markt)
-      </fix>
-      <add>
-        Expand the HTTP/2 excessive overhead protection to cover various forms
-        of abusive client behaviour and close the connection if any such
-        behaviour is detected. (markt)
-      </add>
-      <fix>
-        Fix a crash on shutdown with the APR/native connector when a blocking
-        I/O operation was still in progress when the connector stopped. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Cluster">
-    <changelog>
-      <fix>
-        Avoid failing Kubernetes membership (and preventing startup) if the
-        stream cannot be opened, to get the same behavior as the DNS based
-        membership. The namespace is still a failure on startup but it is easy
-        to provide. (remm)
-      </fix>
-      <fix>
-        Avoid non fatal NPEs with Tribes when JMX is not available. (remm)
-      </fix>
-      <fix>
-        Make Kube environment optional for Kube memberships, for easier testing
-        and Graal training. A warn log will occur if the environment is not
-        present. (remm)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Web applications">
-    <changelog>
-      <fix>
-        <bug>63597</bug>: Update the custom 404 error page for the Host Manager
-        to take account of previous refactoring so that the page is used for
-        404 errors rather than falling back to the default error page. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <fix>
-        JNDI support for GraalVM native images. (remm)
-      </fix>
-      <fix>
-        JSP runtime library support for GraalVM native images. (remm)
-      </fix>
-      <fix>
-        java.util.logging configuration for GraalVM native images. (remm)
-      </fix>
-      <update>
-        Update Checkstyle to 8.22. (markt)
-      </update>
-      <fix>
-        <bug>55969</bug>: Tighten up the security of the Apache Tomcat
-        installation created by the Windows installer. Change the default
-        shutdown port used by the Windows installer from <code>8005</code> to
-        <code>-1</code> (disabled). Limit access to the chosen installation
-        directory to local administrators, Local System and Local Service.
-        (markt)
-      </fix>
-      <update>
-        <bug>62696</bug>: The digital signature for the Windows installer now
-        uses SHA-256 for hashes. (markt)
-      </update>
-      <add>
-        <bug>63285</bug>: Add an option to <code>service.bat</code> so that when
-        installing a Windows service, the name of the executables used by the
-        Windows service may be changed to match the service name. This
-        makes the installation behaviour consistent with the Windows installer.
-        The original executable names will be restored when the Windows service
-        is removed. The renaming can be enabled by using the new
-        <code>--rename</code> option after the service name. (markt)
-      </add>
-      <update>
-        <bug>63310</bug>: Update to Commons Daemon 1.2.0. This provides improved
-        support for Java 11. This also changes the user configured by the
-        Windows installer for the Windows service from <code>Local System</code>
-        to the lower privileged <code>Local Service</code>. (markt)
-      </update>
-      <add>
-        Expand the coverage and quality of the French translations provided
-        with Apache Tomcat. (remm)
-      </add>
-      <fix>
-        <bug>63555</bug>: Add <code>Automatic-Module-Name</code> entries for
-        each of the Tomcat provided JARs included in the Tomcat embedded
-        distribution. (markt)
-      </fix>
-      <fix>
-        <bug>63567</bug>: Restore the passing of <code>$LOGGING_MANAGER</code>
-        to the jvm in <code>catalina.sh</code> when calling <code>stop</code>.
-        (markt)
-      </fix>
-      <fix>
-        Correct broken OSGi data in JAR file manifests. (markt)
-      </fix>
-      <fix>
-        Add &quot;embed&quot; to the <code>Bundle-Name</code> and
-        <code>Bundle-Symbolic-Name</code> for the Tomcat embedded WebSocket JAR
-        to align the naming with the other embedded JARs and to differentiate it
-        from the standard WebSocket JAR that does not include the API classes.
-        (markt)
-      </fix>
-      <update>
-        Update dependency on bnd to 4.2.0. (markt)
-      </update>
-      <update>
-        Update the internal fork of Commons Codec to 3ebef4a (2018-08-01) to
-        pick up the fix for CODEC-134. (markt)
-      </update>
-      <update>
-        Update the internal fork of Commons Pool2 to 796e32d (2018-08-01) to
-        pick up the changes Commons Pool2 2.7.0. (markt)
-      </update>
-      <update>
-        Update the internal fork of Commons DBCP2 to 87d9e3a (2018-08-01) to
-        pick up the changes Commons DBCP2 2.7.0 and DBCP-555. (markt)
-      </update>
-      <update>
-        <bug>63648</bug>: Update the test TLS keys and certificates used in the
-        test suite to replace the keys and certificates that are about to
-        expire. (markt)
-      </update>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.22 (markt)" rtext="2019-07-09">
-  <subsection name="Catalina">
-    <changelog>
-      <fix>
-        Improve parsing of Range request headers. (markt)
-      </fix>
-      <fix>
-        Range headers that specify a range unit Tomcat does not recognise should
-        be ignored rather than triggering a 416 response. Based on a pull
-        request by zhanhb. (markt)
-      </fix>
-      <fix>
-        When comparing a date from a <code>If-Range</code> header, an exact
-        match is required. Based on a pull request by zhanhb. (markt)
-      </fix>
-      <fix>
-        Add an option to the default servlet to disable processing of PUT
-        requests with Content-Range headers as partial PUTs. The default
-        behaviour (processing as partial PUT) is unchanged. Based on a pull
-        request by zhanhb. (markt)
-      </fix>
-      <fix>
-        Improve parsing of Content-Range headers. (markt)
-      </fix>
-      <update>
-        Update the recommended minimum Tomcat Native version to 1.2.23. (markt)
-      </update>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <fix>
-        Remove a source of potential deadlocks when using HTTP/2 when the
-        Connector is configured with <code>useAsyncIO</code> as
-        <code>true</code>. (markt)
-      </fix>
-      <fix>
-        <bug>63523</bug>: Restore SSLUtilBase methods as protected to preserve
-        compatibility. (remm)
-      </fix>
-      <fix>
-        Fix typo in UTF-32LE charset name. Patch by zhanhb via Github.
-        (fschumacher)
-      </fix>
-      <fix>
-        Once a URI is identified as invalid don't attempt to process it further.
-        Based on a PR by Alex Repert. (markt)
-      </fix>
-      <fix>
-        Fix to avoid the possibility of long poll times for individual pollers
-        when using multiple pollers with APR. (markt)
-      </fix>
-      <fix>
-        Refactor the fix for <bug>63205</bug> so it only applies when using
-        PKCS12 keystores as regressions have been reported with some other
-        keystore types. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Jasper">
-    <changelog>
-      <add>
-        Include file names if SMAP processor is unable to delete or rename a
-        class file during SMAP generation. (markt)
-      </add>
-      <update>
-        Update to the Eclipse JDT compiler 4.12. (markt)
-      </update>
-    </changelog>
-  </subsection>
-  <subsection name="WebSocket">
-    <changelog>
-      <fix>
-        <bug>63521</bug>: As required by the WebSocket specification, if a POJO
-        that is deployed as a result of the SCI scan for annotated POJOs is
-        subsequently deployed via the programmatic API ignore the programmatic
-        deployment. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <fix>
-        Switch the check for terminal availability to test for stdin as using
-        stdout does not work when output is piped to another process. Patch
-        provided by Radosław Józwik. (markt)
-      </fix>
-      <add>
-        Add user buildable optional modules for easier CDI 2 and JAX-RS
-        support. Also include a new documentation page describing how
-        to use it. (remm)
-      </add>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.21 (markt)" rtext="2019-06-07">
-  <subsection name="Catalina">
-    <changelog>
-      <add>
-        <bug>57287</bug>: Add file sorting to DefaultServlet (schultz)
-      </add>
-      <fix>
-        Fix <code>--no-jmx</code> flag processing, which was called after
-        registry initialization. (remm)
-      </fix>
-      <fix>
-        Ensure that a default request character encoding set on a
-        <code>ServletContext</code> is used when calling
-        <code>ServletRequest#getReader()</code>. (markt)
-      </fix>
-      <fix>
-        Make a best efforts attempt to clean-up if a request fails during
-        processing due to an <code>OutOfMemoryException</code>. (markt)
-      </fix>
-      <fix>
-        Improve the BoM detection for static files handled by the default
-        servlet for the rarely used UTF-32 encodings. Identified by Coverity
-        Scan. (markt)
-      </fix>
-      <fix>
-        Ensure that the default servlet reads the entire global XSLT file if
-        one is defined. Identified by Coverity Scan. (markt)
-      </fix>
-      <fix>
-        Avoid potential <code>NullPointerException</code> when generating an
-        HTTP <code>Allow</code> header. Identified by Coverity Scan. (markt)
-      </fix>
-      <scode>
-        Add <code>Context.createInstanceManager()</code> for easier framework
-        integration. (remm)
-      </scode>
-      <scode>
-        Add utility <code>org.apache.catalina.core.FrameworkListener</code> to
-        allow replicating adding a Listener to context.xml in a programmatic
-        way. (remm)
-      </scode>
-      <scode>
-        Move <code>Container.ADD_CHILD_EVENT</code> to before the child
-        container start, and <code>Container.REMOVE_CHILD_EVENT</code> to
-        before removal of the child from the internal child collection.
-        (remm)
-      </scode>
-      <add>
-        Remove any fragment included in the target path used to obtain a
-        <code>RequestDispatcher</code>. The requested target path is logged as a
-        warning since this is an application error. (markt)
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <fix>
-        NIO poller seems to create some unwanted concurrency, causing rare
-        CI test failures. Add sync when processing async operation to avoid
-        this. (remm)
-      </fix>
-      <fix>
-        Fix concurrency issue that lead to incorrect HTTP/2 connection timeout.
-        (remm/markt)
-      </fix>
-      <fix>
-        Avoid useless exception wrapping in async IO. (remm)
-      </fix>
-      <fix>
-        <bug>63412</bug>: Security manager failure when using the async IO
-        API from a webapp. (remm)
-      </fix>
-      <fix>
-        Remove <code>acceptorThreadCount</code> Connector attribute,
-        one accept thread is sufficient. As documented, value <code>2</code>
-        was the only other sensible value, but without and impact beyond
-        certain microbenchmarks. (remm)
-      </fix>
-      <fix>
-        Avoid possible NPEs on connector stop. (remm)
-      </fix>
-      <update>
-        Remove <code>pollerThreadCount</code> Connector attribute for NIO,
-        one poller thread is sufficient. (remm)
-      </update>
-      <add>
-        Add async IO for APR connector for consistency, but disable it by
-        default due to low performance. (remm)
-      </add>
-      <fix>
-        Avoid blocking write of internal buffer when using async IO. (remm)
-      </fix>
-      <scode>
-        Refactor async IO implementation to the <code>SocketWrapperBase</code>.
-        (remm)
-      </scode>
-      <update>
-        Refactor <code>SocketWrapperBase</code> close using an atomic boolean
-        and a <code>doClose</code> method that subclasses will implement, with
-        a guarantee that it will be run only once. (remm)
-      </update>
-      <fix>
-        Decouple the socket wrapper, which is not recycled, from the NIOx
-        channel after close, and replace it with a dummy static object. (remm)
-      </fix>
-      <fix>
-        Clear buffers on socket wrapper close. (remm)
-      </fix>
-      <fix>
-        NIO2 failed to properly close sockets on connector stop. (remm)
-      </fix>
-      <update>
-        Reduce the default for <code>maxConcurrentStreams</code> on the
-        <code>Http2Protocol</code> from 200 to 100 to align with typical
-        defaults for HTTP/2 implementations. (markt)
-      </update>
-      <update>
-        Reduce the default HTTP/2 header list size from 4GB to 32kB to align
-        with typical HTTP/2 implementations. (markt)
-      </update>
-      <add>
-        Add support for same-site cookie attribute. Patch provided by John
-        Kelly. (markt)
-      </add>
-      <fix>
-        Drop legacy NIO double socket close (close channel, then close
-        socket). (remm)
-      </fix>
-      <fix>
-        Fix HTTP/2 end of stream concurrency with async. (remm)
-      </fix>
-      <fix>
-        Correct a bug in the stream flushing code that could lead to multiple
-        threads processing the stream concurrently which in turn could cause
-        errors processing the stream. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Cluster">
-    <changelog>
-      <fix>
-        <bug>62841</bug>: Refactor the <code>DeltaRequest</code> serialization
-        to reduce the window during which the <code>DeltaSession</code> is
-        locked and to remove a potential cause of deadlocks during
-        serialization. (markt)
-      </fix>
-      <fix>
-        <bug>63441</bug>: Further streamline the processing of session creation
-        messages in the <code>DeltaManager</code> to reduce the possibility of a
-        session update message being processed before the session has been
-        created. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="WebSocket">
-    <changelog>
-      <fix>
-        Fix timeout logic for async non blocking writes. Identified by
-        Coverity Scan. (remm)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Web applications">
-    <changelog>
-      <add>
-        Expand the explanation of how deprecated TLS configuration attributes
-        are converted to the new TLS configuration style. (markt)
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="Tribes">
-    <changelog>
-      <fix>
-        Treat <code>NoRouteToHostException</code> the same way as
-        <code>SocketTimeoutException</code> when checking the health of group
-        members. This avoids a SEVERE log message every time the check is
-        performed when the host associated with a group member is not powered
-        on. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <update>
-        Switch from FindBugs to SpotBugs. (fschumacher)
-      </update>
-      <update>
-        Start Graal native image compatibility, using the tomcat-maven
-        packaging. (remm)
-      </update>
-      <fix>
-        <bug>63403</bug>: Fix TestHttp2InitialConnection test failures when
-        running with a non-English locale. (kkolinko)
-      </fix>
-      <fix>
-        Add Graal JreCompat, and use it to disable JMX and URL stream handlers.
-        (remm)
-      </fix>
-      <add>
-        Expand the coverage and quality of the Czech translations provided
-        with Apache Tomcat. Includes contributions by Arnošt Havelka. (markt)
-      </add>
-      <add>
-        Expand the coverage and quality of the German translations provided
-        with Apache Tomcat. Includes contributions by Niklasmerz, dusiema and
-        Jens. (markt)
-      </add>
-      <add>
-        Expand the coverage and quality of the French translations provided
-        with Apache Tomcat. (remm)
-      </add>
-      <add>
-        Expand the coverage and quality of the Simplified Chinese translations
-        provided with Apache Tomcat. Includes contributions by 諵. (markt)
-      </add>
-      <fix>
-        Use the <code>test</code> command to check for terminal availability
-        rather than the <code>tty</code> command since the <code>tty</code>
-        based test fails on non-English locales. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.20 (markt)" rtext="2019-05-13">
-  <subsection name="Catalina">
-    <changelog>
-      <fix>
-        Fix some edge cases where the docBase was not being set using a canonical
-        path which in turn meant resource URLs were not being constructed as
-        expected. (markt)
-      </fix>
-      <fix>
-        Fix a potential resource leak when executing CGI scripts from a WAR
-        file. Identified by Coverity scan. (markt)
-      </fix>
-      <fix>
-        Fix a potential concurrency issue in the StringCache identified by
-        Coverity scan. (markt)
-      </fix>
-      <fix>
-        Fix a potential concurrency issue in the main Sendfile thread of the APR
-        connector. Identified by Coverity scan. (markt)
-      </fix>
-      <fix>
-        Fix a potential resource leak when running a web application from a WAR
-        file. Identified by Coverity scan. (markt)
-      </fix>
-      <fix>
-        Fix a potential resource leak on some exception paths in the
-        <code>DataSourceRealm</code>. Identified by Coverity scan. (markt)
-      </fix>
-      <fix>
-        Fix a potential resource leak on an exception path when parsing JSP
-        files. Identified by Coverity scan. (markt)
-      </fix>
-      <fix>
-        Fix a potential resource leak when a JNDI lookup returns an object of an
-        in compatible class. Identified by Coverity scan. (markt)
-      </fix>
-      <scode>
-        Refactor <code>ManagerServlet</code> to avoid loading classes when
-        filtering JNDI resources for resources of a specified type. (markt)
-      </scode>
-      <fix>
-        <bug>63324</bug>: Refactor the <code>CrawlerSessionManagerValve</code>
-        so that the object placed in the session is compatible with session
-        serialization with mem-cached. Patch provided by Martin Lemanski.
-        (markt)
-      </fix>
-      <add>
-        <bug>63358</bug>: Expand the <code>throwOnFailure</code> support in the
-        <code>Connector</code> to include the adding of a <code>Connector</code>
-        to a running <code>Service</code>. (markt)
-      </add>
-      <add>
-        <bug>63361</bug>: Add a new method
-        (<code>Registry.disableRegistry()</code>) that can be used to disable
-        JMX registration of Tomcat components providing it is called before the
-        first component is registered. (markt)
-      </add>
-      <fix>
-        Avoid <code>OutOfMemoryError</code>s and
-        <code>ArrayIndexOutOfBoundsException</code>s when accessing large files
-        via the default servlet when resource caching has been disabled. (markt)
-      </fix>
-      <fix>
-        Avoid a <code>NullPointerException</code> when a <code>Context</code> is
-        defined in <code>server.xml</code> with a <code>docBase</code> but not
-        the optional <code>path</code>. (markt)
-      </fix>
-      <fix>
-        <bug>63333</bug>: Override the <code>isAvailable()</code> method in the
-        <code>JAASRealm</code> so that only login failures caused by invalid
-        credentials trigger account lock out when the <code>LockOutRealm</code>
-        is in use. Patch provided by jchobantonov. (markt)
-      </fix>
-      <fix>
-        Add <code>--no-jmx</code> flag to allow disabling JMX in
-        <code>startup.Tomcat.main</code>. (remm)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <fix>
-        The <code>useAsyncIO</code> boolean attribute on the Connector element
-        value now defaults to <code>true</code>. (remm)
-      </fix>
-      <fix>
-        Possible HTTP/2 connection leak issue when using async with NIO. (remm)
-      </fix>
-      <fix>
-        Fix socket close discrepancies for NIO, now the wrapper close
-        is used everywhere except for socket accept problems. (remm)
-      </fix>
-      <fix>
-        Implement poller timeout when using async IO with NIO. (remm)
-      </fix>
-      <fix>
-        Avoid creating and using object caches when they are disabled. (remm)
-      </fix>
-      <fix>
-        When running on newer JREs that don't support SSLv2Hello, don't warn
-        that it is not available unless explicitly configured. (markt)
-      </fix>
-      <fix>
-        Change default value of <code>pollerThreadCount</code> of NIO
-        to <code>1</code>. (remm)
-      </fix>
-      <fix>
-        Associate BlockPoller thread name with its NIO connector for better
-        readability. (remm)
-      </fix>
-      <fix>
-        The async HTTP/2 frame parser should tolerate concurrency so clearing
-        shared buffers before attempting a read is not possible. (remm)
-      </fix>
-      <update>
-        Update the HTTP/2 connection preface and initial frame reading to be
-        asynchronous instead of blocking IO. (remm)
-      </update>
-      <scode>
-        Refactor Hostname validation to improve performance. Patch provided by
-        Uwe Hees. (markt)
-      </scode>
-      <update>
-        Add additional NIO2 style read and write methods closer to core NIO2,
-        for possible use with an asynchronous workflow like CompletableFuture.
-        (remm)
-      </update>
-      <fix>
-        Expand HTTP/2 timeout handling to include connection window exhaustion
-        on write. This is the fix for CVE-2019-10072. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Jasper">
-    <changelog>
-      <fix>
-        <bug>63359</bug>: Ensure that the type conversions used when converting
-        from strings for <code>jsp:setProperty</code> actions are correctly
-        implemented as per section JSP.1.14.2.1 of the JSP 2.3 specification.
-        (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <fix>
-        <bug>63335</bug>: Ensure that stack traces written by the
-        <code>OneLineFormatter</code> are fully indented. The entire stack trace
-        is now indented by an additional TAB character. (markt)
-      </fix>
-      <fix>
-        <bug>63370</bug>: Message files (LocalStrings_*.properties) of the
-        examples webapp not converted to ascii. (woonsan)
-      </fix>
-      <add>
-        Expand the coverage and quality of the French translations provided
-        with Apache Tomcat. (remm)
-      </add>
-      <add>
-        Expand the coverage and quality of the Japanese translations provided
-        with Apache Tomcat. Includes contributions by motohashi.yuki. (markt)
-      </add>
-      <add>
-        Expand the coverage and quality of the Czech translations provided
-        with Apache Tomcat. Includes contributions by Arnošt Havelka. (markt)
-      </add>
-      <fix>
-        When using the <code>OneLineFormatter</code>, don't print a blank line
-        in the log after printing a stack trace. (markt)
-      </fix>
-      <update>
-        Update the internal fork of Apache Commons FileUpload to 41e4047
-        (2019-04-24) pick up some enhancements. (markt)
-      </update>
-      <update>
-        Update the internal fork of Apache Commons DBCP 2 to dcdbc72
-        (2019-04-24) to pick up some clean-up and enhancements. (markt)
-      </update>
-      <update>
-        Update the internal fork of Apache Commons Pool 2 to 0664f4d
-        (2019-04-30) to pick up some enhancements and bug fixes. (markt)
-      </update>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.19 (markt)" rtext="2019-04-13">
-  <subsection name="Catalina">
-    <changelog>
-      <fix>
-        Fix wrong JMX registration regression in 9.0.18. (remm)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <update>
-        Add vectoring for NIO in the base and SSL channels. (remm)
-      </update>
-      <add>
-        Add asynchronous IO from NIO2 to the NIO connector, with support for
-        the async IO implementations for HTTP/2 and Websockets. The
-        <code>useAsyncIO</code> boolean attribute on the Connector element
-        allows enabling use of the asynchronous IO API. (remm)
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <fix>
-        Ensure that the correct files are included in the source distribution
-        for javacc based parsers depending on whether jjtree is used or not.
-        (markt)
-      </fix>
-      <fix>
-        Ensure that text files in the source distribution have the correct line
-        endings for the target platform. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.18 (markt)" rtext="not released">
-  <subsection name="Catalina">
-    <changelog>
-      <fix>
-        <bug>63196</bug>: Provide a default (<code>X-Forwarded-Proto</code>) for
-        the <code>protocolHeader</code> attribute of the
-        <code>RemoteIpFilter</code> and <code>RemoteIpValve</code>. (markt)
-      </fix>
-      <fix>
-        <bug>63235</bug>: Refactor Charset cache to reduce start time. (markt)
-      </fix>
-      <fix>
-        <bug>63249</bug>: Use a consistent log level (<code>WARN</code>) when
-        logging the failure to register or deregister a JMX Bean. (markt)
-      </fix>
-      <fix>
-        <bug>63249</bug>: Use a consistent log level (<code>ERROR</code>) when
-        logging the <code>LifecycleException</code> associated with the failure
-        to start or stop a component. (markt)
-      </fix>
-      <fix>
-        When the SSI directive <code>fsize</code> is used with an invalid
-        target, return a file size of <code>-</code> rather than
-        <code>1k</code>. (markt)
-      </fix>
-      <fix>
-        <bug>63251</bug>: Implement a work-around for a known JRE bug (<a
-        href="https://bugs.openjdk.java.net/browse/JDK-8194653">JDK-8194653</a>)
-        that may cause a dead-lock when Tomcat starts. (markt)
-      </fix>
-      <fix>
-        <bug>63275</bug>: When using a <code>RequestDispatcher</code> ensure
-        that <code>HttpServletRequest.getContextPath()</code> returns an encoded
-        path in the dispatched request. (markt)
-      </fix>
-      <update>
-        Add optional listeners for Server/Listener, as a slight variant of
-        a standard listener. The difference is that loading is not fatal when
-        it fails. This would allow adding example configuration to the standard
-        server.xml if deemed useful. Storeconfig will not attempt to persist
-        the new listener. (remm)
-      </update>
-      <fix>
-        <bug>63286</bug>: Document the differences in behaviour between the
-        <code>LogFormat</code> directive in httpd and the <code>pattern</code>
-        attribute in the <code>AccessLogValve</code> for <code>%D</code> and
-        <code>%T</code>. (markt)
-      </fix>
-      <fix>
-        <bug>63287</bug>: Make logging levels more consistent for similar issues
-        of similar severity. (markt)
-      </fix>
-      <fix>
-        <bug>63311</bug>: Add support for https URLs to the local resolver within
-        Tomcat used to resolve standard XML DTDs and schemas when Tomcat is
-        configured to validate XML configuration files such as web.xml. (markt)
-      </fix>
-      <fix>
-        Encode the output of the SSI <code>printenv</code> command. This is the
-        fix for CVE-2019-0221. (markt)
-      </fix>
-      <scode>
-        Use constants for SSI encoding values. (markt)
-      </scode>
-      <add>
-        When the CGI Servlet is configured with
-        <code>enableCmdLineArguments</code> set to true, limit the encoded form
-        of the individual command line arguments to those values allowed by RFC
-        3875. This restriction may be relaxed by the use of the new
-        initialisation parameter <code>cmdLineArgumentsEncoded</code>. (markt)
-      </add>
-      <add>
-        When the CGI Servlet is configured with
-        <code>enableCmdLineArguments</code> set to true, limit the decoded form
-        of the individual command line arguments to known safe values when
-        running on Windows. This restriction may be relaxed by the use of the
-        new initialisation parameter <code>cmdLineArgumentsDecoded</code>. This
-        is the fix for CVE-2019-0232. (markt)
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <fix>
-        Fix bad interaction between NIO2 async read API and the regular read.
-        (remm)
-      </fix>
-      <fix>
-        Refactor NIO2 write pending strategy for the classic IO API. (remm)
-      </fix>
-      <fix>
-        Restore original maxConnections default for NIO2 as the underlying
-        close issues have been fixed. (remm)
-      </fix>
-      <fix>
-        Harmonize NIO2 isReadyForWrite with isReadyForRead code. (remm)
-      </fix>
-      <fix>
-        When using a JSSE TLS connector that supported ALPN (Java 9 onwards) and
-        a protocol was not negotiated, Tomcat failed to fallback to HTTP/1.1 and
-        instead dropped the connection. (markt)
-      </fix>
-      <fix>
-        Correct a regression in the TLS connector refactoring in Tomcat 9.0.17
-        that prevented the use of PKCS#8 private keys with OpenSSL based
-        connectors. (markt)
-      </fix>
-      <fix>
-        Fix NIO2 SSL edge cases. (remm)
-      </fix>
-      <fix>
-        When performing an upgrade from HTTP/1.1 to HTTP/2, ensure that any
-        query string present in the original HTTP/1.1 request is passed to the
-        HTTP/2 request processing. (markt)
-      </fix>
-      <fix>
-        When Tomcat writes a final response without reading all of an HTTP/2
-        request, reset the stream to inform the client that the remaining
-        request body is not required. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Jasper">
-    <changelog>
-      <add>
-        Add support for specifying Java 11 (with the value <code>11</code>) as
-        the compiler source and/or compiler target for JSP compilation. (markt)
-      </add>
-      <add>
-        Add support for specifying Java 12 (with the value <code>12</code>) and
-        Java 13 (with the value <code>13</code>) as the compiler source and/or
-        compiler target for JSP compilation. If used with an ECJ version that
-        does not support these values, a warning will be logged and the latest
-        supported version will used. Based on a patch by Thomas Collignon.
-        (markt)
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="Web applications">
-    <changelog>
-      <fix>
-        <bug>63184</bug>: Expand the SSI documentation to provide more
-        information on the supported directives and their attributes. Patch
-        provided by nightwatchcyber. (markt)
-      </fix>
-      <add>
-        Add a note to the documentation about the risk of DoS with poorly
-        written regular expressions and the <code>RewriteValve</code>. Patch
-        provided by salgattas. (markt)
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="jdbc-pool">
-    <changelog>
-      <fix>
-        Improved maxAge handling. Add support for age check on idle connections.
-        Connection that expired reconnects rather than closes it. Patch provided
-        by toby1984. (kfujino)
-      </fix>
-      <fix>
-        <bug>63320</bug>: Ensure that <code>StatementCache</code> caches
-        statements that include arrays in arguments. (kfujino)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <update>
-        Update to the Eclipse JDT compiler 4.10. (markt)
-      </update>
-      <add>
-        Expand the coverage and quality of the Spanish translations provided
-        with Apache Tomcat. Includes contributions by Ulises Gonzalez Horta.
-        (markt)
-      </add>
-      <add>
-        Expand the coverage and quality of the Czech translations provided
-        with Apache Tomcat. Includes contributions by Arnošt Havelka. (markt)
-      </add>
-      <add>
-        Expand the coverage and quality of the Chinese translations provided
-        with Apache Tomcat. Includes contributions by winsonzhao and wjt.
-        (markt)
-      </add>
-      <add>
-        Expand the coverage and quality of the Russian translations provided
-        with Apache Tomcat. (kkolinko)
-      </add>
-      <add>
-        Expand the coverage and quality of the Japanese translations provided
-        with Apache Tomcat. (kfujino)
-      </add>
-      <add>
-        Expand the coverage and quality of the Korean translations provided
-        with Apache Tomcat. (woonsan)
-      </add>
-      <add>
-        Expand the coverage and quality of the German translations provided
-        with Apache Tomcat. (fschumacher)
-      </add>
-      <add>
-        Expand the coverage and quality of the French translations provided
-        with Apache Tomcat. (remm)
-      </add>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.17 (markt)" rtext="2019-03-18">
-  <subsection name="Catalina">
-    <changelog>
-      <fix>
-        Refactor how cookies are transferred from the base request to a
-        <code>PushBuilder</code> so that they are accessible, and may be edited,
-        via the standard <code>PushBuilder</code> methods for working with HTTP
-        headers. (markt)
-      </fix>
-      <update>
-        Simplify the value of <code>jarsToSkip</code> property in
-        <code>catalina.properties</code> file for tomcat-i18n jar files.
-        Use prefix pattern instead of listing each language. (kkolinko)
-      </update>
-      <fix>
-        Restore the getter and setter for the access log valve attribute
-        <code>maxLogMessageBufferSize</code> that were accidentally removed.
-        (markt)
-      </fix>
-      <add>
-        <bug>63206</bug>: Add a new attribute to <code>Context</code> -
-        <code>createUploadTargets</code> which, if <code>true</code> enables
-        Tomcat to create the temporary upload location used by a Servlet if the
-        location specified by the Servlet does not already exist. The default
-        value is <code>false</code>. (markt)
-      </add>
-      <fix>
-        <bug>63210</bug>: Ensure that the Apache Commons DBCP 2 based default
-        connection pool is correctly shutdown when it is no longer required.
-        This ensures that a non-daemon thread is not left running that will
-        prevent Tomcat from shutting down cleanly. (markt)
-      </fix>
-      <fix>
-        <bug>63213</bug>: Ensure the correct escaping of group names when
-        searching for nested groups when the JNDIRealm is configured with
-        <code>roleNested</code> set to <code>true</code>. (markt)
-      </fix>
-      <fix>
-        <bug>63236</bug>: Use <code>String.intern()</code> as suggested by
-        Phillip Webb to reduce memory wasted due to String duplication. This
-        changes saves ~245k when starting a clean installation. With additional
-        thanks to YourKit Java profiler for helping to track down the wasted
-        memory and the root causes. (markt)
-      </fix>
-      <fix>
-        <bug>63246</bug>: Fix a potential <code>NullPointerException</code> when
-        calling <code>AsyncContext.dispatch()</code>. (markt)
-      </fix>
-      <fix>
-        Always use the absolute path of the <code>docBase</code> during the
-        deployment process to determine the Context name, deployment type,
-        whether the <code>docBase</code> is located within the
-        <code>appBase</code> etc. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <fix>
-        When performing an HTTP/1.1 upgrade to HTTP/2 (h2c) ensure that the hostname
-        and port from the HTTP/1.1 Host header of the upgraded request are made
-        available via the standard methods
-        <code>ServletRequest.getServerName()</code> and
-        <code>ServletRequest.getServerPort()</code>. (markt)
-      </fix>
-      <fix>
-        Refactor the APR/Native endpoint TLS configuration code to enable JSSE
-        style configuration - including JKS keystores - to be used with the
-        APR/Native connector. (markt)
-      </fix>
-      <add>
-        With the TLS configuration refactoring, the configuration attributes
-        <code>sessionCacheSize</code> and <code>sessionTimeout</code> are no
-        longer limited to JSSE implementations. They may now be used with
-        OpenSSL implementations as well. (markt)
-      </add>
-      <fix>
-        Refactor NIO2 read pending strategy for the classic IO API. (remm)
-      </fix>
-      <fix>
-        <bug>63182</bug>: Avoid extra read notifications for HTTP/1.1 with
-        NIO2 when using asynchronous threads. (remm)
-      </fix>
-      <add>
-        <bug>63205</bug>: Add a work-around for a known
-        <a href="https://bugs.openjdk.java.net/browse/JDK-8157404">JRE KeyStore
-        loading bug</a>. (markt)
-      </add>
-      <fix>
-        NIO2 should try to use SocketTimeoutException everywhere rather than a
-        mix of it and InterruptedByTimeout. (remm)
-      </fix>
-      <fix>
-        Correct an error in the request validation that meant that HTTP/2 push
-        requests always resulted in a 400 response. (markt)
-      </fix>
-      <fix>
-        <bug>63223</bug>: Correctly account for push requests when tracking
-        currently active HTTP/2 streams. (markt)
-      </fix>
-      <fix>
-        Ensure enough buffer space when using TLS with NIO2 by using the main
-        read buffer to store additional decrypted data. (remm)
-      </fix>
-      <fix>
-        Verify HTTP/2 stream is still writable before assuming a timeout
-        occurred. (remm)
-      </fix>
-      <fix>
-        Avoid some overflow cases with OpenSSL to improve efficiency, as the
-        OpenSSL engine has an internal buffer. (remm)
-      </fix>
-      <fix>
-        Harmonize HTTP/1.1 NIO2 keepalive code. (remm)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="WebSocket">
-    <changelog>
-      <scode>
-        Remove the <code>STREAMS_DROP_EMPTY_MESSAGES</code> system property that
-        was introduced to work-around four failing TCK tests. An alternative
-        solution has been implemented. Sending messages via
-        <code>getSendStream()</code> and <code>getSendWriter()</code> will now
-        only result in messages on the wire if data is written to the
-        <code>OutputStream</code> or <code>Writer</code>. Writing zero length
-        data will result in an empty message. Note that sending a message via an
-        <code>Encoder</code> may result in the message being send via
-        <code>getSendStream()</code> or <code>getSendWriter()</code>. (markt)
-      </scode>
-    </changelog>
-  </subsection>
-  <subsection name="Web applications">
-    <changelog>
-      <fix>
-        Fix messages used by Manager and Host Manager web applications.
-        Disambiguate message keys used when adding or removing a host.
-        Improve display of summary values on the status page: separate
-        terms and values with a whitespace. Improve wording of messages
-        for expire sessions command. (kkolinko)
-      </fix>
-      <fix>
-        Do not add CSRF nonce parameter and suppress Referer header for external
-        links in Manager and Host Manager web applications. (kkolinko)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Tribes">
-    <changelog>
-      <add>
-        Add feature that discover local member from the static member list.
-        (kfujino)
-      </add>
-      <fix>
-        Ensure that members registered in the addSuspects list are static
-        members. (kfujino)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <add>
-        Expand the coverage and quality of the French translations provided
-        with Apache Tomcat. (remm)
-      </add>
-      <fix>
-        <bug>63041</bug>: Revert the changes for <bug>53930</bug> that added
-        support for the <code>CATALINA_OUT_CMD</code> environment variable as
-        they prevented correct operation with systemd configurations that did
-        not explicitly specify a PID file. (markt)
-      </fix>
-      <add>
-        Expand the coverage and quality of the Russian translations provided
-        with Apache Tomcat. (kkolinko)
-      </add>
-      <fix>
-        Fix the artifactId of <code>tomcat-i18n-cs</code>. (rjung)
-      </fix>
-      <add>
-        Expand the coverage and quality of the Korean translations provided
-        with Apache Tomcat. (woonsan)
-      </add>
-      <add>
-        Expand the coverage and quality of the Chinese translations provided
-        with Apache Tomcat. Includes contributions by winsonzhao. (markt)
-      </add>
-      <add>
-        Expand the coverage and quality of the Czech translations provided
-        with Apache Tomcat. Includes contributions by Arnošt Havelka. (markt)
-      </add>
-      <add>
-        Expand the coverage and quality of the Spanish translations provided
-        with Apache Tomcat. Includes contributions by Ulises Gonzalez Horta.
-        (markt)
-      </add>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.16 (markt)" rtext="2019-02-08">
-  <subsection name="Web applications">
-    <changelog>
-      <fix>
-        Use client's preferred language for the Server Status page of the
-        Manager web application. Review and fix several cases when the
-        client's language preference was not respected in Manager and
-        Host Manager web applications. (kkolinko)
-      </fix>
-      <fix>
-        <bug>63141</bug>: Ensure that translated manager response strings still
-        start with <code>OK -</code> where expected by the associated Ant tasks.
-        (markt)
-      </fix>
-      <fix>
-        <bug>63143</bug>: Ensure that the Manager web application respects the
-        language preferences of the user as configured in the browser when the
-        language of the default system locale is not English. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Tribes">
-    <changelog>
-      <fix>
-        Remove unnecessary shutdown for executor. (kfujino)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <update>
-        Update the NSIS Installer used to build the Windows installer to version
-        3.04. (markt)
-      </update>
-      <add>
-        Add Czech translations to Apache Tomcat. Includes contributions from
-        Arnošt Havelka and Alice. (markt)
-      </add>
-      <add>
-        Expand the coverage and quality of the Spanish translations provided
-        with Apache Tomcat. Includes contributions from Ulises Gonzalez Horta.
-        (markt)
-      </add>
-      <add>
-        Expand the coverage and quality of the French translations provided
-        with Apache Tomcat. (remm)
-      </add>
-      <add>
-        Expand the coverage and quality of the Korean translations provided
-        with Apache Tomcat. (woonsan)
-      </add>
-      <add>
-        Expand the coverage and quality of the Japanese translations provided
-        with Apache Tomcat. Includes contributions from Yujiorama. (markt)
-      </add>
-      <add>
-        Expand the coverage and quality of the Chinese translations provided
-        with Apache Tomcat. Includes contributions from zheng. (markt)
-      </add>
-      <add>
-        Expand the coverage and quality of the Russian translations provided
-        with Apache Tomcat. (kkolinko)
-      </add>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.15 (markt)" rtext="not released">
-  <subsection name="Catalina">
-    <changelog>
-      <fix>
-        <bug>54741</bug>: Add a new method,
-        <code>Tomcat.addWebapp(String,URL)</code>, that allows a web application
-        to be deployed from a URL when using Tomcat in embedded mode. (markt)
-      </fix>
-      <fix>
-        <bug>63002</bug>: Fix setting rewrite qsdiscard flag. (remm)
-      </fix>
-      <fix>
-        Implement the requirements of section 8.2.2 2c of the Servlet
-        specification and prevent a web application from deploying if it has
-        fragments with duplicate names and is configured to use relative
-        ordering of fragments. (markt)
-      </fix>
-      <fix>
-        Ensure that the HEAD response is consistent with the GET response when
-        <code>HttpServlet</code> is relied upon to generate the HEAD response
-        and the GET response uses chunking. (markt)
-      </fix>
-      <fix>
-        Ensure that the <code>ServletOutputStream</code> implementation is
-        consistent with the requirements of asynchronous I/O and that all of the
-        write methods use a single write rather than multiple writes. (markt)
-      </fix>
-      <fix>
-        Correct the Javadoc for <code>Context.getDocBase()</code> and
-        <code>Context.setDocBase()</code> and remove text that indicates that a
-        URL may be used for the <code>docBase</code> as this has not been the
-        case for quite some time. (markt)
-      </fix>
-      <update>
-        Add basic health check valve. (remm)
-      </update>
-      <fix>
-        Correct a bug exposed in 9.0.14 and ensure that the Tomcat terminates in
-        a timely manner when running as a service. (markt)
-      </fix>
-      <fix>
-        Log a message when using a Connector that requires Apr without enabling
-        the AprLifecycleListener first. (csutherl)
-      </fix>
-      <fix>
-        Utility thread count for special negative or zero values will again be
-        based on Runtime.getRuntime().availableProcessors(). (remm)
-      </fix>
-      <scode>
-        Treat I/O errors during request body reads the same way as I/O errors
-        during response body writes. The errors are treated as client side
-        errors rather than server side errors and only logged at debug level.
-        (markt)
-      </scode>
-      <fix>
-        <bug>63038</bug>: Ensure that a <code>ClassNotFoundException</code> is
-        thrown when attempting to load a class from a corrupted JAR file.
-        (markt)
-      </fix>
-      <fix>
-        <bug>63078</bug>: Ensure the utility thread pool is at least two, as the
-        deployer uses a blocking pattern. (remm, markt)
-      </fix>
-      <add>
-        Make the removal of leading and trailing whitespace from credentials
-        passed to BASIC authentication configurable via a new attribute,
-        <code>trimCredentials</code> on the <code>BasicAuthenticator</code>.
-        (markt)
-      </add>
-      <fix>
-        <bug>63003</bug>: Extend the <code>unloadDelay</code> attribute on a
-        <code>Context</code> to include in-flight asynchronous requests. (markt)
-      </fix>
-      <add>
-        <bug>63026</bug>: Add a new attribute, <code>forceDnHexEscape</code>, to
-        the <code>JNDIRealm</code> that forces escaping in the String
-        representation of a distinguished name to use the <code>\nn</code> form.
-        This may avoid issues with realms using Active Directory which appears
-        to be more tolerant of optional escaping when the <code>\nn</code> form
-        is used. (markt)
-      </add>
-      <fix>
-        Avoid a swallowed (and therefore ignored) access failure during web
-        application class loading when running under a
-        <code>SecurityManager</code>. (markt)
-      </fix>
-      <update>
-        Add SSL configuration options to the JMX remote listener using the
-        <code>SSLHostConfig</code> framework. (remm)
-      </update>
-      <update>
-        Update the recommended minimum Tomcat Native version to 1.2.21. (markt)
-      </update>
-      <fix>
-        <bug>63137</bug>: If the resources for a web application have been
-        configured with multiple locations mapped to
-        <code>/WEB-INF/classes</code>, ensure that all of those locations are
-        used when building the web application class path. Patch provided by
-        Marcin Gołębski. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <add>
-        <bug>63009</bug>: Include the optional <code>content-length</code>
-        header in HTTP/2 responses where an appropriate value is available.
-        (markt)
-      </add>
-      <fix>
-        <bug>63022</bug>: Do not use the socket open state when using the
-        wrapper isClosed method for NIO and NIO2, as it will disable all
-        further processing. (remm)
-      </fix>
-      <fix>
-        Fix socket close discrepancies for NIO2, now the wrapper close
-        is used everywhere except for socket accept problems. (remm)
-      </fix>
-      <fix>
-        Fix use of write timeout instead of read timeout for HTTP/2 NIO2
-        frame read. (remm)
-      </fix>
-      <fix>
-        Fix incorrect APR sendfile thread stop. (remm)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Jasper">
-    <changelog>
-      <fix>
-        <bug>63056</bug>: Correct a regression in the fix for <bug>53737</bug>
-        that did not correctly scan the web application directory structure for
-        JSPs. (markt)
-      </fix>
-      <fix>
-        Update the performance optimisation for using expressions in tags that
-        depend on uninitialised tag attributes with implied scope to make the
-        performance optimisation aware of the new public class
-        (<code>java.lang.Enum$EnumDesc</code>) added in Java 12. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="WebSocket">
-    <changelog>
-      <fix>
-        <bug>57974</bug>: Ensure implementation of
-        <code>Session.getOpenSessions()</code> returns correct value for both
-        client-side and server-side calls. (markt)
-      </fix>
-      <fix>
-        <bug>63019</bug>: Use payload remaining bytes rather than limit when
-        writing. Submitted by Benoit Courtilly. (remm)
-      </fix>
-      <fix>
-        When running under a <code>SecurityManager</code>, ensure that the
-        <code>ServiceLoader</code> look-up for the default
-        <code>javax.websocket.server.ServerEndpointConfig.Configurator</code>
-        implementation completes correctly rather than silently using the
-        hard-coded fall-back. (markt)
-      </fix>
-      <fix>
-        Ensure that the network connection is closed if the client receives an
-        I/O error trying to communicate with the server. (markt)
-      </fix>
-      <fix>
-        Ignore synthetic methods when scanning POJO methods. (markt)
-      </fix>
-      <fix>
-        Implement the requirements of section 5.2.1 of the WebSocket 1.1
-        specification and ensure that if the deployment of one Endpoint fails,
-        no Endpoints are deployed for that web application. (markt)
-      </fix>
-      <fix>
-        Implement the requirements of section 4.3 of the WebSocket 1.1
-        specification and ensure that the deployment of an Endpoint fails if
-        <code>@PathParam</code> is used with an invalid parameter type. (markt)
-      </fix>
-      <fix>
-        Ensure a <code>DeploymentException</code> rather than an
-        <code>IllegalArgumentException</code> is thrown if a method annotated
-        with <code>@OnMessage</code> does not conform to the requirements set
-        out in the Javadoc. (markt)
-      </fix>
-      <fix>
-        Improve algorithm that determines if two <code>@OnMessage</code>
-        annotations have been added for the same message type. Prior to this
-        change some matches were missed. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Web applications">
-    <changelog>
-      <fix>
-        <bug>63103</bug>: Remove the unused source.jsp file and associated tag
-        from the examples web application as it is no longer used. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Tribes">
-    <changelog>
-      <update>
-        Add dns-ping support to enumerate cluster members. This is much simpler
-        than getting the pod list but it does not indicate pod status.
-        Submitted by Maxime Beck. (remm)
-      </update>
-      <fix>
-        Never expire the local member from a Membership. (remm)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <update>
-        Update container image with monitoring contraptions. (remm)
-      </update>
-      <add>
-        Expand the coverage and quality of the Korean translations provided with
-        Apache Tomcat. Includes contributions from woonsan and Chris Cho.
-        (markt)
-      </add>
-      <add>
-        Expand the coverage and quality of the Japanese translations provided
-        with Apache Tomcat. Includes contributions from kfujino, Yujiorama and
-        motohashi.yuki. (markt)
-      </add>
-      <add>
-        Expand the coverage and quality of the French translations provided with
-        Apache Tomcat. Includes contributions from remm, Ludovic Pénet and
-        evernat. (markt)
-      </add>
-      <add>
-        Expand the coverage and quality of the German translations provided
-        with Apache Tomcat. Includes contributions from fschumacher, Stefan and
-        burghard. (markt)
-      </add>
-      <add>
-        Expand the coverage and quality of the Chinese (simplified) translations
-        provided with Apache Tomcat. Includes contributions from winsonzhao,
-        Lanranzi, shawn, Winsonzhoa, JinXiqian, RichardHo, qingshi huang,
-        Greenman0007, Jim Ma, huxing, 袁宇杰 and evernat. (markt)
-      </add>
-      <add>
-        Expand the coverage and quality of the Spanish translations provided
-        with Apache Tomcat. Includes contributions from Ulises Gonzalez Horta,
-        Israel, Eduardo Quintanilla and Miguel Ortega. (markt)
-      </add>
-      <add>
-        Expand the coverage and quality of the Russian translations provided
-        with Apache Tomcat. Includes contributions from Andrei Maiseyenka and
-        solomax. (markt)
-      </add>
-      <add>
-        Expand the coverage and quality of the Brazilian Portuguese translations
-        provided with Apache Tomcat. Includes contributions from Victor Caetano
-        and Dabilo. (markt)
-      </add>
-      <fix>
-        <bug>63041</bug>: Correct a regression in the fix for <bug>53930</bug>
-        that prevented Tomcat from working correctly with systemd. Patch
-        provided by Patrik S. (markt)
-      </fix>
-      <update>
-        <fix>63072</fix>: Remove extras (JMX remote listener and webservices
-        object factories) and merge them back into the core build.
-        (remm)
-      </update>
-      <add>
-        Update the internal fork of Apache Commons FileUpload to pick up the
-        changes in the Apache Commons FileUpload 1.4 release. (markt)
-      </add>
-      <update>
-        Update the internal fork of Apache Commons DBCP 2 to de20b77
-        (2019-01-29) to pick up some bug fixes and enhancements. (markt)
-      </update>
-      <update>
-        Update the packaged version of the Tomcat Native Library to 1.2.21 to
-        pick up the memory leak fixes when using NIO/NIO2 with OpenSSL. (markt)
-      </update>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.14 (markt)" rtext="2018-12-12">
-  <subsection name="Catalina">
-    <changelog>
-      <fix>
-        <bug>62788</bug>: Add explicit logging configuration to write log files
-        using UTF-8 to align with Tomcat&apos;s use of UTF-8 by default
-        elsewhere. (markt)
-      </fix>
-      <fix>
-        The default Servlet should not override a previously set content-type.
-        (remm)
-      </fix>
-      <fix>
-        Fix storeconfig for the cluster encryption interceptor key attribute.
-        (remm)
-      </fix>
-      <add>
-        Add a scheduled executor to the Server, which can be used to
-        process periodic utility tasks. The utility threads are non daemon
-        by default. (remm)
-      </add>
-      <update>
-        Refactor container background processor using the Server executor, and
-        add monitoring to reschedule it in case of an unexpected error. (remm)
-      </update>
-      <update>
-        Refactor parallel deployment threads using the Server executor. (remm)
-      </update>
-      <add>
-        Introduce a ConfigurationSource API to standardize access to the core
-        configuration resources of Tomcat. (remm)
-      </add>
-      <update>
-        Update the Tomcat embedded API by allowing to set a configuration
-        source, which will allow processing of core configuration. (remm)
-      </update>
-      <update>
-        Refactor processing of server.xml, web.xml, context.xml, other
-        configuration files and resources using the ConfigurationSource API.
-        JASPIC persistent providers load and store remains file based.
-        StoreConfig Tomcat configuration files storing remains file based
-        at their previous default locations. (remm)
-      </update>
-      <add>
-        <bug>62897</bug>: Provide a property
-        (<code>clearReferencesThreadLocals</code>) on the standard
-        <code>Context</code> implementation that enables the check for memory
-        leaks via <code>ThreadLocal</code>s to be disabled because this check
-        depends on the use of an API that has been deprecated in later versions
-        of Java. (markt)
-      </add>
-      <fix>
-        Fix more storeconfig issues with duplicated SSL attributes. (remm)
-      </fix>
-      <fix>
-        <bug>62924</bug>: Fix file descriptor leak introduced in the code that
-        monitors <code>tomcat-users.xml</code> for modifications. (markt)
-      </fix>
-      <update>
-        Add periodic event notification for lifecycle listeners configured on
-        the Server. (remm)
-      </update>
-      <fix>
-        <bug>62968</bug>: Avoid unnecessary (and relatively expensive)
-        <code>getResources()</code> call in the Mapper when processing rule 7.
-        (markt)
-      </fix>
-      <update>
-        Update the recommended minimum Tomcat Native version to 1.2.19. (markt)
-      </update>
-      <fix>
-        <bug>62978</bug>: Update the RemoteIpValve to handle multiple values in
-        the <code>x-forwarded-proto</code> header. Patch provided by Tom Groot.
-        (markt)
-      </fix>
-      <fix>
-        Update the RemoteIpFilter to handle multiple values in the
-        <code>x-forwarded-proto</code> header. Based on a patch provided by Tom
-        Groot. (markt)
-      </fix>
-      <scode>
-        <bug>62986</bug>: Refactor the code that performs class scanning during
-        web application start to make integration simpler for downstream users.
-        Patch provided by rmannibucau. (markt)
-      </scode>
-      <fix>
-        Filter out tomcat-web.xml from the watched resources list in
-        storeconfig. (remm)
-      </fix>
-      <fix>
-        <bug>62988</bug>: Fix the <code>LoadBalancerDrainingValve</code> so it
-        works when the session cookie configuration is not explicitly declared.
-        Based on a patch provided by Andreas Kurth. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <update>
-        Refactor connector async timeout threads using a scheduled executor.
-        (remm)
-      </update>
-      <update>
-        Avoid using a dedicated thread for accept on the NIO2 connector, it is
-        always less efficient. (remm)
-      </update>
-      <update>
-        Load SSL configuration resources for JSSE using the ConfigurationSource
-        API. OpenSSL use requires actual files. (remm)
-      </update>
-      <fix>
-        <bug>62899</bug>: Prevent the incorrect timing out of connections when
-        Servlet non-blocking I/O is used to read a request body over an HTTP/2
-        stream. (markt)
-      </fix>
-      <fix>
-        Avoid bad SSLHostConfig JMX registrations before init. (remm)
-      </fix>
-      <fix>
-        Avoid a potential hang when a client connects using TLS 1.0 to a Tomcat
-        HTTPS connector configured to use NIO or NIO2 with OpenSSL 1.1.1 or
-        later. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Jasper">
-    <changelog>
-      <update>
-        Update the Eclipse Compiler for Java to 4.9. Additional patch by Lukasz
-        Jader. (markt)
-      </update>
-      <add>
-        <bug>53737</bug>: Extend JspC, the precompilation tool, to include
-        support for resource JARs. (markt)
-      </add>
-      <fix>
-        <bug>62976</bug>: Avoid an <code>IllegalStateException</code> when using
-        background compilation when tag files are packaged in JAR files. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Web applications">
-    <changelog>
-      <add>
-        <bug>53553</bug>: Add the ability to specify a context.xml from the
-        server to use when uploading a web application for deployment with the
-        Manager web application. Patch provided by Anton Lindström. (markt)
-      </add>
-      <fix>
-        <bug>62918</bug>: Filter out subtype mbeans to avoid breaking the
-        connector status page. (remm)
-      </fix>
-      <fix>
-        Unify letter case of the word 'How-To' in the webapps (csutherl)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Tribes">
-    <changelog>
-      <update>
-        Refactor various operations performed in tribes using a scheduled
-        executor. When tribes is not running standalone, it will use the
-        executor from the Catalina Server. If running independently, the
-        Channel will provide the executor. (remm)
-      </update>
-      <fix>
-        Make EncryptInterceptor thread-safe. This makes this interceptor
-        actually usable. (schultz/markt)
-      </fix>
-      <add>
-        Add support for GCM mode to EncryptInterceptor. (schultz)
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <fix>
-        Prevent an error when running in a Cygwin shell and the
-        <code>JAVA_ENDORSED_DIRS</code> system property is empty. Patch provided
-        by Zemian Deng. (markt)
-      </fix>
-      <add>
-        Expand the coverage and quality of the French translations provided with
-        Apache Tomcat. Includes contributions from remm, soliplaya, Ludovic
-        Pénet, David, NicolasG and bdelacretaz. (markt)
-      </add>
-      <add>
-        Add Simplified Chinese translations to the translations to Apache
-        Tomcat. Includes contributions from Darren Luo, syseal, Winsonzhao,
-        袁宇杰, Lanranzi, ZhangJieWen, Jerry, yinzhili001, 安柏诚, shawn, lavender,
-        Zheng Feng, zengwc, RichardHo, mm, gingshi huang, Bob, geekwang, zheng,
-        Deanzhg, Tianfengjingjing, Panblack, oking, Dave Newman, Cnfnss, Jim Ma,
-        852394875, huxing and Greenman0007. (markt)
-      </add>
-      <add>
-        Add Korean translations to Apache Tomcat. Includes contributions from
-        woonsan, JunSang Park, song choe and OhChan. (markt)
-      </add>
-      <add>
-        Expand the coverage and quality of the Spanish translations provided
-        with Apache Tomcat. Includes contributions from Ulises Gonzalez Horta,
-        Israel, Eduardo Quintanilla and Miguel suarez. (markt)
-      </add>
-      <add>
-        Expand the coverage and quality of the Russian translations provided
-        with Apache Tomcat. Includes contributions from solomax, Rafael Sachakov
-        and Andrei Maiseyenka. (markt)
-      </add>
-      <add>
-        Expand the coverage and quality of the German translations provided
-        with Apache Tomcat. Includes contributions from Matk80, burghard,
-        Daniel Wehringer and Felix Schumacher. (markt)
-      </add>
-      <add>
-        Expand the coverage and quality of the Japanese translations provided
-        with Apache Tomcat. Includes contributions from Yujiorama,
-        motohashi.yuki and kfujino. (markt)
-      </add>
-      <add>
-        Add Brazilian Portuguese translations to Apache Tomcat. Includes
-        contributions from geraldo netto. (markt)
-      </add>
-      <fix>
-        Include Brazilian Portuguese translations in the standard Tomcat
-        distribution. (markt)
-      </fix>
-      <fix>
-        Include Simplified Chinese translations in the standard Tomcat
-        distribution. (markt)
-      </fix>
-      <fix>
-        Include Korean translations in the standard Tomcat distribution. (markt)
-      </fix>
-      <add>
-        Add a packaging method for Tomcat using Maven, as well as a container
-        build file for it. (remm)
-      </add>
-      <fix>
-        Add XML Namespace to the project element of all POM files so that the
-        XML files are Well Formed and Valid. (csutherl)
-      </fix>
-      <add>
-        <bug>53930</bug>: Add support for the <code>CATALINA_OUT_CMD</code>
-        environment variable that defines a command to which captured stdout and
-        stderr will be redirected. Patch provided by Casey Lucas. (markt)
-      </add>
-      <update>
-        Update the packaged version of the Tomcat Native Library to 1.2.19 to
-        pick up the latest Windows binaries built with APR 1.6.5 and OpenSSL
-        1.1.1a. (markt)
-      </update>
-      <update>
-        Add i18n to many strings that lacked it. (remm)
-      </update>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.13 (markt)" rtext="2018-11-07">
-  <subsection name="Catalina">
-    <changelog>
-      <add>
-        <bug>58590</bug>: Add the ability for a UserDatabase to monitor the
-        backing XML file for changes and reload the source file if a change in
-        the last modified time is detected. This is enabled by default meaning
-        that changes to <code>$CATALINA_BASE/conf/tomcat-users.xml</code> will
-        now take effect a short time after the file is saved. (markt)
-      </add>
-      <add>
-        <bug>61171</bug>: Add the <code>portOffset</code> attribute to the
-        <code>Server</code> element which is added to the configured shutdown
-        and <code>Connector</code> ports. Based on a patch by Marek Czernek.
-        (markt)
-      </add>
-      <add>
-        <bug>61692</bug>: Add the ability to control which HTTP methods are
-        handled by the CGI Servlet via a new initialization parameter
-        <code>cgiMethods</code>. (markt)
-      </add>
-      <fix>
-        <bug>62687</bug>: Expose content length information for resources
-        when using a compressed war. (remm)
-      </fix>
-      <fix>
-        <bug>62737</bug>: Fix rewrite substitutions parsing of {} nesting.
-        (remm)
-      </fix>
-      <fix>
-        Add rewrite flags output when getting the rewrite configuration back.
-        (remm)
-      </fix>
-      <fix>
-        Add missing qsdiscard flag to the rewrite flags as a cleaner way to
-        discard the query string. (remm)
-      </fix>
-      <add>
-        <bug>62755</bug>: Add ability to opt out of adding the default web.xml
-        config when embedding Tomcat and adding a context via
-        <code>addWebapp()</code>. Call
-        <code>setAddDefaultWebXmlToWebapp(false)</code> to prevent the automatic
-        config. (isapir)
-      </add>
-      <fix>
-        Add documentation about the files <code>context.xml.default</code> and
-        <code>web.xml.default</code> that can be used to customize
-        <code>conf/context.xml</code> and <code>conf/web.xml</code> on a per
-        host basis. (fschumacher)
-      </fix>
-      <fix>
-        Ensure that a canonical path is always used for the docBase of a Context
-        to ensure consistent behaviour. (markt)
-      </fix>
-      <fix>
-        <bug>62803</bug>: Fix SSL connector configuration processing
-        in storeconfig. (remm)
-      </fix>
-      <fix>
-        <bug>62797</bug>: Pass throwable to keep client aborts with status 200
-        rather than 500. Patch submitted by zikfat. (remm)
-      </fix>
-      <fix>
-        <bug>62802</bug>: Restore the <code>appContextProtection</code>
-        attribute to the <code>JreMemoryLeakPreventionListener</code> as
-        application code may still trigger this memory leak. (markt)
-      </fix>
-      <fix>
-        <bug>62809</bug>: Correct a regression in the implementation of DIGEST
-        authentication support for the Deployer Ant tasks (bug <bug>45832</bug>)
-        that prevented the <code>DeployTask</code> from working when
-        authentication was required. (markt)
-      </fix>
-      <update>
-        Update the recommended minimum Tomcat Native version to 1.2.18. (markt)
-      </update>
-      <add>
-        Ignore an attribute named <code>source</code> on <code>Context</code>
-        elements provided by <code>StandardContext</code>. This is to suppress
-        warnings generated by the Eclipse / Tomcat integration provided by
-        Eclipse. Based on a patch by mdfst13. (markt)
-      </add>
-      <add>
-        <bug>62830</bug>: Added <code>JniLifeCycleListener</code> and static
-        methods <code>Library.loadLibrary(libraryName)</code> and
-        <code>Library.load(filename)</code> to load a native library by a
-        shared class loader so that more than one Webapp can use it. (isapir)
-      </add>
-      <scode>
-        Refactor the <code>Connector</code> so that the port is obtained from
-        the <code>Endpoint</code> rather than a local field that could end up
-        out of sync. (markt)
-      </scode>
-      <fix>
-        Correct a typo in the Spanish resource files. Patch provided by Diego
-        Agulló. (markt)
-      </fix>
-      <fix>
-        <bug>62868</bug>: Order the <code>Enumeration&lt;URL&gt;</code> provided
-        by <code>WebappClassLoaderBase.getResources(String)</code> according to
-        the setting of the delegate flag. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <add>
-        Add TLSv1.3 to the default protocols and to the <code>all</code>
-        alias for JSSE based TLS connectors when running on a JVM that
-        supports TLS version 1.3. One such JVM is OpenJDK version 11. (rjung)
-      </add>
-      <fix>
-        <bug>62685</bug>: Correct an error in host name validation parsing that
-        did not allow a fully qualified domain name to terminate with a period.
-        Patch provided by AG. (markt)
-      </fix>
-      <fix>
-        Make PEM file parser a public utility class. (remm)
-      </fix>
-      <fix>
-        <bug>62739</bug>: Do not reject requests with an empty HTTP Host header.
-        Such requests are unusual but not invalid. Patch provided by Michael
-        Orr. (markt)
-      </fix>
-      <add>
-        <bug>62748</bug>: Add TLS 1.3 support for the APR/Native connector and
-        the NIO/NIO2 connector when using the OpenSSL backed JSSE
-        implementation. (schultz/markt)
-      </add>
-      <fix>
-        <bug>62791</bug>: Remove an unnecessary check in the NIO TLS
-        implementation that prevented from secure WebSocket connections from
-        being established. (markt)
-      </fix>
-      <fix>
-        Fix server initiated TLS renegotiation to obtain a client certificate
-        when using NIO/NIO2 and the OpenSSL backed JSSE TLS implementation.
-        (markt)
-      </fix>
-      <fix>
-        Ensure open sockets etc. are cleaned up if the socket binding process
-        fails. (markt)
-      </fix>
-      <fix>
-        <bug>62871</bug>: Improve MBeans for Endpoint instances (type
-        <code>ThreadPool</code> in JMX) by using explicit declaration of
-        attributes and operations rather than relying on introspection. Add a
-        new MBean to expose the <code>Socketproperties</code> values. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Jasper">
-    <changelog>
-      <fix>
-        Correct parsing of XML whitespace in TLD function signatures that
-        incorrectly only looked for the space character. (markt)
-      </fix>
-      <fix>
-        <bug>62674</bug>: Correct a regression in the stand-alone JSP compiler
-        utility, <code>JspC</code>, caused by the fix for <bug>53492</bug>, that
-        caused the JSP compiler to hang. (markt)
-      </fix>
-      <fix>
-        <bug>62721</bug>: Correct generation of web.xml header when using JspC.
-        (markt)
-      </fix>
-      <fix>
-        <bug>62757</bug>: Correct a regression in the fix for <bug>62603</bug>
-        that caused <code>NullPointerException</code>s when compiling tag files
-        on first access when development mode was disabled and background
-        compilation was enabled. Based on a patch by Jordi Llach. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="WebSocket">
-    <changelog>
-      <fix>
-        <bug>62731</bug>: Make the URI returned by
-        <code>HandshakeRequest.getRequestURI()</code> and
-        <code>Session.getRequestURI()</code> absolute so that the scheme, host
-        and port are accessible. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Web applications">
-    <changelog>
-      <fix>
-        <bug>62676</bug>: Expand the CORS filter documentation to make it clear
-        that explicit configuration is required to enable support for
-        cross-origin requests. (markt)
-      </fix>
-      <fix>
-        <bug>62712</bug>: Correct NPE in Manager application when attempting to
-        view configured certificates for an APR/native TLS connector. (markt)
-      </fix>
-      <fix>
-        <bug>62761</bug>: Correct the advanced CORS example in the Filter
-        documentation to use a valid configuration. (markt)
-      </fix>
-      <fix>
-        <bug>62786</bug>: Add a note to the Context documentation to explain
-        that, by default, settings for a Context element defined in server.xml
-        will be overwritten by settings specified in a default context file such
-        as <code>conf/context.xml</code>. (markt)
-      </fix>
-      <fix>
-        Create a little visual separation between the Undeploy button and the
-        other buttons in the Manager application. Patch provided by Łukasz
-        Jąder. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Tribes">
-    <changelog>
-      <add>
-        Add <code>setMembershipService</code> method to the
-        <code>MembershipProvider</code>. (kfujino)
-      </add>
-      <add>
-        Experimental Kubernetes aware cloud membership provider, based on code
-        by Maxime Beck. Contains code derived from jgroups. (remm/kfujino)
-      </add>
-      <fix>
-        Move the event notification <code>ThreadPoolExecutor</code> to
-        <code>MembershipProviderBase</code>. (kfujino)
-      </fix>
-      <fix>
-        Even if all members have already disappeared and PING can not be sent,
-        ensure that members will be expired. (kfujino)
-      </fix>
-      <fix>
-        Ensure that remove the member from suspect list when member added.
-        (kfujino)
-      </fix>
-      <add>
-        Add EncryptInterceptor to the portfolio of available clustering
-        interceptors. This adds symmetric encryption of session data
-        to Tomcat clustering regardless of the type of cluster manager
-        or membership being used. (schultz)
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <fix>
-        Port DBCP transaction synchronization registry fix
-        (commit d49d45e). (remm)
-      </fix>
-      <update>
-        Update the internal fork of Apache Commons Pool 2 to d4e0e88
-        (2018-09-12) to pick up some bug fixes and enhancements. (markt)
-      </update>
-      <add>
-        <bug>62705</bug>: Added a fail fast check for minimum required Apache
-        Ant version 1.9.8 when building Tomcat. (isapir)
-      </add>
-      <add>
-        Added ant target ide-intellij to create an IntelliJ IDEA project. (isapir)
-      </add>
-      <add>
-        Utility JSON parser generated from a public domain javacc grammar
-        written by Robert Fischer. (remm)
-      </add>
-      <update>
-        Update the packaged version of the Tomcat Native Library to 1.2.18 to
-        pick up the latest Windows binaries built with APR 1.6.5 and OpenSSL
-        1.1.1. (markt)
-      </update>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.12 (markt)" rtext="2018-09-10">
-  <subsection name="Catalina">
-    <changelog>
-      <fix>
-        Improve the handling of path parameters when working with
-        RequestDispatcher objects. (markt)
-      </fix>
-      <fix>
-        <bug>62664</bug>: Process requests with content type
-        <code>multipart/form-data</code> to servlets with a
-        <code>@MultipartConfig</code> annotation regardless of HTTP method.
-        (markt)
-      </fix>
-      <fix>
-        <bug>62667</bug>: Add recursion to rewrite substitution parsing. (remm)
-      </fix>
-      <fix>
-        <bug>62669</bug>: When using the SSIFilter and a resource does not
-        specify a content type, do not force the content type to
-        <code>application/x-octet-stream</code>. (markt)
-      </fix>
-      <fix>
-        <bug>62670</bug>: Adjust the memory leak protection for the
-        <code>DriverManager</code> so that JDBC drivers located in
-        <code>$CATALINA_HOME/lib</code> and <code>$CATALINA_BASE/lib</code> are
-        loaded via the service loader mechanism when the protection is enabled.
-        (markt)
-      </fix>
-      <fix>
-        When generating a redirect to a directory in the Default Servlet, avoid
-        generating a protocol relative redirect. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <fix>
-        Fix potential deadlocks when using asynchronous Servlet processing with
-        HTTP/2 connectors. (markt)
-      </fix>
-      <fix>
-        <bug>62620</bug>: Fix corruption of response bodies when writing large
-        bodies using asynchronous processing over HTTP/2. (markt)
-      </fix>
-      <fix>
-        <bug>62628</bug>: Additional fixes for output corruption of response
-        bodies when writing large bodies using asynchronous processing over
-        HTTP/2. (markt)
-      </fix>
-      <scode>
-        Support for Netware in the <code>org.apache.tomcat.jni</code> package
-        has been removed as there has not been a supported Netware platform for
-        a number of years. (markt)
-      </scode>
-    </changelog>
-  </subsection>
-  <subsection name="Jasper">
-    <changelog>
-      <fix>
-        Correct the JSP version in the X-PoweredBy HTTP header generated when
-        the xpoweredBy option is enabled. (markt)
-      </fix>
-      <fix>
-        <bug>62662</bug>: Fix the corruption of web.xml output during JSP
-        compilation caused by the fix for <bug>53492</bug>. Patch provided by
-        Bernhard Frauendienst. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Web applications">
-    <changelog>
-      <add>
-        Expand the information in the documentation web application regarding
-        the use of <code>CATALINA_HOME</code> and <code>CATALINA_BASE</code>.
-        Patch provided by Marek Czernek. (markt)
-      </add>
-      <fix>
-        <bug>62652</bug>: Make it clearer that the version of DBCP that is
-        packaged in Tomcat 9.0.x is DBCP 2. Correct the names of some DBCP 2
-        configuration attributes that changed between 1.x and 2.x. (markt)
-      </fix>
-      <add>
-        <bug>62666</bug>: Expand internationalisation support in the Manager
-        application to include the server status page and provide Russian
-        translations in addition to English. Patch provided by Artem Chebykin.
-        (markt)
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <fix>
-        Switch the build script to use http for downloads from an ASF mirror
-        using the closer.lua script to avoid failures due to HTTPS to HTTP
-        redirects. (rjung)
-      </fix>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.11 (markt)" rtext="2018-08-17">
-  <subsection name="Catalina">
-    <changelog>
-      <add>
-        Make the <code>isLocked()</code> method of the <code>LockOutRealm</code>
-        public and expose the method via JMX. (markt)
-      </add>
-      <add>
-        <bug>53387</bug>: Add support for regular expression capture groups to
-        the SSI servlet and filter. (markt)
-      </add>
-      <fix>
-        <bug>53411</bug>: Improve the handling of HTTP requests that do not
-        explicitly specify a host name when no default host is configured. Also
-        improve the tracking of changes to the default host as hosts are added
-        and removed while Tomcat is running. (markt)
-      </fix>
-      <fix>
-        Ensure that the HTTP Vary header is set correctly when using the CORS
-        filter and improve the cacheability of requests that pass through the
-        COPRS filter. (markt)
-      </fix>
-      <fix>
-        <bug>62527</bug>: Revert restriction of JNDI to the <code>java:</code>
-        namespace. (remm)
-      </fix>
-      <add>
-        Introduce a new class - <code>MultiThrowable</code> - to report
-        exceptions when multiple actions are taken where each action may throw
-        an exception but all actions are taken before any errors are reported.
-        Use this new class when reporting multiple container (e.g. web
-        application) failures during start. (markt)
-      </add>
-      <fix>
-        Correctly decode URL paths (<code>+</code> should not be decoded to a
-        space in the path) in the <code>RequestDispatcher</code> and the web
-        application class loader. (markt)
-      </fix>
-      <add>
-        Make logout more robust if JASPIC subject is unexpectedly unavailable.
-        (markt)
-      </add>
-      <fix>
-        <bug>62547</bug>: JASPIC <code>cleanSubject()</code> was not called on
-        logout when the authenticator was configured to cache the authenticated
-        Principal. Patch provided by Guillermo González de Agüero. (markt)
-      </fix>
-      <add>
-        <bug>62559</bug>: Add <code>jaxb-*.jar</code> to the list of JARs
-        ignored by <code>StandardJarScanner</code>. (markt)
-      </add>
-      <add>
-        <bug>62560</bug>: Add <code>oraclepki.jar</code> to the list of JARs
-        ignored by <code>StandardJarScanner</code>. (markt)
-      </add>
-      <add>
-        <bug>62607</bug>: Return a non-zero exit code from
-        <code>catalina.[bat|sh] run</code> if Tomcat fails to start. (markt)
-      </add>
-      <fix>
-        Use short circuit logic to prevent potential NPE in CorsFilter. (fschumacher)
-      </fix>
-      <scode>
-        Simplify construction of appName from container name in JAASRealm. (fschumacher)
-      </scode>
-      <scode>
-        Remove <code>ServletException</code> from declaration of
-        <code>Tomcat.addWebapp(String,String)</code> since it is never thrown.
-        Patch provided by Tzafrir. (markt)
-      </scode>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <scode>
-        Refactor HTTP date creation and parsing to reduce code duplication,
-        reduce the use of ThreadLocals and to increase the use of caching.
-        (markt)
-      </scode>
-      <fix>
-        <bug>56676</bug>: Add a default location for the native library, as
-        ${catalina.home}/bin, which the testsuite already uses. (remm)
-      </fix>
-      <update>
-        <bug>60560</bug>: Add support for using an inherited channel to
-        the NIO connector. Based on a patch submitted by Thomas Meyer with
-        testing and suggestions by Coty Sutherland. (remm)
-      </update>
-      <fix>
-        <bug>62507</bug>: Ensure that JSSE based TLS connectors work correctly
-        with a DKS keystore. (markt)
-      </fix>
-      <fix>
-        Refactor code that adds an additional header name to the
-        <code>Vary</code> HTTP response header to use a common utility method
-        that addresses several additional edge cases. (markt)
-      </fix>
-      <fix>
-        <bug>62515</bug>: When a connector is configured (via setting
-        <code>bindOnInit</code> to <code>false</code>) to bind/unbind the server
-        socket during start/stop, close the socket earlier in the stop process
-        so new connections do not sit in the TCP backlog during the shutdown
-        process only to be dropped as stop completes. In this scenario new
-        connections will now be refused immediately. (markt)
-      </fix>
-      <fix>
-        <bug>62526</bug>: Correctly handle PKCS12 format key stores when the key
-        store password is configured to be the empty string. (markt)
-      </fix>
-      <fix>
-        <bug>62605</bug>: Ensure <code>ReadListener.onDataAvailable()</code> is
-        called when the initial request body data arrives after the request
-        headers when using asynchronous processing over HTTP/2. (markt)
-      </fix>
-      <fix>
-        <bug>62614</bug>: Ensure that
-        <code>WriteListener.onWritePossible()</code> is called after
-        <code>isReady()</code> returns <code>false</code> and the window size is
-        subsequently incremented when using asynchronous processing over HTTP/2.
-        (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Jasper">
-    <changelog>
-      <add>
-        <bug>53492</bug>: Make the Java file generation process multi-threaded.
-        By default, one thread will be used per core. Based on a patch by Dan
-        Fabulich. (markt)
-      </add>
-      <add>
-        <bug>62453</bug>: Add a performance optimisation for using expressions
-        in tags that depend on uninitialised tag attributes with implied scope.
-        Generally, using an explicit scope with tag attributes in EL is the best
-        way to avoid various potential performance issues. (markt)
-      </add>
-      <fix>
-        Correctly decode URL paths (<code>+</code> should not be decoded to a
-        space in the path) in the Jasper class loader. (markt)
-      </fix>
-      <fix>
-        <bug>62603</bug>: Fix a potential race condition when development mode
-        is disabled and background compilation checks are enabled. It was
-        possible that some updates would not take effect and/or
-        <code>ClassNotFoundException</code>s would occur. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="WebSocket">
-    <changelog>
-      <fix>
-        <bug>62596</bug>: Remove the limit on the size of the initial HTTP
-        upgrade request used to establish the web socket connection. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Web applications">
-    <changelog>
-      <add>
-        <bug>62558</bug>: Add Russian translations for the Manager and Host
-        Manager web applications. Based on a patch by Ivan Krasnov. (markt)
-      </add>
-      <add>
-        Add documents for Static Membership service. (kfujino)
-      </add>
-      <add>
-        <bug>62561</bug>: Add advanced class loader configuration information
-        regarding the use of the Server and Shared class loaders to the
-        documentation web application. (markt)
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="Tribes">
-    <changelog>
-      <fix>
-        Ensures that the specified <code>rxBufSize</code> is correctly set to
-        receiver buffer size. (kfujino)
-      </fix>
-      <fix>
-        Correct the stop order of the Channel components. It stops in the
-        reverse order to that at startup. (kfujino)
-      </fix>
-      <add>
-        Added new StaticMembership implementation. This implementation does not
-        require any additional configuration of other
-        <code>ChannelInterceptors</code>. It works only with membership service.
-        (kfujino)
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <update>
-        Support building with Java 9+ while preserving the Java 8 compatibility
-        at runtime (requires Ant 1.9.8 or later). (ebourg)
-      </update>
-      <update>
-        Update WSDL4J library to version 1.6.3 (from 1.6.2). (kkolinko)
-      </update>
-      <update>
-        Update JUnit library to version 4.12 (from 4.11). (kkolinko)
-      </update>
-      <update>
-        Downgrade CGLib library used for testing with EasyMock to version
-        2.2.2 (from 2.2.3) as version 2.2.3 is not available from Maven Central.
-        (markt)
-      </update>
-      <add>
-        Implement checksum checks when downloading dependencies that are used
-        to build Tomcat. (kkolinko)
-      </add>
-      <fix>
-        Fixed spelling. Patch provided by Jimmy Casey via GitHub. (violetagg)
-      </fix>
-      <update>
-        Update the internal fork of Apache Commons Pool 2 to 3e02523
-        (2018-08-09) to pick up some bug fixes and enhancements. (markt)
-      </update>
-      <update>
-        Update the internal fork of Apache Commons DBCP 2 to abc0484
-        (2018-08-09) to pick up some bug fixes and enhancements. (markt)
-      </update>
-      <fix>
-        Correct various spelling errors throughout the source code and
-        documentation. Patch provided by Kazuhiro Sera. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.10 (markt)" rtext="2018-06-25">
-  <subsection name="Catalina">
-    <changelog>
-      <fix>
-        <bug>62476</bug>: Use GMT timezone for the value of
-        <code>Expires</code> header as required by HTTP specification
-        (RFC 7231, 7234). (kkolinko)
-      </fix>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.9 (markt)" rtext="not released">
-  <subsection name="Catalina">
-    <changelog>
-      <fix>
-        Treat the <code>&lt;mapped-name&gt;</code> element of a
-        <code>&lt;env-entry&gt;</code> in web.xml in the same way as the
-        <code>mappedName</code> element of the equivalent <code>@Resource</code>
-        annotation. Both now attempt to set the <code>mappedName</code> property
-        of the resource. (markt)
-      </fix>
-      <fix>
-        Correct the processing of resources with
-        <code>&lt;injection-target&gt;</code>s defined in web.xml. First look
-        for a match using JavaBean property names and then, only if a match is
-        not found, look for a match using fields. (markt)
-      </fix>
-      <fix>
-        When restoring a saved request with a request body after FORM
-        authentication, ensure that calls to the <code>HttpServletRequest</code>
-        methods <code>getRequestURI()</code>, <code>getQueryString()</code> and
-        <code>getProtocol()</code> are not corrupted by the processing of the
-        saved request body. (markt)
-      </fix>
-      <fix>
-        JNDI resources that are defined with injection targets but no value are
-        now treated as if the resource is not defined. (markt)
-      </fix>
-      <fix>
-        Ensure that JNDI names used for <code>&lt;lookup-name&gt;</code> entries
-        in web.xml and for <code>lookup</code> elements of
-        <code>@Resource</code> annotations specify a name with an explicit
-        <code>java:</code> namespace. (markt)
-      </fix>
-      <fix>
-        <bug>50019</bug>: Add support for <code>&lt;lookup-name&gt;</code>.
-        Based on a patch by Gurkan Erdogdu. (markt)
-      </fix>
-      <add>
-        Add the <code>AuthenticatedUserRealm</code> for use with CLIENT-CERT and
-        SPNEGO when just the authenticated user name is required. (markt)
-      </add>
-      <fix>
-        <bug>50175</bug>: Add a new attribute to the standard context
-        implementation, <code>skipMemoryLeakChecksOnJvmShutdown</code>, that
-        allows the user to configure Tomcat to skip the memory leak checks
-        usually performed during web application stop if that stop is triggered
-        by a JVM shutdown. (markt)
-      </fix>
-      <add>
-        <bug>51497</bug>: Add an option, <code>ipv6Canonical</code>, to the
-        <code>AccessLogValve</code> that causes IPv6 addresses to be output in
-        canonical form defined by RFC 5952. (ognjen/markt)
-      </add>
-      <add>
-        <bug>51953</bug>: Add the <code>RemoteCIDRFilter</code> and
-        <code>RemoteCIDRValve</code> that can be used to allow/deny requests
-        based on IPv4 and/or IPv6 client address where the IP ranges are defined
-        using CIDR notation. Based on a patch by Francis Galiegue. (markt)
-      </add>
-      <fix>
-        <bug>62343</bug>: Make CORS filter defaults more secure. This is the fix
-        for CVE-2018-8014. (markt)
-      </fix>
-      <fix>
-        Ensure that the web application resources implementation does not
-        incorrectly cache results for resources that are only visible as class
-        loader resources. (markt)
-      </fix>
-      <fix>
-        <bug>62387</bug>: Do not log a warning message if the file based
-        persistent session store fails to delete the file for a session when the
-        session is invalidated because the file has not been created yet.
-        (markt)
-      </fix>
-      <fix>
-        Make all loggers associated with Tomcat provided Filters non-static to
-        ensure that log messages are not lost when a web application is
-        reloaded. (markt)
-      </fix>
-      <fix>
-        Correct the manifest for the annotations-api.jar. The JAR implements the
-        Common Annotations API 1.3 and the manifest should reflect that. (markt)
-      </fix>
-      <fix>
-        Switch to non-static loggers where there is a possibility of a logger
-        becoming associated with a web application class loader causing log
-        messages to be lost if the web application is stopped. (markt)
-      </fix>
-      <add>
-        <bug>62389</bug>: Add the IPv6 loopback address to the default
-        <code>internalProxies</code> regular expression. Patch by Craig Andrews.
-        (markt)
-      </add>
-      <fix>
-        In the <code>RemoteIpValve</code> and <code>RemoteIpFilter</code>,
-        correctly handle the case when the request passes through one or more
-        <code>trustedProxies</code> but no <code>internalProxies</code>. Based
-        on a patch by zhanhb. (markt)
-      </fix>
-      <fix>
-        Correct the logic in <code>MBeanFactory.removeConnector()</code> to
-        ensure that the correct Connector is removed when there are multiple
-        Connectors using different addresses but the same port. (markt)
-      </fix>
-      <fix>
-        Make <code>JAASRealm</code> mis-configuration more obvious by requiring
-        the authenticated Subject to include at least one Principal of a type
-        specified by <code>userClassNames</code>. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <fix>
-        Correct a regression in the error page handling that prevented error
-        pages from issuing redirects or taking other action that required the
-        response status code to be changed. (markt)
-      </fix>
-      <fix>
-        Consistent exception propagation for NIO2 SSL close. (remm)
-      </fix>
-      <fix>
-        Followup sync fix for NIO2 async IO blocking read/writes. (remm)
-      </fix>
-      <fix>
-        Log an error message if the AJP connector detects that the reverse proxy
-        is sending AJP messages that are too large for the configured
-        <code>packetSize</code>. (markt)
-      </fix>
-      <fix>
-        Relax Host validation by removing the requirement that the final
-        component of a FQDN must be alphabetic. (markt)
-      </fix>
-      <fix>
-        <bug>62371</bug>: Improve logging of Host validation failures. (markt)
-      </fix>
-      <fix>
-        Fix a couple of unlikely edge cases in the shutting down of the
-        APR/native connector. (markt)
-      </fix>
-      <fix>
-        Add missing handshake timeout for NIO2. (remm)
-      </fix>
-      <fix>
-        Correctly handle a digest authorization header when the user name
-        contains an escaped character. (markt)
-      </fix>
-      <fix>
-        Correctly handle a digest authorization header when one of the hex
-        field values ends the header with in an invalid character. (markt)
-      </fix>
-      <fix>
-        Correctly handle an invalid quality value in an
-        <code>Accept-Language</code> header. (markt)
-      </fix>
-      <docs>
-        <bug>62423</bug>: Fix SSL docs CRL attribute typo. (remm)
-      </docs>
-      <fix>
-        Improve IPv6 validation by ensuring that IPv4-Mapped IPv6 addresses do
-        not contain leading zeros in the IPv4 part. Based on a patch by Katya
-        Stoycheva. (markt)
-      </fix>
-      <fix>
-        Fix <code>NullPointerException</code> thrown from <code>
-        replaceSystemProperties()</code> when trying to log messages. (csutherl)
-      </fix>
-      <fix>
-        Avoid unnecessary processing of async timeouts. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Jasper">
-    <changelog>
-      <add>
-        <bug>50234</bug>: Add the capability to generate a web-fragment.xml file
-        to JspC. (markt)
-      </add>
-      <fix>
-        <bug>62080</bug>: Ensure that all reads of the current thread's context
-        class loader made by the UEL API and implementation are performed via a
-        <code>PrivilegedAction</code> to ensure that a
-        <code>SecurityException</code> is not triggered when running under a
-        <code>SecurityManager</code>. (mark)
-      </fix>
-      <fix>
-        <bug>62350</bug>: Refactor
-        <code>org.apache.jasper.runtime.BodyContentImpl</code> so a
-        <code>SecurityException</code> is not thrown when running under a
-        SecurityManger and additional permissions are not required in the
-        <code>catalina.policy</code> file. This is a follow-up to the fix for
-        <bug>43925</bug>. (kkolinko/markt)
-      </fix>
-      <fix>
-        Enable JspC from Tomcat 9 to work with Maven JspC compiler plug-ins
-        written for Tomcat 8.5.x. Patch provided by Pavel Cibulka. (markt)
-      </fix>
-      <fix>
-        Update web.xml, web-fragment.xml and web.xml extracts generated by JspC
-        to use the Servlet 4.0 version of the relevant schemas. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Cluster">
-    <changelog>
-      <fix>
-        Remove duplicate calls when creating a replicated session to reduce the
-        time taken to create the session and thereby reduce the chances of a
-        subsequent session update message being ignored because the session does
-        not yet exist. (markt)
-      </fix>
-      <add>
-        Add the method to send a message with a specified sendOptions. (kfujino)
-      </add>
-      <fix>
-        When sending the <code>GET_ALL_SESSIONS</code> message, make sure that
-        sends with asynchronous option in order to avoid ack timeout. Waiting to
-        receive the <code>ALL_SESSION_DATA</code> message should be done with
-        <code>waitForSendAllSessions</code> instead of ACK. (kfujino)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="WebSocket">
-    <changelog>
-      <update>
-        Use NIO2 API for websockets writes. (remm)
-      </update>
-      <fix>
-        When decoding of path parameter failed, make sure to throw
-        <code>DecodeException</code> instead of throwing
-        <code>ArrayIndexOutOfBoundsException</code>. (kfujino)
-      </fix>
-      <fix>
-        Improve the handling of exceptions during TLS handshakes for the
-        WebSocket client. (markt)
-      </fix>
-      <fix>
-        Enable host name verification when using TLS with the WebSocket client.
-        (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Web applications">
-    <changelog>
-      <fix>
-        <bug>62395</bug>: Clarify the meaning of the connector attribute
-        <code>minSpareThreads</code> in the documentation web application.
-        (markt)
-      </fix>
-      <fix>
-        Correct the documentation for the <code>allowHostHeaderMismatch</code>
-        attribute of the standard HTTP Connector implementations. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Tribes">
-    <changelog>
-      <fix>
-        Ensure that the correct default value is returned when retrieve unset
-        properties in <code>McastService</code>. (kfujino)
-      </fix>
-      <add>
-        Make <code>MembershipService</code> more easily extensible. (kfujino)
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="jdbc-pool">
-    <changelog>
-      <fix>
-        When <code>logValidationErrors</code> is set to true, the connection
-        validation error is logged as <code>SEVERE</code> instead of
-        <code>WARNING</code>. (kfujino)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <fix>
-        Ensure that Apache Tomcat may be built from source with Java 11. (markt)
-      </fix>
-      <add>
-        <bug>52381</bug>: Add OSGi metadata to JAR files. (markt)
-      </add>
-      <fix>
-        <bug>62391</bug>: Remove references to <code>javaw.exe</code> as this
-        file is not required by Tomcat and the references prevent the use of the
-        Server JRE. (markt)
-      </fix>
-      <update>
-        Update the packaged version of the Tomcat Native Library to 1.2.17 to
-        pick up the latest Windows binaries built with APR 1.6.3 and OpenSSL
-        1.0.2o. (markt)
-      </update>
-      <update>
-        <bug>62458</bug>: Update the internal fork of Commons Pool 2 to dfef97b
-        (2018-06-18) to pick up some bug fixes and enhancements. (markt)
-      </update>
-      <update>
-        Update the internal fork of Commons DBCP 2 to 2.4.0. (markt)
-      </update>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.8 (markt)" rtext="2018-05-03">
-  <subsection name="Catalina">
-    <changelog>
-      <fix>
-        <bug>62263</bug>: Avoid a <code>NullPointerException</code> when the
-        <code>RemoteIpValve</code> processes a request for which no Context can
-        be found. (markt)
-      </fix>
-      <add>
-        <bug>62258</bug>: Don't trigger the standard error page mechanism when
-        the error has caused the connection to the client to be closed as no-one
-        will ever see the error page. (markt)
-      </add>
-      <fix>
-        Register MBean when DataSource Resource <code>
-        type="javax.sql.XADataSource"</code>. Patch provided by Masafumi Miura.
-        (csutherl)
-      </fix>
-      <fix>
-        Fix a rare edge case that is unlikely to occur in real usage. This edge
-        case meant that writing long streams of UTF-8 characters to the HTTP
-        response that consisted almost entirely of surrogate pairs could result
-        in one surrogate pair being dropped. (markt)
-      </fix>
-      <add>
-        Update the internal fork of Apache Commons BCEL to r1829827 to add early
-        access Java 11 support to the annotation scanning code. (markt)
-      </add>
-      <fix>
-        <bug>62297</bug>: Enable the <code>CrawlerSessionManagerValve</code> to
-        correctly handle bots that crawl multiple hosts and/or web applications
-        when the Valve is configured on a Host or an Engine. (fschumacher)
-      </fix>
-      <fix>
-        <bug>62309</bug>: Fix a <code>SecurityException</code> when using JASPIC
-        under a <code>SecurityManager</code> when authentication is not
-        mandatory. (markt)
-      </fix>
-      <fix>
-        <bug>62329</bug>: Correctly list resources in JAR files when directories
-        do not have dedicated entries. Patch provided by Meelis Müür. (markt)
-      </fix>
-      <add>
-        Collapse multiple leading <code>/</code> characters to a single
-        <code>/</code> in the return value of
-        <code>HttpServletRequest#getContextPath()</code> to avoid issues if the
-        value is used with <code>HttpServletResponse#sendRedirect()</code>. This
-        behaviour is enabled by default and configurable via the new Context
-        attribute <code>allowMultipleLeadingForwardSlashInPath</code>. (markt)
-      </add>
-      <fix>
-        Improve handling of overflow in the UTF-8 decoder with supplementary
-        characters. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <fix>
-        Correct off-by-one error in thread pool that allowed thread pools to
-        increase in size to one more than the configured limit. Patch provided
-        by usc. (markt)
-      </fix>
-      <fix>
-        Prevent unexpected TLS handshake failures caused by errors during a
-        previous handshake that were not correctly cleaned-up when using the NIO
-        or NIO2 connector with the <code>OpenSSLImplementation</code>. (markt)
-      </fix>
-      <add>
-        <bug>62273</bug>: Implement configuration options to work-around
-        specification non-compliant user agents (including all the major
-        browsers) that do not correctly %nn encode URI paths and query strings
-        as required by RFC 7230 and RFC 3986. (markt)
-      </add>
-      <fix>
-        Fix sync for NIO2 async IO blocking read/writes. (remm)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Jasper">
-    <changelog>
-      <update>
-        Update the Eclipse Compiler for Java to 4.7.3a. (markt)
-      </update>
-      <update>
-        Allow <code>9</code> to be used to specify Java 9 as the compiler source
-        and/or compiler target for JSP compilation. The Early Access value of
-        <code>1.9</code> is still supported. (markt)
-      </update>
-      <add>
-        Add support for specifying Java 10 (with the value <code>10</code>) as
-        the compiler source and/or compiler target for JSP compilation. (markt)
-      </add>
-      <fix>
-        <bug>62287</bug>: Do not rely on hash codes to test instances of
-        <code>ValueExpressionImpl</code> for equality. Patch provided by Mark
-        Struberg. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="WebSocket">
-    <changelog>
-      <fix>
-        <bug>62301</bug>: Correct a regression in the fix for <bug>61491</bug>
-        that didn't correctly handle a final empty message part in all
-        circumstances when using <code>PerMessageDeflate</code>. (markt)
-      </fix>
-      <fix>
-        <bug>62332</bug>: Ensure WebSocket connections are closed after an I/O
-        error is experienced reading from the client. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <fix>
-        Avoid warning when running under Cygwin when the
-        <code>JAVA_ENDORSED_DIRS</code> environment variable is not set. Patch
-        provided by Zemian Deng. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.7 (markt)" rtext="2018-04-07">
-  <subsection name="Catalina">
-    <changelog>
-      <fix>
-        <bug>51195</bug>: Avoid a false positive report of a web application
-        memory leak by clearing <code>ObjectStreamClass$Caches</code> of classes
-        loaded by the web application when the web application is stopped.
-        (markt)
-      </fix>
-      <fix>
-        <bug>52688</bug>: Add support for the <code>maxDays</code> attribute to
-        the <code>AccessLogValve</code> and <code>ExtendedAccessLogValve</code>.
-        This allows the maximum number of days for which rotated access logs
-        should be retained before deletion to be defined. (markt)
-      </fix>
-      <fix>
-        Ensure the MBean names for the <code>SSLHostConfig</code> and
-        <code>SSLHostConfigCertificate</code> are correctly formed when the
-        <code>Connector</code> is bound to a specific IP address. (markt)
-      </fix>
-      <fix>
-        <bug>62168</bug>: When using the <code>PersistentManager</code> honor a
-        value of <code>-1</code> for <code>minIdleSwap</code> and do not swap
-        out sessions to keep the number of active sessions under
-        <code>maxActive</code>. Patch provided by Holger Sunke. (markt)
-      </fix>
-      <fix>
-        <bug>62172</bug>: Improve Javadoc for
-        <code>org.apache.catalina.startup.Constants</code> and ensure that the
-        constants are correctly used. (markt)
-      </fix>
-      <fix>
-        <bug>62175</bug>: Avoid infinite recursion, when trying to validate
-        a session while loading it with <code>PersistentManager</code>.
-        (fschumacher)
-      </fix>
-      <fix>
-        Ensure that <code>NamingContextListener</code> instances are only
-        notified once of property changes on the associated naming resources.
-        (markt)
-      </fix>
-      <add>
-        <bug>62224</bug>: Disable the <code>forkJoinCommonPoolProtection</code>
-        of the <code>JreMemoryLeakPreventionListener</code> when running on Java
-        9 and above since the underlying JRE bug has been fixed. (markt)
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <fix>
-        Avoid potential loop in APR/Native poller. (markt)
-      </fix>
-      <fix>
-        Ensure streams that are received but not processed are excluded from the
-        tracking of maximum ID of processed streams. (markt)
-      </fix>
-      <fix>
-        Refactor the check for a paused connector to consistently prevent new
-        streams from being created after the connector has been paused. (markt)
-      </fix>
-      <fix>
-        Improve debug logging for HTTP/2 pushed streams. (markt)
-      </fix>
-      <fix>
-        The OpenSSL engine SSL session will now ignore invalid accesses. (remm)
-      </fix>
-      <fix>
-        <bug>62177</bug>: Correct two protocol errors with HTTP/2
-        <code>PUSH_PROMISE</code> frames. Firstly, the HTTP/2 protocol only
-        permits pushes to be sent on peer initiated requests. Secondly, pushes
-        must be sent in order of increasing stream ID. These restriction were
-        not being enforced leading to protocol errors at the client. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Web applications">
-    <changelog>
-      <add>
-        Add document for <code>FragmentationInterceptor</code>. (kfujino)
-      </add>
-      <add>
-        Document how the roles for an authenticated user are determined when the
-        <code>CombinedRealm</code> is used. (markt)
-      </add>
-      <fix>
-        <bug>62163</bug>: Correct the Tomcat Setup documentation that
-        incorrectly referred to Java 7 as the minimum version rather than Java
-        8. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Tribes">
-    <changelog>
-      <fix>
-        Add JMX support for <code>FragmentationInterceptor</code> in order to
-        prevent warning of startup. (kfujino)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="jdbc-pool">
-    <changelog>
-      <fix>
-        Ensure that <code>SQLWarning</code> has been cleared when connection
-        returns to the pool. (kfujino)
-      </fix>
-      <add>
-        Enable clearing of <code>SQLWarning</code> via JMX. (kfujino)
-      </add>
-      <fix>
-        Ensure that parameters have been cleared when
-        <code>PreparedStatement</code> and/or <code>CallableStatement</code> are
-        cached. (kfujino)
-      </fix>
-      <fix>
-        Enable PoolCleaner to be started even if <code>validationQuery</code>
-        is not set. (kfujino)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <update>
-        Update the build script so MD5 hashes are no longer generated for
-        releases as per the change in the ASF distribution policy. (markt)
-      </update>
-      <fix>
-        <bug>62164</bug>: Switch the build script to use TLS for downloads from
-        SourceForge and Maven Central to avoid failures due to HTTP to HTTPS
-        redirects. (markt)
-      </fix>
-      <add>
-        Always report the OS's umask when launching the JVM. (schultz)
-      </add>
-      <add>
-        Add managed connections package to the package renamed DBCP 2 to provide
-        a complete DBCP 2 in Tomcat. (remm)
-      </add>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.6 (markt)" rtext="2018-03-08">
-  <subsection name="Catalina">
-    <changelog>
-      <fix>
-        <bug>43866</bug>: Add additional attributes to the Manager to provide
-        control over which listeners are called when an attribute is added to
-        the session when it has already been added under the same name. This is
-        to aid clustering scenarios where <code>setAttribute()</code> is often
-        called to signal that the attribute value has been mutated and needs to
-        be replicated but it may not be required, or even desired, for the
-        associated listeners to be triggered. The default behaviour has not been
-        changed. (markt)
-      </fix>
-      <fix>
-        Minor optimization when calling class transformers. (rjung)
-      </fix>
-      <add>
-        Pass errors triggered by invalid requests or unavailable services to the
-        application provided error handling and/or the container provided error
-        handling (<code>ErrorReportValve</code>) as appropriate. (markt)
-      </add>
-      <add>
-        <bug>41007</bug>: Add the ability to specify static HTML responses for
-        specific error codes and/or exception types with the
-        <code>ErrorReportValve</code>. (markt)
-      </add>
-      <fix>
-        Prevent Tomcat from applying gzip compression to content that is already
-        compressed with brotli compression. Based on a patch provided by burka.
-        (markt)
-      </fix>
-      <fix>
-        <bug>62090</bug>: Null container names are not allowed. (remm)
-      </fix>
-      <fix>
-        <bug>62104</bug>: Fix programmatic login regression as the
-        NonLoginAuthenticator has to be set for it to work (if no login method
-        is specified). (remm)
-      </fix>
-      <fix>
-        <bug>62117</bug>: Improve error message in <code>catalina.sh</code> when
-        calling <code>kill -0 &lt;pid&gt;</code> fails. Based on a suggestion
-        from Mark Morschhaeuser. (markt)
-      </fix>
-      <fix>
-        <bug>62118</bug>: Correctly create a JNDI <code>ServiceRef</code> using
-        the specified interface rather than the concrete type. Based on a
-        suggestion by Ángel Álvarez Páscua. (markt)
-      </fix>
-      <fix>
-        Fix for <code>RequestDumperFilter</code> log attribute. Patch provided
-        by Kirill Romanov via Github. (violetagg)
-      </fix>
-      <fix>
-        <bug>62123</bug>: Avoid <code>ConcurrentModificationException</code>
-        when attempting to clean up application triggered RMI memory leaks on
-        web application stop. (markt)
-      </fix>
-      <add>
-        When a deployment descriptor is deployed that includes a
-        <code>path</code> attribute, log a warning that the <code>path</code>
-        attribute will be ignored. (markt)
-      </add>
-      <add>
-        When a deployment descriptor is deployed that references an external
-        <code>docBase</code> and, as a result, a <code>docBase</code> under the
-        <code>appBase</code> will be ignored, log a warning. (markt)
-      </add>
-      <fix>
-        Correct a regression in the fix for <bug>60276</bug> that meant that
-        compression was applied to all MIME types. Patch provided by Stefan
-        Knoblich. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <add>
-        Add async HTTP/2 parser for NIO2. (remm)
-      </add>
-      <fix>
-        Add minor HPACK fixes, based on fixes by Stuart Douglas. (remm)
-      </fix>
-      <fix>
-        <bug>61751</bug>: Follow up fix so that OpenSSL engine returns
-        underflow when unwrapping if no bytes were produced and the input is
-        empty. (remm)
-      </fix>
-      <fix>
-        Minor OpenSSL engine cleanups. (remm)
-      </fix>
-      <fix>
-        NIO SSL handshake should throw an exception on overflow status, like
-        NIO2 SSL. (remm)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Web applications">
-    <changelog>
-      <add>
-        <bug>47467</bug>: When deploying a web application via the manager
-        application and a path is not explicitly specified, derive it from the
-        provided deployment descriptor or, if that is not present, the WAR or
-        DIR. (markt)
-      </add>
-      <add>
-        <bug>48672</bug>: Add documentation for the Host Manager web
-        application. Patch provided by Marek Czernek. (markt)
-      </add>
-      <add>
-        Add support for specifying the application version when deploying an
-        application via the Manager application HTML interface. (markt)
-      </add>
-      <add>
-        Work-around a known, non-specification compliant behaviour in some
-        versions of IE that can allow XSS when the Manager application generates
-        a plain text response. Based on a suggestion from Muthukumar Marikani.
-        (markt)
-      </add>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.5 (markt)" rtext="2018-02-11">
-  <subsection name="Catalina">
-    <changelog>
-      <fix>
-        Prevent a stack trace being written to standard out when running on Java
-        10 due to changes in the <code>LogManager</code> implementation. (markt)
-      </fix>
-      <fix>
-        Avoid duplicate load attempts if one has been made already. (remm)
-      </fix>
-      <fix>
-        Avoid NPE in ThreadLocalLeakPreventionListener if there is no Engine.
-        (remm)
-      </fix>
-      <fix>
-        <bug>62000</bug>: When a JNDI reference cannot be resolved, ensure that
-        the root cause exception is reported rather than swallowed. (markt)
-      </fix>
-      <fix>
-        <bug>62036</bug>: When caching an authenticated user Principal in the
-        session when the web application is configured with the
-        <code>NonLoginAuthenticator</code>, cache the internal Principal object
-        rather than the user facing Principal object as Tomcat requires the
-        internal object to correctly process later authorization checks. (markt)
-      </fix>
-      <add>
-        Refactor error handling to enable errors that occur before processing is
-        passed to the application to be handled by the application provided
-        error handling and/or the container provided error handling
-        (<code>ErrorReportValve</code>) as appropriate. (markt)
-      </add>
-      <add>
-        Pass 404 errors triggered by a missing ROOT web application to the
-        container error handling to generate the response body. (markt)
-      </add>
-      <add>
-        Pass 400 errors triggered by invalid request targets to the container
-        error handling to generate the response body. (markt)
-      </add>
-      <fix>
-        Provide a correct <code>Allow</code> header when responding to an HTTP
-        <code>TRACE</code> request for a JSP with a 405 status code. (markt)
-      </fix>
-      <fix>
-        When using Tomcat embedded, only perform Authenticator configuration
-        once during web application start. (markt)
-      </fix>
-      <fix>
-        <bug>62067</bug>: Correctly apply security constraints mapped to the
-        context root using a URL pattern of <code>&quot;&quot;</code>. (markt)
-      </fix>
-      <fix>
-        Process all <code>ServletSecurity</code> annotations at web application
-        start rather than at servlet load time to ensure constraints are applied
-        consistently. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <fix>
-        <bug>61751</bug>: Fix truncated request input streams when using NIO2
-        with TLS. (markt)
-      </fix>
-      <fix>
-        <bug>62023</bug>: Log error reporting multiple SSLHostConfig elements
-        when using the APR Connector instead of crashing Tomcat. (csutherl)
-      </fix>
-      <fix>
-        <bug>62032</bug>: Fix NullPointerException when certificateFile is not
-        defined on an SSLHostConfig and unify the behavior when a
-        certificateFile is defined but the file does not exist for both
-        JKS and PEM file types. (csutherl)
-      </fix>
-      <fix>
-        Ensure that the <code>toString()</code> method behaves consistently for
-        <code>ByteChunk</code> and <code>CharChunk</code> and that
-        <code>null</code> is returned when <code>toString()</code> is called
-        both on newly created objects and immediately after a call to
-        <code>recycle()</code>. This should not impact typical Tomcat users. It
-        may impact users who use these classes directly in their own code.
-        (markt)
-      </fix>
-      <fix>
-        Ensure that the <code>toString()</code>, <code>toBytes()</code> and
-        <code>toChars()</code> methods of <code>MessageBytes</code> behave
-        consistently and do not throw a <code>NullPointerException</code> both
-        on newly created objects and immediately after a call to
-        <code>recycle()</code>. This should not impact typical Tomcat users. It
-        may impact users who use these classes directly in their own code.
-        (markt)
-      </fix>
-      <fix>
-        When processing an HTTP 1.0 request in the HTTP connector and no host
-        information is provided in the request, obtain the server port from the
-        local port rather than the connector configuration since the configured
-        value maybe zero. (markt)
-      </fix>
-      <add>
-        Enable strict validation of the provided host name and port for all
-        connectors. Requests with invalid host names and/or ports will be
-        rejected with a 400 response. (markt)
-      </add>
-      <fix>
-        Update the host validation to permit host names and components of domain
-        names (excluding top-level domains) to start with a number and to ensure
-        that top-level domains are fully alphabetic. (markt)
-      </fix>
-      <fix>
-        <bug>62053</bug>: Fix NPE when writing push headers with HTTP/2 NIO2.
-        Patch submitted by Holger Sunke. (remm)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Jasper">
-    <changelog>
-      <fix>
-        Include an HTTP <code>Allow</code> header when a JSP generates a
-        405 response due to a request with an unsupported method. (markt)
-      </fix>
-      <add>
-        Add support for the HTTP <code>OPTION</code> method to JSPs. The
-        JSP specification explicitly states that the behaviour for this
-        method is undefined for JSPs so this is a Tomcat specific
-        behaviour. (markt)
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="WebSocket">
-    <changelog>
-      <fix>
-        <bug>62024</bug>: When closing a connection with an abnormal close,
-        close the socket immediately rather than waiting for a close message
-        from the client that may never arrive. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Webapps">
-    <changelog>
-      <fix>
-        <bug>62049</bug>: Fix missing class from manager 404 JSP error page.
-        (remm)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="jdbc-pool">
-    <changelog>
-      <add>
-        Enhance the JMX support for jdbc-pool in order to expose
-        <code>PooledConnection</code> and <code>JdbcInterceptors</code>.
-        (kfujino)
-      </add>
-      <add>
-        Add MBean for <code>PooledConnection</code>. (kfujino)
-      </add>
-      <add>
-        <bug>62011</bug>: Add MBean for <code>StatementCache</code>. (kfujino)
-      </add>
-      <add>
-        Expose the cache size for each connection via JMX in
-        <code>StatementCache</code>. (kfujino)
-      </add>
-      <add>
-        Add MBean for <code>ResetAbandonedTimer</code>. (kfujino)
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <update>
-        Update the list with the public interfaces in the RELEASE-NOTES.
-        (violetagg)
-      </update>
-      <update>
-        Update the NSIS Installer used to build the Windows installer to version
-        3.03. (kkolinko)
-      </update>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.4 (markt)" rtext="2018-01-22">
-  <subsection name="Catalina">
-    <changelog>
-      <fix>
-        Correct a regression in the previous fix for <bug>61916</bug> that meant
-        that any call to <code>addHeader()</code> would have been replaced with
-        a call to <code>setHeader()</code> for all requests mapped to the
-        <code>AddDefaultCharsetFilter</code>. (markt)
-      </fix>
-      <fix>
-        <bug>61999</bug>: maxSavePostSize set to 0 should disable saving POST
-        data during authentication. (remm)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <fix>
-        Fix NIO2 HTTP/2 sendfile. (remm)
-      </fix>
-      <fix>
-        <bug>61993</bug>: Improve handling for <code>ByteChunk</code> and
-        <code>CharChunk</code> instances that grow close to the maximum size
-        allowed by the JRE. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Jasper">
-    <changelog>
-      <add>
-        <bug>43925</bug>: Add a new system property
-        (<code>org.apache.jasper.runtime.BodyContentImpl.BUFFER_SIZE</code>) to
-        control the size of the buffer used by Jasper when buffering tag bodies.
-        (markt)
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="Web applications">
-    <changelog>
-      <fix>
-        <bug>62006</bug>: Document the new <code>JvmOptions9</code> command line
-        parameter for <code>tomcat9.exe</code>. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.3 (markt)" rtext="not released">
-  <subsection name="Catalina">
-    <changelog>
-      <add>
-        <bug>57619</bug>: Implement a small optimisation to how JAR URLs are
-        processed to reduce the storage of duplicate String objects in memory.
-        Patch provided by Dmitri Blinov. (markt)
-      </add>
-      <fix>
-        Add some missing NPEs to ServletContext. (remm)
-      </fix>
-      <fix>
-        Update the Java EE 8 XML schema to the released versions. (markt)
-      </fix>
-      <fix>
-        Minor HTTP/2 push fixes. (remm)
-      </fix>
-      <fix>
-        <bug>61916</bug>: Extend the <code>AddDefaultCharsetFilter</code> to add
-        a character set when the content type is set via
-        <code>setHeader()</code> or <code>addHeader()</code> as well as when it
-        is set via <code>setContentType()</code>. (markt)
-      </fix>
-      <fix>
-        When using WebDAV to copy a file resource to a destination that requires
-        a collection to be overwritten, ensure that the operation succeeds
-        rather than fails (with a 500 response). This enables Tomcat to pass two
-        additional tests from the Litmus WebDAV test suite. (markt)
-      </fix>
-      <update>
-        Modify the Default and WebDAV Servlets so that a 405 status code is
-        returned for <code>PUT</code> and <code>DELETE</code> requests when
-        disabled via the <code>readonly</code> initialisation parameter.
-      </update>
-      <fix>
-        Align the contents of the <code>Allow</code> header with the response
-        code for the Default and WebDAV Servlets. For any given resource a
-        method that returns a 405 status code will not be listed in the
-        <code>Allow</code> header and a method listed in the <code>Allow</code>
-        header will not return a 405 status code. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <add>
-        <bug>60276</bug>: Implement GZIP compression support for responses
-        served over HTTP/2. (markt)
-      </add>
-      <fix>
-        Do not call onDataAvailable without any data to read. (remm)
-      </fix>
-      <fix>
-        Correctly handle EOF when <code>ServletInputStream.isReady()</code> is
-        called. (markt)
-      </fix>
-      <fix>
-        <bug>61886</bug>: Log errors on non-container threads at
-        <code>DEBUG</code> rather than <code>INFO</code>. The exception will be
-        made available to the application via the asynchronous error handling
-        mechanism. (markt)
-      </fix>
-      <fix>
-        <bug>61914</bug>: Possible NPE with Java 9 when creating an SSL engine.
-        Patch submitted by Evgenij Ryazanov. (remm)
-      </fix>
-      <fix>
-        <bug>61918</bug>: Fix connectionLimitLatch counting when closing an
-        already closed socket. Based on a patch by Ryan Fong. (remm)
-      </fix>
-      <add>
-        Add support for the OpenSSL ARIA ciphers to the OpenSSL to JSSE
-        cipher mapping. (markt)
-      </add>
-      <fix>
-        <bug>61932</bug>: Allow a call to <code>AsyncContext.dispatch()</code>
-        to terminate non-blocking I/O. (markt)
-      </fix>
-      <fix>
-        <bug>61948</bug>: Improve the handling of malformed ClientHello messages
-        in the code that extracts the SNI information from a TLS handshake for
-        the JSSE based NIO and NIO2 connectors. (markt)
-      </fix>
-      <fix>
-        Fix NIO2 handshaking with a full input buffer. (remm)
-      </fix>
-      <add>
-        Return a simple, plain text error message if a client attempts to make a
-        plain text HTTP connection to a TLS enabled NIO or NIO2 Connector.
-        (markt)
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="Jasper">
-    <changelog>
-      <fix>
-        <bug>61854</bug>: When using sets and/or maps in EL expressions, ensure
-        that Jasper correctly parses the expression. Patch provided by Ricardo
-        Martin Camarero. (markt)
-      </fix>
-      <fix>
-        Improve the handling of methods with varargs in EL expressions. In
-        particular, the calling of a varargs method with no parameters now works
-        correctly. Based on a patch by Nitkalya (Ing) Wiriyanuparb. (markt)
-      </fix>
-      <fix>
-        <bug>61945</bug>: Fix prototype mode used to compile tags. (remm)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Web applications">
-    <changelog>
-      <add>
-        <bug>61223</bug>: Add the mbeans-descriptors.dtd file to the custom
-        MBean documentation so users have a reference to use when constructing
-        mbeans-descriptors.xml files for custom components. (markt)
-      </add>
-      <add>
-        <bug>61565</bug>: Add the ability to trigger a reloading of TLS host
-        configuration (certificate and key files, server.xml is not re-parsed)
-        via the Manager web application. (markt)
-      </add>
-      <add>
-        <bug>61566</bug>: Expose the currently in use certificate chain and list
-        of trusted certificates for all virtual hosts configured using the JSSE
-        style (keystore) TLS configuration via the Manager web application.
-        (markt)
-      </add>
-      <fix>
-        Partial fix for <bug>61886</bug>. Ensure that multiple threads do not
-        attempt to complete the <code>AsyncContext</code> if an I/O error occurs
-        in the stock ticker example Servlet. (markt)
-      </fix>
-      <fix>
-        <bug>61886</bug>: Prevent <code>ConcurrentModificationException</code>
-        when running the asynchronous stock ticker in the examples web
-        application. (markt)
-      </fix>
-      <fix>
-        <bug>61886</bug>: Prevent <code>NullPointerException</code> and other
-        errors if the stock ticker example is running when the examples web
-        application is stopped. (markt)
-      </fix>
-      <fix>
-        <bug>61910</bug>: Clarify the meaning of the <code>allowLinking</code>
-        option in the documentation web application. (markt)
-      </fix>
-      <add>
-        Add OCSP configuration information to the SSL How-To. Patch provided by
-        Marek Czernek. (markt)
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="jdbc-pool">
-    <changelog>
-      <fix>
-        <bug>61312</bug>: Prevent <code>NullPointerException</code> when using
-        the statement cache of connection that has been closed. (kfujino)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <fix>
-        Add an additional system property for the system property replacement.
-        (remm)
-      </fix>
-      <fix>
-        Add missing SHA-512 hash for release artifacts to the build script.
-        (markt)
-      </fix>
-      <update>
-        Update the internal fork of Commons Pool 2 to 2.4.3. (markt)
-      </update>
-      <update>
-        Update the internal fork of Commons DBCP 2 to 8a71764 (2017-10-18) to
-        pick up some bug fixes and enhancements. (markt)
-      </update>
-      <update>
-        Update the internal fork of Commons FileUpload to 6c00d57 (2017-11-23)
-        to pick up some code clean-up. (markt)
-      </update>
-      <update>
-        Update the internal fork of Commons Codec to r1817136 to pick up some
-        code clean-up. (markt)
-      </update>
-      <fix>
-        The native source bundles (for Commons Daemon and Tomcat Native) are no
-        longer copied to the bin directory for the deploy target. They are now
-        only copied to the bin directory for the release target. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.2 (markt)" rtext="2017-11-30">
-  <subsection name="Catalina">
-    <changelog>
-      <fix>
-        Fix possible <code>SecurityException</code> when using TLS related
-        request attributes. (markt)
-      </fix>
-      <fix>
-        <bug>61597</bug>: Extend the <code>StandardJarScanner</code> to scan
-        JARs on the module path when running on Java 9 and class path scanning
-        is enabled. (markt)
-      </fix>
-      <fix>
-        <bug>61601</bug>: Add support for multi-release JARs in JAR scanning and
-        web application class loading. (markt)
-      </fix>
-      <fix>
-        <bug>61681</bug>: Allow HTTP/2 push when using request wrapping. (remm)
-      </fix>
-      <add>
-        Provide the <code>SessionInitializerFilter</code> that can be used to
-        ensure that an HTTP session exists when initiating a WebSocket
-        connection. Patch provided by isapir. (markt)
-      </add>
-      <fix>
-        <bug>61682</bug>: When re-prioritising HTTP/2 streams, ensure that both
-        parent and children fields are correctly updated to avoid a possible
-        <code>StackOverflowError</code>. (markt)
-      </fix>
-      <fix>
-        Improve concurrency by reducing the scope of the synchronisation for
-        <code>javax.security.auth.message.config.AuthConfigFactory</code> in the
-        JASPIC API implementation. Based on a patch by Pavan Kumar. (markt)
-      </fix>
-      <fix>
-        Avoid a possible <code>NullPointerException</code> when timing out
-        <code>AsyncContext</code> instances during shut down. (markt)
-      </fix>
-      <fix>
-        <bug>61777</bug>: Avoid a <code>NullPointerException</code> when
-        detaching a JASPIC <code>RegistrationListener</code>. Patch provided by
-        Lazar. (markt)
-      </fix>
-      <fix>
-        <bug>61778</bug>: Correct the return value when detaching a JASPIC
-        <code>RegistrationListener</code>. Patch provided by Lazar. (markt)
-      </fix>
-      <fix>
-        <bug>61779</bug>: Avoid a <code>NullPointerException</code> when a
-        <code>null</code> <code>RegistrationListener</code> is passed to
-        <code>AuthConfigFactory.getConfigProvider()</code>. Patch provided by
-        Lazar. (markt)
-      </fix>
-      <fix>
-        <bug>61780</bug>: Only include the default JASPIC registration ID in the
-        return value for a call to
-        <code>AuthConfigFactory.getRegistrationIDs()</code> if a
-        <code>RegistrationContext</code> has been registered using the default
-        registration ID. Patch provided by Lazar. (markt)
-      </fix>
-      <fix>
-        <bug>61781</bug>: Enable JASPIC provider registrations to be persisted
-        when the layer and/or application context are <code>null</code>. Patch
-        provided by Lazar. (markt)
-      </fix>
-      <fix>
-        <bug>61782</bug>: When calling
-        <code>AuthConfigFactory.doRegisterConfigProvider()</code> and the
-        requested JASPIC config provider class is found by the web application
-        class loader, do not attempt to load the class with the class loader
-        that loaded the JASPIC API. Patch provided by Lazar. (markt)
-      </fix>
-      <fix>
-        <bug>61783</bug>: When calling
-        <code>AuthConfigFactory.removeRegistration()</code> and the registration
-        is persistent, it should be removed from the persistent store. Patch
-        provided by Lazar. (markt)
-      </fix>
-      <fix>
-        <bug>61784</bug>: Correctly handle the case when
-        <code>AuthConfigFactoryImpl.registerConfigProvider()</code> is called
-        with a provider name of <code>null</code>. Patch provided by Lazar.
-        (markt)
-      </fix>
-      <add>
-        <bug>61795</bug>: Add a property to the <code>Authenticator</code>
-        implementations to enable a custom JASPIC <code>CallbackHandler</code>
-        to be specified. Patch provided by Lazar. (markt)
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <fix>
-        <bug>61568</bug>: Avoid a potential <code>SecurityException</code> when
-        using the NIO2 connector and a new thread is added to the pool. (markt)
-      </fix>
-      <fix>
-        <bug>61583</bug>: Correct a further regression in the fix to enable the
-        use of Java key stores that contained multiple keys that did not all
-        have the same password. This fixes PKCS11 key store handling with
-        multiple keys selected with an alias. (markt)
-      </fix>
-      <fix>
-        Improve NIO2 syncing for async IO operations. (remm)
-      </fix>
-      <add>
-        Sendfile support for HTTP/2 and NIO2. (remm)
-      </add>
-      <fix>
-        Reduce default HTTP/2 stream concurrent execution within a connection
-        from 200 to 20. (remm)
-      </fix>
-      <fix>
-        <bug>61668</bug>: Avoid a possible NPE when calling
-        <code>AbstractHttp11Protocol.getSSLProtocol()</code>. (markt)
-      </fix>
-      <fix>
-        <bug>61673</bug>: Avoid a possible
-        <code>ConcurrentModificationException</code> when working with the
-        streams associated with a connection. (markt)
-      </fix>
-      <fix>
-        <bug>61719</bug>: Avoid possible NPE calling
-        InputStream.setReadListener with HTTP/2. (remm)
-      </fix>
-      <fix>
-        <bug>61736</bug>: Improve performance of NIO connector when clients
-        leave large time gaps between network packets. Patch provided by Zilong
-        Song. (markt)
-      </fix>
-      <fix>
-        <bug>61740</bug>: Correct an off-by-one error in the Hpack header index
-        validation that caused intermittent request failures when using HTTP/2.
-        (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Jasper">
-    <changelog>
-      <fix>
-        <bug>61604</bug>: Fix SMAP generation for JSPs that generate no output.
-        (markt)
-      </fix>
-      <fix>
-        <bug>61816</bug>: Invalid expressions in attribute values or template
-        text should trigger a translation (compile time) error, not a run time
-        error. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="WebSocket">
-    <changelog>
-      <fix>
-        <bug>61604</bug>: Add support for authentication in the websocket
-        client. Patch submitted by J Fernandez. (remm)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Web applications">
-    <changelog>
-      <fix>
-        Correct Javadoc links to point to Java SE 8 and Java EE 8. (markt)
-      </fix>
-      <fix>
-        Enable Javadoc to be built with Java 9. (markt)
-      </fix>
-      <fix>
-        <bug>61603</bug>: Add XML filtering for the status servlet output where
-        needed. (remm)
-      </fix>
-      <fix>
-        Correct the description of how the CGI servlet maps a request to a
-        script in the CGI How-To. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Tribes">
-    <changelog>
-      <fix>
-        Fix incorrect behavior that attempts to resend channel messages more
-        than the actual setting value of <code>maxRetryAttempts</code>.
-        (kfujino)
-      </fix>
-      <fix>
-        Ensure that the remaining Sender can send channel messages by avoiding
-        unintended <code>ChannelException</code> caused by comparing the number
-        of failed members and the number of remaining Senders. (kfujino)
-      </fix>
-      <fix>
-        Ensure that remaining SelectionKeys that were not handled by throwing a
-        <code>ChannelException</code> during SelectionKey processing are
-        handled. (kfujino)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <fix>
-        Improve the fix for <bug>61439</bug> and exclude the JPA, JAX-WS and EJB
-        annotations completely from the Tomcat distributions. (markt)
-      </fix>
-      <fix>
-        Improve handling of endorsed directories. The endorsed directory
-        mechanism will only be used if the <code>JAVA_ENDORSED_DIRS</code>
-        system property is explicitly set or if
-        <code>$CATALINA_HOME/endorsed</code> exists. When running on Java 9, any
-        such attempted use of the endorsed directory mechanism will trigger an
-        error and Tomcat will fail to start. (rjung)
-      </fix>
-      <add>
-        <bug>51496</bug>: When using the Windows installer, check if the
-        requested service name already exists and, if it does, prompt the user
-        to select an alternative service name. Patch provided by Ralph
-        Plawetzki. (markt)
-      </add>
-      <fix>
-        <bug>61590</bug>: Enable <code>service.bat</code> to recognise when
-        <code>JAVA_HOME</code> is configured for a Java 9 JDK. (markt)
-      </fix>
-      <fix>
-        <bug>61598</bug>: Update the Windows installer to search the new (as of
-        Java 9) registry locations when looking for a JRE. (markt)
-      </fix>
-      <add>
-        Add generation of a SHA-512 hash for release artifacts to the build
-        script. (markt)
-      </add>
-      <fix>
-        <bug>61658</bug>: Update MIME mappings for fonts to use
-        <code>font/*</code> as per RFC8081. (markt)
-      </fix>
-      <update>
-        Update the packaged version of the Tomcat Native Library to 1.2.16 to
-        pick up the latest Windows binaries built with APR 1.6.3 and OpenSSL
-        1.0.2m. (markt)
-      </update>
-      <update>
-        Update the NSIS Installer used to build the Windows installer to version
-        3.02.1. (kkolinko)
-      </update>
-      <update>
-        Update the Windows installer to use "The Apache Software Foundation" as
-        the Publisher when Tomcat is displayed in the list of installed
-        applications in Microsoft Windows. (kkolinko)
-      </update>
-      <fix>
-        <bug>61803</bug>: Remove outdated SSL information from the Security
-        documentation. (remm)
-      </fix>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.1 (markt)" rtext="2017-09-30">
-  <subsection name="Catalina">
-    <changelog>
-      <fix>
-        Use the correct path when loading the JVM <code>logging.properties</code>
-        file for Java 9. (rjung)
-      </fix>
-      <fix>
-        Add additional validation to the resource handling required to fix
-        CVE-2017-12617 on Windows. The checks were being performed elsewhere but
-        adding them to the resource handling ensures that the checks are always
-        performed. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <fix>
-        <bug>61563</bug>: Correct typos in Spanish translation. Patch provided by
-        Gonzalo Vásquez. (csutherl)
-      </fix>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.0 (markt)" rtext="not released">
-  <subsection name="Catalina">
-    <changelog>
-      <fix>
-        <bug>61542</bug>: Fix CVE-2017-12617 and prevent JSPs from being
-        uploaded via a specially crafted request when HTTP PUT was enabled.
-        (markt)
-      </fix>
-      <fix>
-        <bug>61554</bug>: Exclude test files in unusual encodings and markdown
-        files intended for display in GitHub from RAT analysis. Patch provided
-        by Chris Thistlethwaite. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <add>
-        <bug>60762</bug>: Add the ability to make changes to the TLS
-        configuration of a connector at runtime without having to restart the
-        Connector. (markt)
-      </add>
-      <add>
-        Add an option to reject requests that contain HTTP headers with invalid
-        (non-token) header names with a 400 response and reject such requests by
-        default. (markt)
-      </add>
-      <fix>
-        Implement the requirements of RFC 7230 (and RFC 2616) that HTTP/1.1
-        requests must include a <code>Host</code> header and any request that
-        does not must be rejected with a 400 response. (markt)
-      </fix>
-      <fix>
-        Implement the requirements of RFC 7230 that any HTTP/1.1 request that
-        specifies a host in the request line, must specify the same host in the
-        <code>Host</code> header and that any such request that does not, must
-        be rejected with a 400 response. This check is optional but enabled by
-        default. It may be disabled with the
-        <code>allowHostHeaderMismatch</code> attribute of the Connector. (markt)
-      </fix>
-      <fix>
-        Implement the requirements of RFC 7230 that any HTTP/1.1 request that
-        contains multiple <code>Host</code> headers is rejected with a 400
-        response. (markt)
-      </fix>
-      <update>
-        Add a way to set the property source in embedded mode. (remm)
-      </update>
-      <fix>
-        <bug>61557</bug>: Correct a further regression in the fix to enable the
-        use of Java key stores that contain multiple keys that do not all have
-        the same password. The regression broke support for some FIPS compliant
-        key stores. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="jdbc-pool">
-    <changelog>
-      <fix>
-        <bug>61545</bug>: Correctly handle invocations of methods defined in the
-        <code>PooledConnection</code> interface when using pooled XA
-        connections. Patch provided by Nils Winkler. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <fix>
-        Update fix for <bug>59904</bug> so that values less than zero are accepted
-        instead of throwing a NegativeArraySizeException. (remm)
-      </fix>
-      <add>
-        Complete the implementation of the Servlet 4.0 specification. (markt)
-      </add>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.0.M27 (markt)" rtext="2017-09-19">
-  <subsection name="Catalina">
-    <changelog>
-      <fix>
-        Before generating an error page in the <code>ErrorReportValve</code>,
-        check to see if I/O is still permitted for the associated connection
-        before generating the error page so that the page generation can be
-        skipped if the page is never going to be sent. (markt)
-      </fix>
-      <add>
-        <bug>61189</bug>: Add the ability to set environment variables for
-        individual CGI scripts. Based on a patch by jm009. (markt)
-      </add>
-      <fix>
-        <bug>61210</bug>: When running under a SecurityManager, do not print a
-        warning about not being able to read a logging configuration file when
-        that file does not exist. (markt)
-      </fix>
-      <add>
-        <bug>61280</bug>: Add RFC 7617 support to the
-        <code>BasicAuthenticator</code>. Note that the default configuration
-        does not change the existing behaviour. (markt)
-      </add>
-      <fix>
-        <bug>61424</bug>: Avoid a possible <code>StackOverflowError</code> when
-        running under a <code>SecurityManager</code> and using
-        <code>Subject.doAs()</code>. (markt)
-      </fix>
-      <add>
-        When running under Java 9 or later, and the
-        <code>urlCacheProtection</code> option of the
-        <code>JreMemoryLeakPreventionListener</code> is enabled, use the API
-        added in Java 9 to only disable the caching for JAR URL connections.
-        (markt)
-      </add>
-      <add>
-        <bug>61489</bug>: When using the CGI servlet, make the generation of
-        command line arguments from the query string (as per section 4.4 of RFC
-        3875) optional and disabled by default. Based on a patch by jm009.
-        (markt)
-      </add>
-      <fix>
-        <bug>61503</bug>: This corrects a potential regression in the fix for
-        <bug>60940</bug> with an alternative solution that adds the
-        <code>JarEntry</code> objects normally skipped by a
-        <code>JarInputStream</code> only if those entries exist. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <update>
-        The minimum required Tomcat Native version has been increased to 1.2.14.
-        This version includes a new API needed for correct client certificate
-        support when using a Java connector with OpenSSL TLS implementation and
-        support for the <code>SSL_CONF</code> OpenSSL API. (rjung)
-      </update>
-      <add>
-        Add support for the OpenSSL <code>SSL_CONF</code> API when using
-        TLS with OpenSSL implementation. It can be used by adding
-        <code>OpenSSLConf</code> elements underneath <code>SSLHostConfig</code>.
-        The new element contains a list of <code>OpenSSLConfCmd</code> elements,
-        each with the attributes <code>name</code> and <code>value</code>.
-        (rjung)
-      </add>
-      <fix>
-        When using a Java connector in combination with the OpenSSL TLS
-        implementation, do not configure each SSL connection object via
-        the OpenSSLEngine. For OpenSSL the SSL object inherits its
-        settings from the SSL_CTX which we have already configured.
-        (rjung)
-      </fix>
-      <fix>
-        When using JSSE TLS configuration with the OpenSSL implementation and
-        client certificates: include client CA subjects in the TLS handshake
-        so that the client can choose an appropriate client certificate to
-        present. (rjung)
-      </fix>
-      <fix>
-        If an invalid option is specified for the
-        <code>certificateVerification</code> attribute of an
-        <code>SSLHostConfig</code> element, treat it as <code>required</code>
-        which is the most secure / restrictive option in addition to reporting
-        the configuration error. (markt)
-      </fix>
-      <fix>
-        Improve the handling of client disconnections during the TLS
-        renegotiation handshake. (markt)
-      </fix>
-      <fix>
-        Prevent exceptions being thrown during normal shutdown of NIO
-        connections. This enables TLS connections to close cleanly. (markt)
-      </fix>
-      <fix>
-        Fix possible race condition when setting IO listeners on an upgraded
-        connection. (remm)
-      </fix>
-      <fix>
-        Ensure that the APR/native connector uses blocking I/O for TLS
-        renegotiation. (markt)
-      </fix>
-      <fix>
-        <bug>48655</bug>: Enable Tomcat to shutdown cleanly when using sendfile,
-        the APR/native connector and a multi-part download is in progress.
-        (markt)
-      </fix>
-      <fix>
-        <bug>58244</bug>: Handle the case when OpenSSL resumes a TLS session
-        using a ticket and the full client certificate chain is not available.
-        In this case the client certificate without the chain will be presented
-        to the application. (markt)
-      </fix>
-      <fix>
-        Improve the warning message when JSSE and OpenSSL configuration styles
-        are mixed on the same <code>SSLHostConfig</code>. (markt)
-      </fix>
-      <fix>
-        <bug>61415</bug>: Fix TLS renegotiation with OpenSSL based connections
-        and session caching. (markt)
-      </fix>
-      <fix>
-        Delay checking that the configured attributes for an
-        <code>SSLHostConfig</code> instance are consistent with the configured
-        SSL implementation until <code>Connector</code> start to avoid incorrect
-        warnings when the SSL implementation changes during initialisation.
-        (markt)
-      </fix>
-      <fix>
-        <bug>61450</bug>: Fix default key alias algorithm. (remm)
-      </fix>
-      <fix>
-        <bug>61451</bug>: Correct a regression in the fix to enable the use of
-        Java key stores that contained multiple keys that did not all have the
-        same password. The regression broke support for any key store that did
-        not store keys in PKCS #8 format such as hardware key stores and Windows
-        key stores. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="WebSocket">
-    <changelog>
-      <fix>
-        <bug>60523</bug>: Reduce the number of packets used to send WebSocket
-        messages by not flushing between the header and the payload when the
-        two are written together. (markt)
-      </fix>
-      <fix>
-        <bug>61491</bug>: When using the <code>permessage-deflate</code>
-        extension, correctly handle the sending of empty messages after
-        non-empty messages to avoid the <code>IllegalArgumentException</code>.
-        (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Web applications">
-    <changelog>
-      <fix>
-        Show connector cipher list in the manager web application in the
-        correct cipher order. (rjung)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Tribes">
-    <changelog>
-      <fix>
-        To avoid unexpected session timeout notification from backup session,
-        update the access time when receiving the map member notification
-        message. (kfujino)
-      </fix>
-      <fix>
-        Add member info to the log message when the failure detection check
-        fails in <code>TcpFailureDetector</code>. (kfujino)
-      </fix>
-      <fix>
-        Avoid Ping timeout until the added map member by receiving
-        <code>MSG_START</code> message is completely started. (kfujino)
-      </fix>
-      <fix>
-        When sending a channel message, make sure that the Sender has connected.
-        (kfujino)
-      </fix>
-      <fix>
-        Correct the backup node selection logic that node 0 is returned twice
-        consecutively. (kfujino)
-      </fix>
-      <fix>
-        Fix race condition of <code>responseMap</code> in
-        <code>RpcChannel</code>. (kfujino)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="jdbc-pool">
-    <changelog>
-      <fix>
-        <bug>61391</bug>: Ensure that failed queries are logged if the
-        <code>SlowQueryReport</code> interceptor is configured to do so and the
-        connection has been abandoned. Patch provided by Craig Webb. (markt)
-      </fix>
-      <fix>
-        <bug>61425</bug>: Ensure that transaction of idle connection has
-        terminated  when the <code>testWhileIdle</code> is set to
-        <code>true</code> and <code>defaultAutoCommit</code> is set to
-        <code>false</code>. Patch provided by WangZheng. (kfujino)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <fix>
-        <bug>61419</bug>: Replace a Unix style comment in the DOS bat file
-        <code>catalina.bat</code> with the correct <code>rem</code> markup.
-        (rjung)
-      </fix>
-      <fix>
-        <bug>61439</bug>: Remove the Java Annotation API classes from
-        tomcat-embed-core.jar and package them in a separate JAR in the
-        embedded distribution to provide end users with greater flexibility to
-        handle potential conflicts with the JRE and/or other JARs. (markt)
-      </fix>
-      <fix>
-        <bug>61441</bug>: Improve the detection of <code>JAVA_HOME</code> by the
-        <code>daemon.sh</code> script when running on a platform where Java has
-        been installed from an RPM. (rjung)
-      </fix>
-      <update>
-        Update the packaged version of the Tomcat Native Library to 1.2.14 to
-        pick up the latest Windows binaries built with APR 1.6.2 and OpenSSL
-        1.0.2l. (markt)
-      </update>
-      <update>
-        <bug>61599</bug>: Update to Commons Daemon 1.1.0 for improved Java 9
-        support. (markt)
-      </update>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.0.M26 (markt)" rtext="2017-08-08">
-  <subsection name="Catalina">
-    <changelog>
-      <fix>
-        Correct multiple regressions in the fix for <bug>49464</bug> that could
-        corrupt static content served by the <code>DefaultServlet</code>.(markt)
-      </fix>
-      <fix>
-        Correct a bug in the <code>PushBuilder</code> implementation that
-        meant push URLs containing <code>%nn</code> sequences were not correctly
-        decoded. Identified by FindBugs. (markt)
-      </fix>
-      <add>
-        <bug>61164</bug>: Add support for the <code>%X</code> pattern in the
-        <code>AccessLogValve</code> that reports the connection status at the
-        end of the request. Patch provided by Zemian Deng. (markt)
-      </add>
-      <fix>
-        <bug>61351</bug>: Correctly handle %nn decoding of URL patterns in
-        web.xml and similar locations that may legitimately contain characters
-        that are not permitted by RFC 3986. (markt)
-      </fix>
-      <add>
-        <bug>61366</bug>: Add a new attribute, <code>localDataSource</code>, to
-        the <code>JDBCStore</code> that allows the Store to be configured to use
-        a DataSource defined by the web application rather than the default of
-        using a globally defined DataSource. Patch provided by Jonathan
-        Horowitz. (markt)
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <fix>
-        <bug>61086</bug>: Ensure to explicitly signal an empty request body for
-        HTTP 205 responses. Additional fix to r1795278. Based on a patch
-        provided by Alexandr Saperov. (violetagg)
-      </fix>
-      <update>
-        <bug>61345</bug>: Add a server listener that can be used to do system
-        property replacement from the property source configured in the
-        digester. (remm)
-      </update>
-      <add>
-        Add additional logging to record problems that occur while waiting for
-        the NIO pollers to stop during the Connector stop process. (markt)
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="Jasper">
-    <changelog>
-      <fix>
-        <bug>61364</bug>: Ensure that files are closed after detecting encoding
-        of JSPs so that files do not remain locked by the file system. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="WebSocket">
-    <changelog>
-      <add>
-        <bug>57767</bug>: Add support to the WebSocket client for following
-        redirects when attempting to establish a WebSocket connection. Patch
-        provided by J Fernandez. (markt)
-      </add>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.0.M25 (markt)" rtext="2017-07-28">
-  <subsection name="Catalina">
-    <changelog>
-      <fix>
-        Performance improvements for service loader look-ups (and look-ups of
-        other class loader resources) when the web application is deployed in a
-        packed WAR file. (markt)
-      </fix>
-      <fix>
-        <bug>60963</bug>: Add <code>ExtractingRoot</code>, a new
-        <code>WebResourceRoot</code> implementation that extracts JARs to the
-        work directory for improved performance when deploying packed WAR files.
-        (markt)
-      </fix>
-      <fix>
-        <bug>61253</bug>: Add warn message when Digester.updateAttributes
-        throws an exception instead of ignoring it. (csutherl)
-      </fix>
-      <fix>
-        Correct a further regression in the fix for <bug>49464</bug> that could
-        cause an byte order mark character to appear at the start of content
-        included by the <code>DefaultServlet</code>. (markt)
-      </fix>
-      <fix>
-        <bug>61313</bug>: Make the read timeout configurable in the
-        <code>JNDIRealm</code> and ensure that a read timeout will result in an
-        attempt to fail over to the alternateURL. Based on patches by Peter
-        Maloney and Felix Schumacher. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Web applications">
-    <changelog>
-      <fix>
-        Correct the documentation for how <code>StandardRoot</code> is
-        configured. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <fix>
-        <bug>61316</bug>: Fix corruption of UTF-16 encoded source files in
-        released source distributions. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.0.M24 (markt)" rtext="not released">
-  <subsection name="Catalina">
-    <changelog>
-      <add>
-        <bug>52924</bug>: Add support for a Tomcat specific deployment
-        descriptor, <code>/WEB-INF/tomcat-web.xml</code>. This descriptor has an
-        identical format to <code>/WEB-INF/web.xml</code>. The Tomcat descriptor
-        takes precedence over any settings in <code>conf/web.xml</code> but does
-        not take precedence over any settings in <code>/WEB-INF/web.xml</code>.
-        (markt)
-      </add>
-      <fix>
-        <bug>61232</bug>: When log rotation is disabled only one separator will
-        be used when generating the log file name. For example if the prefix is
-        <code>catalina.</code> and the suffix is <code>.log</code> then the log
-        file name will be <code>catalina.log</code> instead of
-        <code>catalina..log</code>. Patch provided by Katya Stoycheva.
-        (violetagg)
-      </fix>
-      <fix>
-        <bug>61264</bug>: Correct a regression in the refactoring to use
-        <code>Charset</code> rather than <code>String</code> to store request
-        character encoding that prevented <code>getReader()</code> throwing an
-        <code>UnsupportedEncodingException</code> if the user agent specifies
-        an unsupported character encoding. (markt)
-      </fix>
-      <fix>
-        Correct a regression in the fix for <bug>49464</bug> that could cause an
-        incorrect <code>Content-Length</code> header to be sent by the
-        <code>DefaultServlet</code> if the encoding of a static is not
-        consistent with the encoding of the response. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <fix>
-        Enable TLS connectors to use Java key stores that contain multiple keys
-        where each key has a separate password. Based on a patch by Frank
-        Taffelt. (markt)
-      </fix>
-      <fix>
-        Improve the handling of HTTP/2 stream resets due to excessive headers
-        when a continuation frame is used. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Jasper">
-    <changelog>
-      <add>
-        <bug>53031</bug>: Add support for the <code>fork</code> option when
-        compiling JSPs with the Jasper Ant task and javac. (markt)
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <add>
-        <bug>52791</bug>: Add the ability to set the defaults used by the
-        Windows installer from a configuration file. Patch provided by Sandra
-        Madden. (markt)
-      </add>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.0.M23 (markt)" rtext="not released">
-  <subsection name="Catalina">
-    <changelog>
-      <fix>
-        <bug>49464</bug>: Improve the Default Servlet's handling of static files
-        when the file encoding is not compatible with the required response
-        encoding. (markt)
-      </fix>
-      <fix>
-        <bug>61214</bug>: Remove deleted attribute <code>servlets</code> from
-        the Context MBean description. Patch provided by Alexis Hassler. (markt)
-      </fix>
-      <fix>
-        <bug>61215</bug>: Correctly define <code>addConnectorPort</code> and
-        <code>invalidAuthenticationWhenDeny</code> in the
-        <code>mbean-descriptors.xml</code> file for the
-        <code>org.apache.catalina.valves</code> package so that the attributes
-        are accessible via JMX. (markt)
-      </fix>
-      <fix>
-        <bug>61216</bug>: Improve layout for <code>CompositeData</code> and
-        <code>TabularData</code> when viewing via the JMX proxy servlet. Patch
-        provided by Alexis Hassler. (markt)
-      </fix>
-      <fix>
-        Additional permission for deleting files is granted to JULI as it is
-        required by FileHandler when running under a Security Manager. The
-        thread that cleans the log files is marked as daemon thread.
-        (violetagg)
-      </fix>
-      <fix>
-        <bug>61229</bug>: Correct a regression in 9.0.0.M21 that broke WebDAV
-        handling for resources with names that included a <code>&amp;</code>
-        character. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <fix>
-        Restore the ability to configure support for SSLv3. Enabling this
-        protocol will trigger a warning in the logs since it is known to be
-        insecure. (markt)
-      </fix>
-      <add>
-        Add LoadBalancerDrainingValve, a Valve designed to reduce the amount of
-        time required for a node to drain its authenticated users. (schultz)
-      </add>
-      <fix>
-        Do not log a warning when a <code>null</code> session is returned for an
-        OpenSSL based TLS session since this is expected when session tickets
-        are enabled. (markt)
-      </fix>
-      <fix>
-        When the access log valve logs a TLS related request attribute and the
-        NIO2 connector is used with OpenSSL, ensure that the TLS attributes are
-        available to the access log valve when the connection is closing.
-        (markt)
-      </fix>
-      <fix>
-        <bug>60461</bug>: Sync SSL session access for the APR connector. (remm)
-      </fix>
-      <fix>
-        <bug>61224</bug>: Make the <code>GlobalRequestProcessor</code> MBean
-        attributes read-only. Patch provided by Alexis Hassler. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Jasper">
-    <changelog>
-      <fix>
-        <bug>49176</bug>: When generating JSP runtime error messages that quote
-        the relevant JSP source code, switch from using the results of the JSP
-        page parsing process to using the JSR 045 source map data to identify
-        the correct part of the JSP source from the stack trace. This
-        significantly reduces the memory footprint of Jasper in development
-        mode, provides a small performance improvement for error page generation
-        and enables source quotes to continue to be provided after a Tomcat
-        restart. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Web applications">
-    <changelog>
-      <fix>
-        Remove references to the Loader attribute
-        <code>searchExternalFirst</code> from the documentation since the
-        attribute is no longer supported. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Tribes">
-    <changelog>
-      <add>
-        <bug>51513</bug>: Add support for the <code>compressionMinSize</code>
-        attribute to the <code>GzipInterceptor</code>, add optional statistics
-        collection and expose the Interceptor over JMX. Based on a patch by
-        Christian Stöber. (markt)
-      </add>
-      <add>
-        <bug>61127</bug>: Allow human-readable names for channelSendOptions and
-        mapSendOptions. Patch provided by Igal Sapir. (schultz)
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <scode>
-        Restore the local definition of the web service annotations since the
-        JRE provided versions are deprecated and Java 9 does not provide them by
-        default. (markt)
-      </scode>
-      <fix>
-        Add necessary Java 9 configuration options to the startup scripts to
-        prevent warnings being generated on web application stop. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.0.M22 (markt)" rtext="2017-06-26">
-  <subsection name="Catalina">
-    <changelog>
-      <fix>
-        <bug>48543</bug>: Add the option to specify an alternative file name for
-        the <code>catalina.config</code> system property. Also document that
-        relative, as well as absolute, URLs are permitted. (markt)
-      </fix>
-      <fix>
-        <bug>61072</bug>: Respect the documentation statements that allow
-        using the platform default secure random for session id generation.
-        (remm)
-      </fix>
-      <fix>
-        Correct the javadoc for
-        <code>o.a.c.connector.CoyoteAdapter#parseSessionCookiesId</code>.
-        Patch provided by John Andrew (XUZHOUWANG) via Github. (violetagg)
-      </fix>
-      <fix>
-        <bug>61101</bug>: CORS filter should set Vary header in response.
-        Submitted by Rick Riemer. (remm)
-      </fix>
-      <add>
-        <bug>61105</bug>: Add a new JULI FileHandler configuration for
-        specifying the maximum number of days to keep the log files. By default
-        the log files will be kept 90 days as configured in
-        <code>logging.properties</code>. (violetagg)
-      </add>
-      <update>
-        Update the Servlet 4.0 implementation to add support for setting
-        trailer fields for HTTP responses. (markt)
-      </update>
-      <fix>
-        <bug>61125</bug>: Ensure that <code>WarURLConnection</code> returns the
-        correct value for calls to <code>getLastModified()</code> as this is
-        required for the correct detection of JSP modifications when the JSP is
-        packaged in a WAR file. (markt)
-      </fix>
-      <fix>
-        Improve the <code>SSLValve</code> so it is able to handle client
-        certificate headers from Nginx. Based on a patch by Lucas Ventura Carro.
-        (markt)
-      </fix>
-      <fix>
-        <bug>61134</bug>: Do not use '[' and ']' symbols around substituted
-        text fragments when generating the default error pages. Patch provided
-        by Katya Todorova. (violetagg)
-      </fix>
-      <fix>
-        <bug>61154</bug>: Allow the Manager and Host Manager web applications to
-        start by default when running under a security manager. This was
-        accomplished by adding a custom permission,
-        <code>org.apache.catalina.security.DeployXmlPermission</code>, that
-        permits an application to use a <code>META-INF/context.xml</code> file
-        and then granting that permission to the Manager and Host Manager.
-        (markt)
-      </fix>
-      <fix>
-        <bug>61173</bug>: Polish the javadoc for
-        <code>o.a.catalina.startup.Tomcat</code>. Patch provided by
-        peterhansson_se. (violetagg)
-      </fix>
-      <add>
-        A new configuration property <code>crawlerIps</code> is added to the
-        <code>o.a.catalina.valves.CrawlerSessionManagerValve</code>. Using this
-        property one can specify a regular expression that will be used to
-        identify crawlers based on their IP address. Based on a patch provided
-        by Tetradeus. (violetagg)
-      </add>
-      <fix>
-        <bug>61180</bug>: Log a warning message rather than an information
-        message if it takes more than 100ms to initialised a
-        <code>SecureRandom</code> instance for a web application to use to
-        generate session identifiers. Patch provided by Piotr Chlebda. (markt)
-      </fix>
-      <fix>
-        <bug>61185</bug>: When an asynchronous request is dispatched via
-        <code>AsyncContext.dispatch()</code> ensure that
-        <code>getRequestURI()</code> for the dispatched request matches that of
-        the original request. (markt)
-      </fix>
-      <fix>
-        <bug>61197</bug>: Ensure that the charset name used in the
-        <code>Content-Type</code> header has exactly the same form as that
-        provided by the application. This reverts a behavioural change in
-        9.0.0.M21 that caused problems for some clients. (markt)
-      </fix>
-      <fix>
-        <bug>61201</bug>: Ensure that the <code>SCRIPT_NAME</code> environment
-        variable for CGI executables is populated in a consistent way regardless
-        of how the CGI servlet is mapped to a request. (markt)
-      </fix>
-      <fix>
-        Ensure to send a space between trailer field name and field value
-        for HTTP responses trailer fields. (huxing)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <fix>
-        <bug>61086</bug>: Explicitly signal an empty request body for HTTP 205
-        responses. (markt)
-      </fix>
-      <fix>
-        <bug>61120</bug>: Do not ignore path parameters when processing HTTP/2
-        requests. (markt)
-      </fix>
-      <fix>
-        Revert a change introduced in the fix for bug <bug>60718</bug> that
-        changed the status code recorded in the access log when the client
-        dropped the connection from 200 to 500. (markt)
-      </fix>
-      <fix>
-        Make asynchronous error handling more robust. In particular ensure that
-        <code>onError()</code> is called for any registered
-        <code>AsyncListener</code>s after an I/O error on a non-container
-        thread. (markt)
-      </fix>
-      <fix>
-        Add additional syncs to the SSL session object provided by the OpenSSL
-        engine so that a concurrent destruction cannot cause a JVM crash.
-        (remm)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Jasper">
-    <changelog>
-      <fix>
-        <bug>44787</bug>: Improve error message when JSP compiler configuration
-        options are not valid. (markt)
-      </fix>
-      <add>
-        <bug>45931</bug>: Extend Jasper's <code>timeSpaces</code> option to add
-        support for <code>single</code> which replaces template text that
-        consists entirely of whitespace with a single space character. Based on
-        a patch by Meetesh Karia. (markt)
-      </add>
-      <fix>
-        <bug>53011</bug>: When pre-compiling with JspC, report all compilation
-        errors rather than stopping after the first error. A new option
-        <code>-failFast</code> can be used to restore the previous behaviour of
-        stopping after the first error. Based on a patch provided by Marc Pompl.
-        (markt)
-      </fix>
-      <fix>
-        <bug>61137</bug>: <code>j.s.jsp.tagext.TagLibraryInfo#uri</code> and
-        <code>j.s.jsp.tagext.TagLibraryInfo#prefix</code> fields should not be
-        final. Patch provided by Katya Todorova. (violetagg)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="WebSocket">
-    <changelog>
-      <fix>
-        Correct the log message when a <code>MessageHandler</code> for
-        <code>PongMessage</code> does not implement
-        <code>MessageHandler.Whole</code>. (rjung)
-      </fix>
-      <fix>
-        Improve thread-safety of <code>Future</code>s used to report the result
-        of sending WebSocket messages. (markt)
-      </fix>
-      <fix>
-        <bug>61183</bug>: Correct a regression in the previous fix for
-        <bug>58624</bug> that could trigger a deadlock depending on the locking
-        strategy employed by the client code. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Web applications">
-    <changelog>
-      <fix>
-        Better document the meaning of the trimSpaces option for Jasper. (markt)
-      </fix>
-      <fix>
-        <bug>61150</bug>: Configure the Manager and Host-Manager web
-        applications to permit serialization and deserialization of
-        CRSFPreventionFilter related session objects to avoid warning messages
-        and/or stack traces on web application stop and/or start when running
-        under a security manager. (markt)
-      </fix>
-      <fix>
-        Correct the TLS configuration documentation to remove SSLv2 and SSLv3
-        from the list of supported protocols. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <add>
-        <bug>45832</bug>: Add HTTP DIGEST authentication support to the Catalina
-        Ant tasks used to communicate with the Manager application. (markt)
-      </add>
-      <fix>
-        <bug>45879</bug>: Add the <code>RELEASE-NOTES</code> file to the root of
-        the installation created by the Tomcat installer for Windows to make it
-        easier for users to identify the installed Tomcat version. (markt)
-      </fix>
-      <fix>
-        <bug>61055</bug>: Clarify the code comments in the rewrite valve to make
-        clear that there are no plans to provide proxy support for this valve
-        since Tomcat does not have proxy capabilities. (markt)
-      </fix>
-      <fix>
-        <bug>61076</bug>: Document the <code>altDDName</code> attribute for the
-        <code>Context</code> element. (markt)
-      </fix>
-      <fix>
-        Correct typo in Jar Scan Filter Configuration Reference.
-        Issue reported via comments.apache.org. (violetagg)
-      </fix>
-      <fix>
-        Correct the requirement for the minimum Java SE version in Application
-        Developer's Guide. Issue reported via comments.apache.org. (violetagg)
-      </fix>
-      <fix>
-        <bug>61145</bug>: Add missing <code>@Documented</code> annotation to
-        annotations in the annotations API. Patch provided by Katya Todorova.
-        (markt)
-      </fix>
-      <fix>
-        <bug>61146</bug>: Add missing <code>lookup()</code> method to
-        <code>@EJB</code> annotation in the annotations API. Patch provided by
-        Katya Todorova. (markt)
-      </fix>
-      <fix>
-        Correct typo in Context Container Configuration Reference.
-        Patch provided by Katya Todorova. (violetagg)
-      </fix>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.0.M21 (markt)" rtext="2017-05-10">
-  <subsection name="General">
-    <changelog>
-      <add>
-        Allow to exclude JUnit test classes using the build property
-        <code>test.exclude</code> and document the property in
-        BUILDING.txt. (rjung)
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="Catalina">
-    <changelog>
-      <fix>
-        Review those places where Tomcat re-encodes a URI or URI component and
-        ensure that the correct encoding (path differs from query string) is
-        applied and that the encoding is applied consistently. (markt)
-      </fix>
-      <fix>
-        Avoid a <code>NullPointerException</code> when reading attributes for a
-        initialised HTTP connector where TLS is enabled. (markt)
-      </fix>
-      <fix>
-        Always quote the <code>hostName</code> of an <code>SSLHostConfig</code>
-        element when using it as part of the JMX object name to avoid errors that
-        prevent the associated TLS connector from starting if a wild card
-        <code>hostName</code> is configured (because <code>*</code> is a
-        reserved character for JMX object names). (markt)
-      </fix>
-      <update>
-        Update the default <code>URIEncoding</code> for a <code>Connector</code>
-        to <code>UTF-8</code> as required by the Servlet 4.0 specification.
-        (markt)
-      </update>
-      <scode>
-        Switch to using <code>Charset</code> rather than <code>String</code> to
-        store encoding settings (including for configuration and for the
-        <code>Content-Type header</code>) to reduce the number of places the
-        associated <code>Charset</code> needs to be looked up. (markt)
-      </scode>
-      <fix>
-        Use a more reliable mechanism for the <code>DefaultServlet</code> when
-        determining if the current request is for custom error page or not.
-        (markt)
-      </fix>
-      <fix>
-        Ensure that when the Default or WebDAV servlets process an error
-        dispatch that the error resource is processed via the
-        <code>doGet()</code> method irrespective of the method used for the
-        original request that triggered the error. (markt)
-      </fix>
-      <fix>
-        If a static custom error page is specified that does not exist or cannot
-        be read, ensure that the intended error status is returned rather than a
-        404 or 403. (markt)
-      </fix>
-      <fix>
-        When the WebDAV servlet is configured and an error dispatch is made to a
-        custom error page located below <code>WEB-INF</code>, ensure that the
-        target error page is displayed rather than a 404 response. (markt)
-      </fix>
-      <update>
-        Update the Servlet 4.0 implementation to add support for obtaining
-        trailer fields from chunked HTTP requests. (markt)
-      </update>
-      <add>
-        <bug>61047</bug>: Add MIME mapping for woff2 fonts in the default
-        web.xml. Patch provided by Justin Williamson. (violetagg)
-      </add>
-      <fix>
-        Correct the logic that selects the encoding to use to decode the query
-        string in the <code>SSIServletExternalResolver</code> so that the
-        <code>useBodyEncodingForURI</code> attribute of the
-        <code>Connector</code> is correctly taken into account. (markt)
-      </fix>
-      <fix>
-        Within the Expires filter, make the content type value specified with the
-        <code>ExpiresByType</code> parameter, case insensitive. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <fix>
-        When a <code>TrustManager</code> is configured that does not support
-        <code>certificateVerificationDepth</code> only log a warning about that
-        lack of support when <code>certificateVerificationDepth</code> has been
-        explicitly set. (markt)
-      </fix>
-      <fix>
-        <bug>60970</bug>: Extend the fix for large headers to push requests.
-        (markt)
-      </fix>
-      <fix>
-        Do not include a <code>Date</code> header in HTTP/2 responses with
-        status codes less than 200. (markt)
-      </fix>
-      <fix>
-        When sending an HTTP/2 push promise with the NIO2 connector, the pushed
-        stream ID should only be included with the initial push promise frame
-        and not any subsequent continuation frames. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Jasper">
-    <changelog>
-      <fix>
-        When no BOM is present and an encoding is detected, do not skip the
-        bytes used to detect the encoding since they are not part of a BOM.
-        (markt)
-      </fix>
-      <update>
-        <bug>61057</bug>: Update to Eclipse JDT Compiler 4.6.3. (violetagg)
-      </update>
-      <fix>
-        <bug>61065</bug>: Ensure that once the class is resolved by
-        <code>jakarta.el.ImportHandler#resolveClass</code> it will be cached with
-        the proper name. (violetagg)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="WebSocket">
-    <changelog>
-      <add>
-        Introduce new API <code>o.a.tomcat.websocket.WsSession#suspend</code>/
-        <code>o.a.tomcat.websocket.WsSession#resume</code> that can be used to
-        suspend/resume reading of the incoming messages. (violetagg)
-      </add>
-      <fix>
-        <bug>61003</bug>: Ensure the flags for reading/writing in
-        <code>o.a.t.websocket.AsyncChannelWrapperSecure</code> are correctly
-        reset even if some exceptions occurred during processing. (markt/violetagg)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Web Applications">
-    <changelog>
-      <add>
-        Add documents for <code>maxIdleTime</code> attribute to Channel Receiver
-        docs. (kfujino)
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="Tribes">
-    <changelog>
-      <add>
-        Add features to get the statistics of the thread pool of the
-        <code>Receiver</code> component and
-        <code>MessageDispatchInterceptor</code>. These statistics information
-        can be acquired via JMX. (kfujino)
-      </add>
-      <add>
-        Add <code>maxIdleTime</code> attribute to <code>NioReceiverMBean</code>
-        in order to expose to JMX. (kfujino)
-      </add>
-      <add>
-        Add JMX support for <code>Channel Interceptors</code>. The Interceptors
-        that implement JMX support are <code>TcpFailureDetector</code>,
-        <code>ThroughputInterceptor</code>, <code>TcpPingInterceptor</code>,
-        <code>StaticMembershipInterceptor</code>,
-        <code>MessageDispatchInterceptor</code> and
-        <code>DomainFilterInterceptor</code>. (kfujino)
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <add>
-        Modify the Ant build script used to publish to a Maven repository so
-        that it no longer requires artifacts to be GPG signed. This is make it
-        possible for the CI system to upload snapshot builds to the ASF Maven
-        repository. (markt)
-      </add>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.0.M20 (markt)" rtext="2017-04-18">
-  <subsection name="Catalina">
-    <changelog>
-      <update>
-        Update the Servlet 4.0 API implementation to reflect the change in
-        method name from <code>getPushBuilder()</code> to
-        <code>newPushBuilder()</code>. (markt)
-      </update>
-      <fix>
-        Correct various edge cases in the new HTTP Host header validation
-        parser. Patch provided by Katya Todorova. (martk)
-      </fix>
-      <fix>
-        Correct a regression in the X to comma refactoring that broke JMX
-        operations that take parameters. (markt)
-      </fix>
-      <fix>
-        Avoid a <code>NullPointerException</code> when reading attributes for a
-        running HTTP connector where TLS is not enabled. (markt)
-      </fix>
-      <fix>
-        <bug>47214</bug>: Refactor code so that explicitly referenced inner
-        classes are given explicit names rather than being anonymous. (markt)
-      </fix>
-      <fix>
-        <bug>59825</bug>: Log a message that lists the components in the
-        processing chain that do not support async processing when a call to
-        <code>ServletRequest.startAsync()</code> fails. (markt)
-      </fix>
-      <fix>
-        <bug>60940</bug>: Improve the handling of the <code>META-INF/</code> and
-        <code>META-INF/MANIFEST.MF</code> entries for Jar files located in
-        <code>/WEB-INF/lib</code> when running a web application from a packed
-        WAR file. (markt)
-      </fix>
-      <fix>
-        Pre-load the <code>ExceptionUtils</code> class. Since the class is used
-        extensively in error handling, it is prudent to pre-load it to avoid any
-        failure to load this class masking the true problem during error
-        handling. (markt)
-      </fix>
-      <fix>
-        Avoid potential <code>NullPointerException</code>s related to access
-        logging during shutdown, some of which have been observed when running
-        the unit tests. (markt)
-      </fix>
-      <fix>
-        When there is no <code>javax.servlet.WriteListener</code> registered
-        then a call to <code>javax.servlet.ServletOutputStream#isReady</code>
-        will return <code>false</code> instead of throwing
-        <code>IllegalStateException</code>. (violetagg)
-      </fix>
-      <fix>
-        When there is no <code>javax.servlet.ReadListener</code> registered
-        then a call to <code>javax.servlet.ServletInputStream#isReady</code>
-        will return <code>false</code> instead of throwing
-        <code>IllegalStateException</code>. (violetagg)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <fix>
-        Align cipher configuration parsing with current OpenSSL master. (markt)
-      </fix>
-      <fix>
-        <bug>60970</bug>: Fix infinite loop if application tries to write a
-        large header to the response when using HTTP/2. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Jasper">
-    <changelog>
-      <fix>
-        <bug>47214</bug>: Refactor code so that explicitly referenced inner
-        classes are given explicit names rather than being anonymous. (markt)
-      </fix>
-      <fix>
-        <bug>60925</bug>: Improve the handling of access to properties defined
-        by interfaces when a <code>BeanELResolver</code> is used under a
-        <code>SecurityManager</code>. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Tribes">
-    <changelog>
-      <add>
-        Add JMX support for Tribes components. (kfujino)
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="jdbc-pool">
-    <changelog>
-      <scode>
-        Refactor the creating a constructor for a proxy class to reduce
-        duplicate code. (kfujino)
-      </scode>
-      <fix>
-        In <code>StatementFacade</code>, the method call on the statements that
-        have been closed throw <code>SQLException</code> rather than
-        <code>NullPointerException</code>. (kfujino)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <fix>
-        <bug>60932</bug>: Correctly escape single quotes when used in i18n
-        messages. Based on a patch by Michael Osipov. (markt)
-      </fix>
-      <scode>
-        Review i18n property files, remove unnecessary escaping and consistently
-        use <code>[...]</code> to delimit inserted values. (markt)
-      </scode>
-      <fix>
-        Update the custom Ant task that integrates with the Symantec code
-        signing service to use the now mandatory 2-factor authentication.
-        (markt)
-      </fix>
-      <scode>
-        Refactoring in preparation for Java 9. Refactor to avoid using some
-        methods that will be deprecated in Java 9 onwards. (markt)
-      </scode>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.0.M19 (markt)" rtext="2017-03-30">
-  <subsection name="Catalina">
-    <changelog>
-      <add>
-        <bug>54618</bug>: Add support to the
-        <code>HttpHeaderSecurityFilter</code> for the HSTS preload parameter.
-        (markt)
-      </add>
-      <fix>
-        Correct a bug in the implementation of the Servlet 4.0 feature that
-        allows specifying a default request and/or response character encoding
-        per web application. <code>null</code> values passed via the
-        programmatic interface no longer trigger a
-        <code>NullPointerException</code>. (markt)
-      </fix>
-      <fix>
-        Correct a potential exception during shutdown when one or more
-        Containers are configured with a value of 1 for startStopThreads.
-        (markt)
-      </fix>
-      <fix>
-        <bug>60853</bug>: Expose the <code>SSLHostConfig</code> and
-        <code>SSLHostConfigCertificate</code> objects via JMX. (markt)
-      </fix>
-      <fix>
-        <bug>60876</bug>: Ensure that <code>Set-Cookie</code> headers generated
-        by the <code>Rfc6265CookieProcessor</code> are aligned with the
-        specification. Patch provided by Jim Griswold. (markt)
-      </fix>
-      <fix>
-        <bug>60882</bug>: Fix a <code>NullPointerException</code> when obtaining
-        a <code>RequestDispatcher</code> for a request that will not have any
-        pathInfo associated with it. This was a regression in the changes in
-        9.0.0.M18 for the Servlet 4.0 API changes. (markt)
-      </fix>
-      <update>
-        Align <code>PushBuilder</code> API with changes from the Servlet expert
-        group. (markt)
-      </update>
-      <update>
-        Align web.xml parsing rules with changes from the Servlet expert group
-        for <code>&lt;request-character-encoding&gt;</code> and
-        <code>&lt;response-character-encoding&gt;</code>. (markt)
-      </update>
-      <scode>
-        Refactor the various implementations of X to comma separated list to a
-        single utility class and update the code to use the new utility class.
-        (markt)
-      </scode>
-      <fix>
-        <bug>60911</bug>: Ensure NPE will not be thrown when looking for SSL
-        session ID. Based on a patch by Didier Gutacker. (violetagg)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <fix>
-        Add async based IO groundwork for HTTP/2. (remm)
-      </fix>
-      <fix>
-        Fix HTTP/2 incorrect input unblocking on EOF. (remm)
-      </fix>
-      <fix>
-        Close the connection sooner if an event occurs for a current connection
-        that is not consistent with the current state of that connection.
-        (markt)
-      </fix>
-      <fix>
-        Speed up shutdown when using multiple acceptor threads by ensuring that
-        the code that unlocks the acceptor threads correctly handles the case
-        where there are multiple threads. (markt)
-      </fix>
-      <fix>
-        <bug>60851</bug>: Add <code>application/xml</code> and
-        <code>application/json</code> to the default list of compressible MIME
-        types. Patch by Michael Osipov. (markt)
-      </fix>
-      <fix>
-        <bug>60852</bug>: Correctly spell compressible when used in
-        configuration attributes and internal code. Based on a patch by Michael
-        Osipov. (markt)
-      </fix>
-      <fix>
-        <bug>60900</bug>: Avoid a <code>NullPointerException</code> in the APR
-        Poller if a connection is closed at the same time as new data arrives on
-        that connection. (markt)
-      </fix>
-      <fix>
-        Improve HPACK specification compliance by fixing some test failures
-        reported by the h2spec tool written by Moto Ishizawa. (markt)
-      </fix>
-      <fix>
-        Improve HTTP/2 specification compliance by fixing some test failures
-        reported by the h2spec tool written by Moto Ishizawa. (markt)
-      </fix>
-      <fix>
-        <bug>60918</bug>: Fix sendfile processing error that could lead to
-        subsequent requests experiencing an <code>IllegalStateException</code>.
-        (markt)
-      </fix>
-      <fix>
-        Improve sendfile handling when requests are pipelined. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Jasper">
-    <changelog>
-      <fix>
-        <bug>60844</bug>: Correctly handle the error when fewer parameter values
-        than required by the method are used to invoke an EL method expression.
-        Patch provided by Daniel Gray. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="jdbc-pool">
-    <changelog>
-      <fix>
-        <bug>60764</bug>: Implement <code>equals()</code> and
-        <code>hashCode()</code> in the <code>StatementFacade</code> in order to
-        enable these methods to be called on the closed statements if any
-        statement proxy is set. This behavior can be changed with
-        <code>useStatementFacade</code> attribute. (kfujino)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <fix>
-        Refactor the build script and the NSIS installer script so that either
-        NSIS 2.x or NSIS 3.x can be used to build the installer. This is
-        primarily to re-enable building the installer on the Linux based CI
-        system where the combination of NSIS 3.x and wine leads to failed
-        installer builds. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.0.M18 (markt)" rtext="2017-03-13">
-  <subsection name="Catalina">
-    <changelog>
-      <fix>
-        <bug>60469</bug>: Refactor <code>RealmBase</code> for better code re-use
-        when implementing Realms that use a custom <code>Principal</code>.
-        (markt)
-      </fix>
-      <fix>
-        <bug>60490</bug>: Various formatting and layout improvements for the
-        <code>ErrorReportValve</code>. Patch provided by Michael Osipov. (markt)
-      </fix>
-      <fix>
-        <bug>60573</bug>: Remove the reason phrase when sending a
-        <code>100</code> response status for consistency with other response
-        status lines. Patch provided by Michael Osipov. (markt)
-      </fix>
-      <update>
-        <bug>60596</bug>: Improve performance of DefaultServlet when sendfile
-        feature is disabled on connector. (kkolinko)
-      </update>
-      <scode>
-        Make it easier for sub-classes of <code>Tomcat</code> to modify the
-        default web.xml settings by over-riding
-        <code>getDefaultWebXmlListener()</code>. Patch provided by Aaron
-        Anderson. (markt)
-      </scode>
-      <fix>
-        Reduce the contention in the default <code>InstanceManager</code>
-        implementation when multiple threads are managing objects and need to
-        reference the annotation cache. (markt)
-      </fix>
-      <fix>
-        <bug>60623</bug>: When startStopThreads is 1 (or a special value that
-        is equivalent to 1) then rather than using an
-        <code>ExecutorService</code> to start the children of the current
-        component, the children will be started on the current thread. (markt)
-      </fix>
-      <scode>
-        <bug>60674</bug>: Remove <code>final</code> marker from
-        <code>CorsFilter</code> to enable sub-classing. (markt)
-      </scode>
-      <fix>
-        <bug>60683</bug>: Security manager failure causing NPEs when doing IO
-        on some JVMs. (csutherl)
-      </fix>
-      <fix>
-        <bug>60688</bug>: Update the internal fork of Apache Commons BCEL to
-        r1782855 to add early access Java 9 support to the annotation scanning
-        code. (markt)
-      </fix>
-      <fix>
-        <bug>60694</bug>: Prevent NPE during authentication when no JASPIC
-        <code>AuthConfigFactory</code> is available. (markt)
-      </fix>
-      <fix>
-        <bug>60697</bug>: When HTTP TRACE requests are disabled on the
-        Connector, ensure that the HTTP OPTIONS response from custom servlets
-        does not include TRACE in the returned Allow header. (markt)
-      </fix>
-      <fix>
-        <bug>60718</bug>: Improve error handling for asynchronous processing and
-        correct a number of cases where the <code>requestDestroyed()</code>
-        event was not being fired and an entry wasn't being made in the access
-        logs. (markt)
-      </fix>
-      <fix>
-        <bug>60720</bug>: Replace "WWW-Authenticate" literal with static final
-        AUTH_HEADER_NAME in SpnegoAuthenticator. Patch provided by Michael
-        Osipov. (violetagg)
-      </fix>
-      <fix>
-        The default JASPIC <code>AuthConfigFactory</code> now correctly notifies
-        registered <code>RegistrationListener</code>s when a new
-        <code>AuthConfigProvider</code> is registered. (markt)
-      </fix>
-      <scode>
-        Improve the performance of <code>AuthenticatorBase</code> when there is
-        no JASPIC configuration available. (violetagg)
-      </scode>
-      <fix>
-        When HTTP TRACE requests are disabled on the Connector, ensure that the
-        HTTP OPTIONS response from the WebDAV servlet does not include
-        TRACE in the returned Allow header. (markt)
-      </fix>
-      <fix>
-        <bug>60722</bug>: Take account of the
-        <strong>dispatchersUseEncodedPaths</strong> setting on the current
-        <strong>Context</strong> when generating paths for dispatches triggered
-        by <code>AsyncContext.dispatch()</code>. (markt)
-      </fix>
-      <fix>
-        <bug>60728</bug>: Make the separator Tomcat uses in the Tomcat specific
-        <code>war:file:...</code> URL protocol customizable via a system
-        property. The separator is equivalent to the use of the <code>!</code>
-        character in <code>jar:file:...</code> URLs. The default separator of
-        <code>*</code> remains unchanged. (markt)
-      </fix>
-      <update>
-        Update the Servlet 4.0 API implementation to align with the latest
-        proposals from the Servlet 4.0 expert group. This includes updates to
-        the new Servlet mapping API, new methods on the
-        <code>ServletContext</code> to make the available API more equivalent to
-        the deployment descriptor, updates to the HTTP push API and the ability
-        to set default request and response character encoding per web
-        application. Note that the Servlet 4.0 API is still a work in progress
-        and further changes are likely. (markt)
-      </update>
-      <fix>
-        <bug>60798</bug>: Correct a bug in the handling of JARs in unpacked WARs
-        that meant multiple attempts to read the same entry from a JAR in
-        succession would fail for the second and subsequent attempts. (markt)
-      </fix>
-      <fix>
-        <bug>60808</bug>: Ensure that the <code>Map</code> returned by
-        <code>ServletRequest.getParameterMap()</code> is fully immutable. Based
-        on a patch provided by woosan. (markt)
-      </fix>
-      <fix>
-        <bug>60824</bug>: Correctly cache the <code>Subject</code> in the
-        session - if there is a session - when running under a
-        <code>SecurityManager</code>. Patch provided by Jan Engehausen. (markt)
-      </fix>
-      <fix>
-        Ensure request and response facades are used when firing application
-        listeners. (markt/remm)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <fix>
-        Improve handling of case when an HTTP/2 client sends more data that is
-        subject to flow control than the current window size allows. (markt)
-      </fix>
-      <fix>
-        Improve NIO2 look-ahead parsing of TLS client hello for SNI with large
-        client hello messages. (markt)
-      </fix>
-      <add>
-        Enable ALPN and also, therefore, HTTP/2 for the NIO and NIO2 HTTP
-        connectors when using the JSSE implementation for TLS when running on
-        Java 9. (markt)
-      </add>
-      <fix>
-        Restore Java 9 direct byte buffer compatibility. (remm)
-      </fix>
-      <fix>
-        <bug>59807</bug>: Provide a better error message when there is no
-        <strong>SSLHostConfig</strong> defined with a <code>hostName</code> that
-        matches the <code>defaultSSLHostConfigName</code> for the associated
-        <strong>Connector</strong>. (markt)
-      </fix>
-      <fix>
-        <bug>60627</bug>: Modify the <code>Rfc6265CookieProcessor</code> so that
-        in addition to cookie headers that start with an explicit RFC 2109
-        <code>$Version=1</code>, cookies that start with <code>$Version=0</code>
-        are also parsed as RFC 2109 cookies. (markt)
-      </fix>
-      <fix>
-        Include the value of <code>SslHostConfig.truststoreAlgorithm</code> when
-        warning that the algorithm does not support the
-        <code>certificateVerificationDepth</code> configuration option. (markt)
-      </fix>
-      <fix>
-        Ensure that executor thread pools used with connectors pre-start the
-        configured minimum number of idle threads. (markt)
-      </fix>
-      <fix>
-        <bug>60716</bug>: Add a new JSSE specific attribute,
-        <code>revocationEnabled</code>, to <code>SSLHostConfig</code> to permit
-        JSSE provider revocation checks to be enabled when no
-        <code>certificateRevocationListFile</code> has been configured. The
-        expectation is that configuration will be performed via a JSSE provider
-        specific mechanisms. (markt)
-      </fix>
-      <fix>
-        Modify the cookie header generated by the
-        <code>Rfc6265CookieProcessor</code> so it always sends an
-        <code>Expires</code> attribute as well as a <code>Max-Age</code>
-        attribute to avoid problems with Microsoft browsers that do not support
-        the <code>Max-Age</code> attribute. (markt)
-      </fix>
-      <fix>
-        <bug>60761</bug>: Expose a protected getter and setter for
-        <code>NioEndpoint.stopLatch</code> to make the class easier to extend.
-        (markt)
-      </fix>
-      <fix>
-        Prevent blocking reads after a stream exception occurs with HTTP/2.
-        (remm)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Jasper">
-    <changelog>
-      <fix>
-        Follow up to the fix for <bug>58178</bug>. When creating the
-        <code>ELContext</code> for a tag file, ensure that any registered
-        <code>ELContextListener</code>s are fired. (markt)
-      </fix>
-      <fix>
-        Refactor code generated for JSPs to reduce the size of the code required
-        for tags. (markt)
-      </fix>
-      <fix>
-        Improve the error handling for simple tags to ensure that the tag is
-        released and destroyed once used. (remm, violetagg)
-      </fix>
-      <fix>
-        <bug>60769</bug>: Correct a regression in the XML encoding detection
-        refactoring carried out for 9.0.0.M16 that incorrectly always used the
-        detected BOM encoding in preference to any encoding specified in the
-        prolog. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Cluster">
-    <changelog>
-      <add>
-        Make the <code>accessTimeout</code> configurable in
-        <code>BackupManager</code> and <code>ClusterSingleSignOn</code>. The
-        <code>accessTimeout</code> is used as a timeout period for PING in
-        replication map. (kfujino)
-      </add>
-      <fix>
-        <bug>60806</bug>: To avoid <code>ClassNotFoundException</code>, make
-        sure that the web application class loader is passed to
-        <code>ReplicatedContext</code>. (kfujino)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="WebSocket">
-    <changelog>
-      <fix>
-        <bug>60617</bug>: Correctly create a <code>CONNECT</code> request when
-        establishing a WebSocket connection via a proxy. Patch provided by
-        Svetlin Zarev. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Tribes">
-    <changelog>
-      <add>
-        Add log message that PING message has received beyond the timeout
-        period. (kfujino)
-      </add>
-      <fix>
-        When a PING message that beyond the time-out period has been received,
-        make sure that valid member is added to the map membership. (kfujino)
-      </fix>
-      <fix>
-        Ensure that <code>NoRpcChannelReply</code> messages are not received on
-        <code>RpcCallback</code>. (kfujino)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Web Applications">
-    <changelog>
-      <fix>
-        Add Specification and Javadoc references for JASPIC to the Docs
-        application. (csutherl)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <fix>
-        Spelling corrections provided by Josh Soref. (violetagg)
-      </fix>
-      <scode>
-        Remove local definition of web service annotations since these are
-        provided by the JRE. (markt)
-      </scode>
-      <update>
-        Update the packaged version of the Tomcat Native Library to 1.2.12 to
-        pick up the latest Windows binaries built with OpenSSL 1.0.2k. (violetagg)
-      </update>
-      <add>
-        <bug>60784</bug>: Update all unit tests that test the HTTP status line
-        to check for the required space after the status code. Patch provided by
-        Michael Osipov. (markt)
-      </add>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.0.M17 (markt)" rtext="2017-01-16">
-  <subsection name="Catalina">
-    <changelog>
-      <add>
-        <bug>60620</bug>:
-        Extend the <code>JreMemoryLeakPreventionListener</code> to provide
-        protection against <code>ForkJoinPool.commonPool()</code> related memory
-        leaks. (markt)
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <fix>
-        Ensure UpgradeProcessor instances associated with closed connections are
-        removed from the map of current connections to Processors. (markt)
-      </fix>
-      <fix>
-        Remove a workaround for a problem previously reported with WebSocket,
-        TLS and APR that treated some error conditions as not errors. The
-        original problem cannot be reproduced with the current code and the
-        work-around is now causing problems. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Jasper">
-    <changelog>
-      <fix>
-        <bug>60497</bug>: Follow up fix using a better variable name for the
-        tag reuse flag. (remm)
-      </fix>
-      <fix>
-        Revert use of try/finally for simple tags. (remm)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="WebSocket">
-    <changelog>
-      <fix>
-        Prevent potential processing loop on unexpected WebSocket connection
-        closure. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="jdbc-pool">
-    <changelog>
-      <add>
-        Enable reset the statistics without restarting the pool. (kfujino)
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <update>
-        Update the NSIS Installer used to build the Windows installer to version
-        3.01. (markt)
-      </update>
-      <fix>
-        Spelling corrections provided by Josh Soref. (violetagg)
-      </fix>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.0.M16 (markt)" rtext="not released">
-  <subsection name="Catalina">
-    <changelog>
-      <add>
-        <bug>53602</bug>: Add HTTP status code 451 (RFC 7725) to the list of
-        HTTP status codes recognised by the ErrorReportValve. (markt)
-      </add>
-      <fix>
-        <bug>60446</bug>: Handle the case where the stored user credential uses
-        a different key length than the length currently configured for the
-        <code>CredentialHandler</code>. Based on a patch by Niklas Holm. (markt)
-      </fix>
-      <update>
-        Update the warnings that reference required options for running on Java
-        9 to use the latest syntax for those options. (markt)
-      </update>
-      <fix>
-        <bug>60513</bug>: Fix thread safety issue with RMI cleanup code. (remm)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <fix>
-        Expand the search process for a server certificate when OpenSSL is used
-        with a JSSE connector and an explicit alias has not been configured.
-        (markt)
-      </fix>
-      <scode>
-        Extract the common Acceptor code from each Endpoint into a new Acceptor
-        class that is used by all Endpoints. (markt)
-      </scode>
-      <fix>
-        <bug>60450</bug>: Improve the selection algorithm for the default trust
-        store type for a TLS Virtual Host. In particular, don't use
-        <code>PKCS12</code> as a default trust store type. Better document how
-        the default trust store type is selected for a TLS virtual host. (markt)
-      </fix>
-      <fix>
-        <bug>60451</bug>: Correctly handle HTTP/2 header values that contain
-        characters with unicode code points in the range 128 to 255. Reject
-        with a clear error message HTTP/2 header values that contain characters
-        with unicode code points above 255. (markt)
-      </fix>
-      <fix>
-        Improve the logic that selects an address to use to unlock the Acceptor
-        to take account of platforms what do not listen on all local addresses
-        when configured with an address of <code>0.0.0.0</code> or
-        <code>::</code>. (markt)
-      </fix>
-      <fix>
-        Correct a regression in the refactoring to make wider use of
-        <code>ByteBuffer</code> that caused an intermittent failure in the unit
-        tests. (markt)
-      </fix>
-      <fix>
-        <bug>60482</bug>: HTTP/2 shouldn't do URL decoding on the query string.
-        (remm)
-      </fix>
-      <fix>
-        Fix an HTTP/2 compression error. Once a new size has been agreed for the
-        dynamic HPACK table, the next header block must begin with a dynamic
-        table update. (markt)
-      </fix>
-      <fix>
-        <bug>60508</bug>: Set request start time for HTTP/2. (remm)
-      </fix>
-      <fix>
-        The default output buffer size for AJP connectors is now based on the
-        configured AJP packet size rather than the minimum permitted AJP packet
-        size. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Jasper">
-    <changelog>
-      <update>
-        Implement a simpler JSP file encoding detector that delegates XML prolog
-        encoding detection to the JRE rather than using a custom XML parser.
-        (markt)
-      </update>
-      <fix>
-        <bug>60497</bug>: Restore previous tag reuse behavior following the use
-        of try/finally. (remm)
-      </fix>
-      <fix>
-        Improve the error handling for simple tags to ensure that the tag is
-        released and destroyed once used. (remm)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="WebSocket">
-    <changelog>
-      <fix>
-        Correctly handle blocking WebSocket writes when the write times out just
-        before the write is attempted. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Web Applications">
-    <changelog>
-      <fix>
-        <bug>60344</bug>: Add a note to BUILDING.txt regarding using the source
-        bundle with the correct line endings. (markt)
-      </fix>
-      <fix>
-        <bug>60467</bug>: remove problematic characters from XML documentation.
-        Based upon a patch by Michael Osipov. (schultz)
-      </fix>
-      <add>
-        In the documentation web application, be explicit that clustering
-        requires a secure network for all of the cluster network traffic.
-        (markt)
-      </add>
-      <update>
-        Update the ASF logos to the new versions.
-      </update>
-      <fix>
-        <bug>60468</bug>: Correct the format of the sample ISO-8601 date used
-        to report the build date for the documentation. Patch provided by
-        Michael Osipov. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <update>
-        Update the ASF logos used in the Apache Tomcat installer for Windows to
-        use the new versions.
-      </update>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.0.M15 (markt)" rtext="2016-12-08">
-  <subsection name="Other">
-    <changelog>
-      <scode>
-        Increment version due a local build configuration error with 9.0.0.M14
-        that wasn't caught until after digital signing had been completed
-        Signing requires unique names so a new tag was required. (markt)
-      </scode>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.0.M14 (markt)" rtext="not released">
-  <subsection name="Catalina">
-    <changelog>
-      <update>
-        <bug>60202</bug>: Add an available flag to realms, to indicate the
-        state, or the realm backend. Update lockout realm to only register
-        auth failures if the realm is available. (remm)
-      </update>
-      <fix>
-        <bug>60340</bug>: Readability improvements for CSS used in
-        DefaultServlet and ErrorReportValve. Patch provided by Michael
-        Osipov. (violetagg)
-      </fix>
-      <fix>
-        <bug>60351</bug>: Delay creating <code>META-INF/war-tracker</code> file
-        until after the WAR has been expanded to address the case where the
-        Tomcat process terminates during the expansion. (markt)
-      </fix>
-      <fix>
-        Correctly generate URLs for resources located inside JARs that are
-        themselves located inside a packed WAR file. (markt)
-      </fix>
-      <fix>
-        Correctly handle the <code>configClass</code> attribute of a Host when
-        embedding Tomcat. (markt)
-      </fix>
-      <update>
-        <bug>60368</bug>: Stop creating a default connector on start in
-        embedded mode. (remm)
-      </update>
-      <fix>
-        <bug>60379</bug>: Dispose of the GSS credential once it is no longer
-        required. Patch provided by Michael Osipov. (markt)
-      </fix>
-      <fix>
-        <bug>60380</bug>: Ensure that a call to
-        <code>HttpServletRequest#logout()</code> triggers a call to
-        <code>TomcatPrincipal#logout()</code>. Based on a patch by Michael
-        Osipov. (markt)
-      </fix>
-      <fix>
-        <bug>60381</bug>: Provide a standard <code>toString()</code>
-        implementation for components that implement <code>Contained</code>.
-        (markt)
-      </fix>
-      <fix>
-        <bug>60387</bug>: Correct the javadoc for
-        <code>o.a.catalina.AccessLog.setRequestAttributesEnabled</code>.
-        The default value is different for the different implementations.
-        (violetagg)
-      </fix>
-      <scode>
-        <bug>60393</bug>: Use consistent parameter naming in implementations of
-        <code>Realm#authenticate(GSSContext, boolean)</code>. (markt)
-      </scode>
-      <scode>
-        Refactor the <code>org.apache.naming</code> package to reduce duplicate
-        code. Duplicate code identified by the Simian tool. (markt)
-      </scode>
-      <scode>
-        Refactor the implementations of
-        <code>HttpServletRequest#getRequestURL()</code> to reduce duplicate
-        code. Duplicate code identified by the Simian tool. (markt)
-      </scode>
-      <scode>
-        Refactor Catalina interfaces to make wider use of the
-        <code>Contained</code> interface and reduce duplication. (markt)
-      </scode>
-      <scode>
-        Remove the <code>getName()</code> method from <code>RealmBase</code>
-        along with the various constants used by the sub-classes to store the
-        return value. (markt)
-      </scode>
-      <fix>
-        <bug>60395</bug>: Log when an <code>Authenticator</code> passes an
-        incomplete <code>GSSContext</code> to a Realm since it indicates a bug
-        in the <code>Authenticator</code>. Patch provided by Michael Osipov.
-        (markt)
-      </fix>
-      <fix>
-        <bug>60400</bug>: When expanding the buffer used for reading the
-        request body, ensure the read position will be restored to the
-        original one. (violetagg)
-      </fix>
-      <scode>
-        Refactor the MBean implementations for the internal Tomcat components
-        to reduce code duplication. (markt)
-      </scode>
-      <fix>
-        <bug>60410</bug>: Ensure that multiple calls to
-        <code>JarInputStreamWrapper#close()</code> do not incorrectly trigger
-        the closure of the underlying JAR or WAR file. (markt)
-      </fix>
-      <fix>
-        <bug>60411</bug>: Implement support in the <code>RewriteValve</code> for
-        symbolic names to specify the redirect code to use when returning a
-        redirect response to the user agent. Patch provided by Michael Osipov.
-        (markt)
-      </fix>
-      <fix>
-        <bug>60413</bug>: In the <code>RewriteValve</code> write empty capture
-        groups as the empty string rather than as <code>&quot;null&quot;</code>
-        when generating the re-written URL. Based on a patch by Michael Osipov.
-        (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <fix>
-        <bug>60372</bug>: Ensure the response headers' buffer limit is reset to
-        the capacity of this buffer when IOException occurs while writing the
-        headers to the socket. (violetagg)
-      </fix>
-      <fix>
-        Ensure that the availability of configured upgrade protocols that
-        require ALPN is correctly reported during Tomcat start. (markt)
-      </fix>
-      <fix>
-        <bug>60386</bug>: Implement a more sophisticated pruning algorithm for
-        removing closed streams from the priority tree to ensure that the tree
-        does not grow too large. (markt)
-      </fix>
-      <fix>
-        <bug>60409</bug>: When unable to complete sendfile request, ensure the
-        Processor will be added to the cache only once. (markt/violetagg)
-      </fix>
-      <fix>
-        Ensure that the endpoint is able to unlock the acceptor thread during
-        shutdown if the endpoint is configured to listen to any local address
-        of a specific type such as <code>0.0.0.0</code> or <code>::</code>.
-        (markt)
-      </fix>
-      <add>
-        Add a new configuration option, <code>ipv6v6only</code> to the APR
-        connectors that allows them to be configure to only accept IPv6
-        connections when configured with an IPv6 address rather than the
-        default which is to accept IPv4 connections as well if the operating
-        system uses a dual network stack. (markt)
-      </add>
-      <fix>
-        Improve the logic that unlocks the acceptor thread so a better choice is
-        made for the address to connect to when a connector is configured for
-        any local port. This reduces the likelihood of the unlock failing.
-        (markt)
-      </fix>
-      <fix>
-        <bug>60436</bug>: Avoid a potential NPE when processing async timeouts.
-        (markt)
-      </fix>
-      <fix>
-        Reduce the window in which an async request that has just started
-        processing on a container thread remains eligible for an async timeout.
-        (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Jasper">
-    <changelog>
-      <fix>
-        <bug>60431</bug>: Improve handling of varargs in UEL expressions. Based
-        on a patch by Ben Wolfe. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Web applications">
-    <changelog>
-      <fix>
-        Correct a typo in Host Configuration Reference.
-        Issue reported via comments.apache.org. (violetagg)
-      </fix>
-      <fix>
-        <bug>60412</bug>: Add information on the comment syntax for the
-        <code>RewriteValve</code> configuration. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Tribes">
-    <changelog>
-      <fix>
-        Reduce the warning logs for a message received from a different domain
-        in order to avoid excessive log outputs. (kfujino)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="WebSocket">
-    <changelog>
-      <fix>
-        <bug>60437</bug>: Avoid possible handshake overflows in the websocket
-        client. (remm)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="jdbc-pool">
-    <changelog>
-      <add>
-        <bug>58816</bug>: Implement the statistics of jdbc-pool. The stats infos
-        are <code>borrowedCount</code>, <code>returnedCount</code>,
-        <code>createdCount</code>, <code>releasedCount</code>,
-        <code>reconnectedCount</code>, <code>releasedIdleCount</code> and
-        <code>removeAbandonedCount</code>. (kfujino)
-      </add>
-      <fix>
-        <bug>60194</bug>: If <code>validationQuery</code> is not specified,
-        connection validation is done by calling the <code>isValid()</code>
-        method. (kfujino)
-      </fix>
-      <fix>
-        <bug>60398</bug>: Fix testcase of <code>TestSlowQueryReport</code>.
-        (kfujino)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <fix>
-        Allow customization of service.bat, such as heap memory size, service
-        startup mode and JVM args. Patch provided by isapir via Github.
-        (violetagg)
-      </fix>
-      <fix>
-        <bug>60366</bug>: Change <code>catalina.bat</code> to use directly
-        <code>LOGGING_MANAGER</code> and <code>LOGGING_CONFIG</code> variables
-        in order to configure logging, instead of modifying
-        <code>JAVA_OPTS</code>. Patch provided by Petter Isberg. (violetagg)
-      </fix>
-      <fix>
-        <bug>60383</bug>: JASPIC API is added as a dependency to the
-        <code>org.apache.tomcat:tomcat-catalina</code> maven artifact.
-        (violetagg)
-      </fix>
-      <fix>
-        Update the comments associated with the TLS Connector examples in
-        <code>server.xml</code>. (markt)
-      </fix>
-      <add>
-        New property is added <code>test.verbose</code> in order to control
-        whether the output of the tests is displayed on the console or not.
-        Patch provided by Emmanuel Bourg. (violetagg)
-      </add>
-      <scode>
-        <code>TestOpenSSLCipherConfigurationParser.testSpecification</code>
-        - if there are test failures, provide more detailed information. Patch
-        provided by Emmanuel Bourg. (violetagg)
-      </scode>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.0.M13 (markt)" rtext="2016-11-08">
-  <subsection name="Coyote">
-    <changelog>
-      <fix>
-        Check that threadPriority values used in AbstractProtocol are valid.
-        (fschumacher)
-      </fix>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.0.M12 (markt)" rtext="not released">
-  <subsection name="Catalina">
-    <changelog>
-      <fix>
-        When creating a new Connector via JMX, ensure that both HTTP/1.1 and
-        AJP/1.3 connectors can be created. (markt)
-      </fix>
-      <fix>
-        Reduce multiple error messages when Connector fails to instantiate the
-        associated ProtocolHandler. (markt)
-      </fix>
-      <fix>
-        <bug>60152</bug>: Provide an option for Connector Lifecycle exceptions
-        to be re-thrown rather than logged. This is controlled by the new
-        <code>throwOnFailure</code> attribute of the Connector. (markt)
-      </fix>
-      <fix>
-        Include the Context name in the log message when an item cannot be
-        added to the cache. (markt)
-      </fix>
-      <fix>
-        Exclude JAR files in <code>/WEB-INF/lib</code> from the static resource
-        cache. (markt)
-      </fix>
-      <fix>
-        When calling <code>getResourceAsStream()</code> on a directory, ensure
-        that <code>null</code> is returned. (markt)
-      </fix>
-      <fix>
-        <bug>60161</bug>: Allow creating subcategories of the container logger,
-        and use it for the rewrite valve. (remm)
-      </fix>
-      <fix>
-        Correctly test for control characters when reading the provided shutdown
-        password. (markt)
-      </fix>
-      <fix>
-        <bug>60297</bug>: Simplify connector creation in embedded mode. (remm)
-      </fix>
-      <fix>
-        Refactor creation of containers in embedded mode for more consistency
-        and flexibility. (remm)
-      </fix>
-      <add>
-        Log a warning if running on Java 9 with the ThreadLocal memory leak
-        detection enabled (the default) but without the command line option it
-        now requires. (markt)
-      </add>
-      <fix>
-        When a Connector is configured to use an executor, ensure that the
-        StoreConfig component includes the executor name when writing the
-        Connector configuration. (markt)
-      </fix>
-      <fix>
-        When configuring the JMX remote listener, specify the allowed types for
-        the credentials. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <fix>
-        Correct the HPACK header table size configuration that transposed the
-        client and server table sizes when creating the encoder and decoder.
-        (markt)
-      </fix>
-      <scode>
-        Review HTTP/2 implementation removing unused code, reducing visibility
-        where possible and using final where appropriate. (markt)
-      </scode>
-      <fix>
-        Don't continue to process an HTTP/2 stream if it is reset during header
-        parsing. (markt)
-      </fix>
-      <fix>
-        HTTP/2 uses separate headers for each Cookie. As required by RFC 7540,
-        merge these into a single Cookie header before processing continues.
-        (markt)
-      </fix>
-      <fix>
-        Align the HTTP/2 implementation with the HTTP/1.1 implementation and
-        return a 500 response when an unhandled exception occurs during request
-        processing. (markt)
-      </fix>
-      <fix>
-        Correct the HTTP header parser so that DEL is not treated as a valid
-        token character. (markt)
-      </fix>
-      <add>
-        Add checks around the handling of HTTP/2 pseudo headers. (markt)
-      </add>
-      <add>
-        Add support for trailer headers to the HTTP/2 implementation. (markt)
-      </add>
-      <fix>
-        <bug>60232</bug>: When processing headers for an HTTP/2 stream, ensure
-        that the read buffer is large enough for the header being processed.
-        (markt)
-      </fix>
-      <add>
-        Add configuration options to the HTTP/2 implementation to control the
-        maximum number of headers allowed, the maximum size of headers allowed,
-        the maximum number of trailer headers allowed, the maximum size of
-        trailer headers allowed and the maximum number of cookies allowed.
-        (markt)
-      </add>
-      <fix>
-        Correctly differentiate between sending and receiving a reset frame when
-        tracking the state of an HTTP/2 stream. (markt)
-      </fix>
-      <scode>
-        Remove the undocumented support for using the old Connector attribute
-        names <code>backlog</code>, <code>soLinger</code> and
-        <code>soTimeout</code> that were renamed several major versions ago.
-        (markt)
-      </scode>
-      <fix>
-        <bug>60319</bug>: When using an Executor, disconnect it from the
-        Connector attributes <code>maxThreads</code>,
-        <code>minSpareThreads</code> and <code>threadPriority</code> to enable
-        the configuration settings to be consistently reported. These Connector
-        attributes will be reported as <code>-1</code> when an Executor is in
-        use. The values used by the executor may be set and obtained via the
-        Executor. (markt)
-      </fix>
-      <fix>
-        If an I/O error occurs during async processing on a non-container
-        thread, ensure that the <code>onError()</code> event is triggered.
-        (markt)
-      </fix>
-      <fix>
-        Improve detection of I/O errors during async processing on non-container
-        threads and trigger async error handling when they are detected. (markt)
-      </fix>
-      <add>
-        Add additional checks for valid characters to the HTTP request line
-        parsing so invalid request lines are rejected sooner. (markt)
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="Jasper">
-    <changelog>
-      <update>
-        Update to the Eclipse JDT Compiler 4.6.1. (markt)
-      </update>
-    </changelog>
-  </subsection>
-  <subsection name="Web applications">
-    <changelog>
-      <add>
-        Add HTTP/2 configuration information to the documentation web
-        application. (markt)
-      </add>
-      <fix>
-        Fix default value of <code>validationInterval</code> attribute in
-        jdbc-pool. (kfujino)
-      </fix>
-      <fix>
-        Correct a typo in CGI How-To.
-        Issue reported via comments.apache.org. (violetagg)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Tribes">
-    <changelog>
-      <fix>
-        When the proxy node sends a backup retrieve message, ensure that using
-        the <code>channelSendOptions</code> that has been set rather than the
-        default <code>channelSendOptions</code>. (kfujino)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <add>
-        Add the JASPIC API jar to the Maven Central publication script. (markt)
-      </add>
-      <fix>
-        Remove classes from tomcat-util-scan.jar that are duplicates of those in
-        tomcat-util.jar. (markt)
-      </fix>
-      <add>
-        Update the NSIS Installer used to build the Windows installer to version
-        3.0. (markt)
-      </add>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.0.M11 (markt)" rtext="2016-10-10">
-  <subsection name="Catalina">
-    <changelog>
-      <add>
-        <bug>59961</bug>: Add an option to the <code>StandardJarScanner</code>
-        to control whether or not JAR Manifests are scanned for additional
-        class path entries. (markt)
-      </add>
-      <fix>
-        <bug>60013</bug>: Refactor the previous fix to align the behaviour of
-        the Rewrite Valve with mod_rewrite. As part of this, provide an
-        implementation for the <code>B</code> and <code>NE</code> flags and
-        improve the handling for the <code>QSA</code> flag. Includes multiple
-        test cases by Santhana Preethiand a patch by Tiago Oliveira. (markt)
-      </fix>
-      <fix>
-        <bug>60087</bug>: Refactor the web resources handling to use the Tomcat
-        specific <code>war:file:...</code> URL protocol to refer to WAR files
-        and their contents rather than the standard <code>jar:file:...</code>
-        form since some components of the JRE, such as JAR verification, give
-        unexpected results when the standard form is used. A side-effect of the
-        refactoring is that when using packed WARs, it is now possible to
-        reference a WAR and/or specific JARs within a WAR in the security policy
-        file used when running under a <code>SecurityManager</code>. (markt)
-      </fix>
-      <fix>
-        <bug>60116</bug>: Fix a problem with the rewrite valve that caused back
-        references evaluated in conditions to be forced to lower case when using
-        the <code>NC</code> flag. (markt)
-      </fix>
-      <fix>
-        Ensure <code>Digester.useContextClassLoader</code> is considered in
-        case the class loader is used. (violetagg)
-      </fix>
-      <fix>
-        <bug>60117</bug>: Ensure that the name of <code>LogLevel</code> is
-        localized when using <code>OneLineFormatter</code>. Patch provided by
-        Tatsuya Bessho. (kfujino)
-      </fix>
-      <fix>
-        <bug>60138</bug>: Fix the <code>SSLHostConfig</code> so that the
-        <code>protocols</code> attribute is limited to the protocols supported
-        by the current JSSE implementation rather than the default protocols
-        used by the implementation. (markt)
-      </fix>
-      <fix>
-        <bug>60146</bug>: Improve performance for resource retrieval by making
-        calls to WebResource.getInputStream() trigger caching if the resource is
-        small enough. Patch provided by mohitchugh. (markt)
-      </fix>
-      <add>
-        <bug>60151</bug>: Improve the exception error messages when a
-        <code>ResourceLink</code> fails to specify the type, specifies an
-        unknown type or specifies the wrong type. (markt)
-      </add>
-      <fix>
-        <bug>60167</bug>: Ignore empty lines in <code>/etc/passwd</code> files
-        when using the <code>PasswdUserDatabase</code>. (markt)
-      </fix>
-      <fix>
-        <bug>60170</bug>: Exclude the compressed test file
-        <code>index.html.br</code> from RAT analysis. Patch provided by Gavin
-        McDonald. (markt)
-      </fix>
-      <fix>
-        When starting web resources, ensure that class resources are only
-        started once. (markt)
-      </fix>
-      <fix>
-        Improve the access checks for linked global resources to handle the case
-        where the current class loader is a child of the web application class
-        loader. (markt)
-      </fix>
-      <fix>
-        <bug>60196</bug>: Ensure that the <code>isMandatory</code> flag is
-        correctly set when using JASPIC authentication. (markt)
-      </fix>
-      <fix>
-        <bug>60199</bug>: Log a warning if deserialization issues prevent a
-        session attribute from being loaded. (markt)
-      </fix>
-      <fix>
-        <bug>60208</bug>: When using RFC6265 compliant cookies, the
-        <code>/</code> character should not be allowed in a cookie name since
-        the RFC6265 will drop such cookies as invalid. (markt)
-      </fix>
-      <add>
-        Introduce new methods <code>read(ByteBuffer)</code>/
-        <code>write(ByteBuffer)</code> in
-        <code>o.a.catalina.connector.CoyoteInputStream</code>/
-        <code>o.a.catalina.connector.CoyoteOutputStream</code>. (violetagg)
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <add>
-        Refactor the code that implements the requirement that a call to
-        <code>complete()</code> or <code>dispatch()</code> made from a
-        non-container thread before the container initiated thread that called
-        <code>startAsync()</code> completes must be delayed until the container
-        initiated thread has completed. Rather than implementing this by
-        blocking the non-container thread, extend the internal state machine to
-        track this. This removes the possibility that blocking the non-container
-        thread could trigger a deadlock. (markt)
-      </add>
-      <fix>
-        Fail earlier if the client closes the connection during SNI processing.
-        (markt)
-      </fix>
-      <fix>
-        <bug>60123</bug>: Avoid potential threading issues that could cause
-        excessively large values to be returned for the processing time of
-        a current request. (markt)
-      </fix>
-      <fix>
-        <bug>60174</bug>: Log instances of <code>HeadersTooLargeException</code>
-        during request processing. (markt)
-      </fix>
-      <fix>
-        <bug>60173</bug>: Allow up to 64kB HTTP/2 header table size limit. (remm)
-      </fix>
-      <fix>
-        Java 9 compatibility of direct ByteBuffer cleaner. (remm)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Jasper">
-    <changelog>
-      <fix>
-        <bug>60101</bug>: Remove preloading of the class that was deleted.
-        (violetagg)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Web applications">
-    <changelog>
-      <add>
-        Expand the documentation for the nested elements within a
-        <code>Resources</code> element to clarify the behaviour of different
-        configuration options with respect to the order in which resources are
-        searched. (markt)
-      </add>
-      <add>
-        Add an example of using the <code>classesToInitialize</code> attribute
-        of the <code>JreMemoryLeakPreventionListener</code> to the documentation
-        web application. Based on a patch by Cris Berneburg. (markt)
-      </add>
-      <fix>
-        <bug>60192</bug>: Correct a typo in the status output of the Manager
-        application. Patch provided by  Radhakrishna Pemmasani. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="jdbc-pool">
-    <changelog>
-      <fix>
-        Notify jmx when returning the connection that has been marked suspect.
-        (kfujino)
-      </fix>
-      <fix>
-        Ensure that the <code>POOL_EMPTY</code> notification has been added to
-        the jmx notification types. (kfujino)
-      </fix>
-      <fix>
-        <bug>60099</bug>: Ensure that use all method arguments as a cache key
-        when using <code>StatementCache</code>. (kfujino)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <fix>
-        Update the download location for Objenesis. (violetagg)
-      </fix>
-      <fix>
-        <bug>60164</bug>: Replace <code>log4j-core*.jar</code> with
-        <code>log4j-web*.jar</code> since it is <code>log4j-web*.jar</code> that
-        contains the <code>ServletContainerInitializer</code>. (markt)
-      </fix>
-      <add>
-        Add documentation to the bin/catalina.bat script to remind users that
-        environment variables don't affect the configuration of Tomcat when
-        run as a Windows Service. Based upon a documentation patch by
-        James H.H. Lampert. (schultz)
-      </add>
-      <update>
-        Update the packaged version of the Tomcat Native Library to 1.2.10 to
-        pick up the latest Windows binaries built with OpenSSL 1.0.2j. (markt)
-      </update>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.0.M10 (markt)" rtext="2016-09-05">
-  <subsection name="Catalina">
-    <changelog>
-      <fix>
-        <bug>59813</bug>: Ensure that circular relations of the Class-Path
-        attribute from JAR manifests will be processed correctly. (violetagg)
-      </fix>
-      <fix>
-        Ensure that reading the <code>singleThreadModel</code> attribute of a
-        <code>StandardWrapper</code> via JMX does not trigger initialisation of
-        the associated servlet. With some frameworks this can trigger an
-        unexpected initialisation thread and if initialisation is not thread-safe
-        the initialisation can then fail. (markt)
-      </fix>
-      <fix>
-        Compatibility with rewrite from httpd for non existing headers.
-        (jfclere)
-      </fix>
-      <fix>
-        By default, treat paths used to obtain a request dispatcher as encoded.
-        This behaviour can be changed per web application via the
-        <code>dispatchersUseEncodedPaths</code> attribute of the Context.
-        (markt)
-      </fix>
-      <add>
-        Provide a mechanism that enables the container to check if a component
-        (typically a web application) has been granted a given permission when
-        running under a SecurityManager without the current execution stack
-        having to have passed through the component. Use this new mechanism to
-        extend SecurityManager protection to the system property replacement
-        feature of the digester. (markt)
-      </add>
-      <add>
-        When retrieving an object via a <code>ResourceLink</code>, ensure that
-        the object obtained is of the expected type. (markt)
-      </add>
-      <fix>
-        <bug>59823</bug>: Ensure that JASPIC configuration is taken into account
-        when calling <code>HttpServletRequest.authenticate()</code>. (markt)
-      </fix>
-      <fix>
-        <bug>59824</bug>: Mark the <code>RewriteValve</code> as supporting async
-        processing by default. (markt)
-      </fix>
-      <fix>
-        <bug>59839</bug>: Apply <code>roleSearchAsUser</code> to all nested
-        searches in JNDIRealm. (fschumacher)
-      </fix>
-      <fix>
-        <bug>59859</bug>: Fix resource leak in WebDAV servlet. Based on patch by
-        Coty Sutherland. (fschumacher)
-      </fix>
-      <fix>
-        <bug>59862</bug>: Allow nested jar files scanning to be filtered with
-        the system property
-        <code>tomcat.util.scan.StandardJarScanFilter.jarsToSkip</code>. Patch
-        is provided by Terence Bandoian. (violetagg)
-      </fix>
-      <fix>
-        <bug>59866</bug>: When scanning <code>WEB-INF/classes</code> for
-        annotations, don't scan the contents of
-        <code>WEB-INF/classes/META-INF</code> (if present) since classes will
-        never be loaded from that location. (markt)
-      </fix>
-      <fix>
-        <bug>59888</bug>: Correctly handle tabs and spaces in quoted version one
-        cookies when using the <code>Rfc6265CookieProcessor</code>. (markt)
-      </fix>
-      <fix>
-        A number of the JRE memory leaks addressed by the
-        <code>JreMemoryLeakPreventionListener</code> have been fixed in Java 9
-        so the associated protection is now disabled when running on Java 9
-        onwards. (markt)
-      </fix>
-      <fix>
-        <bug>59912</bug>: Fix an edge case in input stream handling where an
-        <code>IOException</code> could be thrown when reading a POST body.
-        (markt)
-      </fix>
-      <fix>
-        <bug>59913</bug>: Correct a regression introduced with the support for
-        the Servlet 4 <code>HttpServletRequest.getMapping()</code> API that
-        caused the attributes for forwarded requests to be lost if requested
-        from within a subsequent include. (markt)
-      </fix>
-      <fix>
-        <bug>59966</bug>: Do not start the web application if the error page
-        configuration in web.xml is invalid. (markt)
-      </fix>
-      <fix>
-        Switch the CGI servlet to the standard logging mechanism and remove
-        support for the debug attribute. (markt)
-      </fix>
-      <fix>
-        <bug>60012</bug>: Improvements in the log messages. Based on
-        suggestions by Nemo Chen. (violetagg)
-      </fix>
-      <fix>
-        Changes to the <code>allowLinking</code> attribute of a
-        <code>StandardRoot</code> instance now invalidate the cache if caching
-        is enabled. (markt)
-      </fix>
-      <add>
-        Add a new initialisation parameter, <code>envHttpHeaders</code>, to
-        the CGI Servlet to mitigate <a href="https://httpoxy.org">httpoxy</a>
-        (<a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-5388"
-        >CVE-2016-5388</a>) by default and to provide a mechanism that can be
-        used to mitigate any future, similar issues. (markt)
-      </add>
-      <add>
-        When adding and removing <code>ResourceLink</code>s dynamically, ensure
-        that the global resource is only visible via the
-        <code>ResourceLinkFactory</code> when it is meant to be. (markt)
-      </add>
-      <fix>
-        <bug>60008</bug>: When processing CORs requests, treat any origin with a
-        URI scheme of <code>file</code> as a valid origin. (markt)
-      </fix>
-      <fix>
-        Improve handling of exceptions during a Lifecycle events triggered by a
-        state transition. The exception is now caught and the component is now
-        placed into the <code>FAILED</code> state. (markt)
-      </fix>
-      <fix>
-        <bug>60013</bug>: Fix encoding issues when using the RewriteValve with
-        UTF-8 query strings or UTF-8 redirect URLs. (markt)
-      </fix>
-      <fix>
-        <bug>60022</bug>: Improve handling when a WAR file and/or the associated
-        exploded directory are symlinked into the <code>appBase</code>. (markt)
-      </fix>
-      <fix>
-        Fix a file descriptor leak when reading the global web.xml. (markt)
-      </fix>
-      <fix>
-        Consistently decode URL patterns provided via web.xml using the encoding
-        of the web.xml file where specified or UTF-8 where no explicit encoding
-        is specified. (markt)
-      </fix>
-      <fix>
-        Make timing attacks against the Realm implementations harder. (schultz)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <fix>
-        Correct a regression in refactoring to enable injection of custom
-        keystores that broke the automatic conversion of OpenSSL style PEM
-        key and certificate files for use with JSSE TLS connectors. (markt)
-      </fix>
-      <fix>
-        <bug>59910</bug>: Don't hardcode key alias value to "tomcat" for JSSE.
-        When using a keystore, OpenSSL will still default to it. (remm)
-      </fix>
-      <fix>
-        <bug>59904</bug>: Add a limit (default 200) for the number of cookies
-        allowed per request. Based on a patch by gehui. (markt)
-      </fix>
-      <fix>
-        <bug>59925</bug>: Correct regression in r1628368 and ensure that HTTP
-        separators are handled as configured in the
-        <code>LegacyCookieProcessor</code>. Patch provided by Kyohei Nakamura.
-        (markt)
-      </fix>
-      <fix>
-        <bug>59950</bug>: Correct log message when reporting that the current
-        number of HTTP/2 streams for a connection could not be pruned to below
-        the limit. (markt)
-      </fix>
-      <fix>
-        Ensure that <code>Semaphore.release</code> is called in all cases. Even
-        when there is an exception. (violetagg)
-      </fix>
-      <fix>
-        <bug>60030</bug>: Correct a potential infinite loop in the SNI parsing
-        code triggered by failing to handle an end of stream condition. (markt)
-      </fix>
-      <fix>
-        Refactor the JSSE client certificate validation so that the
-        effectiveness of the <code>certificateVerificationDepth</code>
-        configuration attribute does not depend on the presence of a certificate
-        revocation list. (markt)
-      </fix>
-      <fix>
-        Small logging optimization in the <code>Rfc6265CookieProcessor</code>.
-        Patch provided by Svetlin Zarev. (markt)
-      </fix>
-      <fix>
-        OpenSSL now disables 3DES by default so reflect this when using OpenSSL
-        syntax to select ciphers. (markt)
-      </fix>
-      <fix>
-        Use the proper ERROR socket status code for async errors with NIO2.
-        (remm)
-      </fix>
-      <fix>
-        <bug>60035</bug>: Fix a potential connection leak if the client drops a
-        TLS connection before the handshake completes. (markt)
-      </fix>
-      <add>
-        Log a warning at start up if a JSSE TLS connector is configured with
-        a trusted certificate that is either not yet valid or has expired.
-        (markt)
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="Jasper">
-    <changelog>
-      <fix>
-        When writing out a full web.xml file with JspC ensure that the encoding
-        used in the XML prolog matches the encoding used to write the contents
-        of the file. (markt)
-      </fix>
-      <fix>
-        Improve the error handling for custom tags to ensure that the tag is
-        returned to the pool or released and destroyed once used. (markt)
-      </fix>
-      <fix>
-        <bug>60032</bug>: Fix handling of method calls that use varargs within
-        EL value expressions. (markt)
-      </fix>
-      <fix>
-        Ignore <code>engineOptionsClass</code> and <code>scratchdir</code> when
-        running under a security manager. (markt)
-      </fix>
-      <fix>
-        Fixed StringIndexOutOfBoundsException. Based on a patch provided by
-        wuwen via Github. (violetagg)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="WebSocket">
-    <changelog>
-      <fix>
-        <bug>59908</bug>: Ensure that a reason phrase is included in the close
-        message if a session is closed due to a timeout. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Web applications">
-    <changelog>
-      <fix>
-        <bug>59867</bug>: Correct the documentation provided by Manager's
-        403.jsp. (violetagg)
-      </fix>
-      <fix>
-        <bug>59868</bug>: Clarify the documentation for the Manager web
-        application to make clearer that the host name and IP address in the
-        server section are the primary host name and IP address. (markt)
-      </fix>
-      <fix>
-        <bug>59940</bug>: Correct the name of the
-        <code>truststorePassword</code> attribute of the
-        <code>SSLHostConfig</code> element in the configuration documentation.
-        (markt)
-      </fix>
-      <fix>
-        MBeans Descriptors How-To is moved to
-        <code>mbeans-descriptors-howto.html</code>. Patch provided by Radoslav
-        Husar. (violetagg)
-      </fix>
-      <fix>
-        Update NIO Connector configuration documentation with an information
-        about <code>socket.directSslBuffer</code>. (violetagg)
-      </fix>
-      <fix>
-        <bug>60034</bug>: Correct a typo in the Manager How-To page of the
-        documentation web application. (markt)
-      </fix>
-      <fix>
-        Correct the name of the CRL location configuration attributes in the
-        documentation web application. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="jdbc-pool">
-    <changelog>
-      <fix>
-        In order to avoid the unintended skip of <code>PoolCleaner</code>,
-        remove the check code of the execution interval in the task that has
-        been scheduled. (kfujino)
-      </fix>
-      <fix>
-        <bug>59850</bug>: Ensure that the <code>ResultSet</code> is closed when
-        enabling the <code>StatementCache</code> interceptor. (kfujino)
-      </fix>
-      <fix>
-        <bug>59923</bug>: Reduce the default value of
-        <code>validationInterval</code> in order to avoid the potential issue
-        that continues to return an invalid connection after database restart.
-        (kfujino)
-      </fix>
-      <fix>
-        Ensure that the <code>ResultSet</code> is returned as Proxy object when
-        enabling the <code>StatementDecoratorInterceptor</code>. (kfujino)
-      </fix>
-      <fix>
-        <bug>60043</bug>: Ensure that the <code>suspectTimeout</code> works
-        without removing connection when the <code>removeAbandoned</code> is
-        disabled. (kfujino)
-      </fix>
-      <fix>
-        Add log message of when returning the connection that has been marked
-        suspect. (kfujino)
-      </fix>
-      <fix>
-        Correct Javadoc for <code>ConnectionPool.suspect()</code>. Based on a
-        patch by Yahya Cahyadi. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <add>
-        <bug>59871</bug>: Add a property (<code>timeFormat</code>) to
-        JULI&apos;s <code>OneLineFormatter</code> to enable the format of the
-        time stamp used in log messages to be configured. (markt)
-      </add>
-      <fix>
-        <bug>59899</bug>: Update Tomcat&apos;s copy of the Java Persistence
-        annotations to include the changes made in 2.1 / JavaEE 7. (markt)
-      </fix>
-      <fix>
-        Fixed typos in mbeans-descriptors.xml files. (violetagg)
-      </fix>
-      <update>
-        Update the internal fork of Commons BCEL to r1757132 to align with the
-        BCEL 6 release. (markt)
-      </update>
-      <update>
-        Update the internal fork of Commons DBCP 2 to r1757164 to pick up a
-        couple of bug fixes. (markt)
-      </update>
-      <update>
-        Update the internal fork of Commons Codec to r1757174. Code formatting
-        changes only. (markt)
-      </update>
-      <update>
-        Update the internal fork of Commons FileUpload to afdedc9. This pulls in
-        a fix to improve the performance with large multipart boundaries.
-        (markt)
-      </update>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.0.M9 (markt)" rtext="2016-07-12">
-  <subsection name="Catalina">
-    <changelog>
-      <fix>
-        <bug>18500</bug>: Add limited support for wildcard host names and host
-        aliases. Names of the form <code>*.domainname</code> are now permitted.
-        Note that an exact host name match takes precedence over a wild card
-        host name match. (markt)
-      </fix>
-      <fix>
-        <bug>57705</bug>: Add debug logging for requests denied by the remote
-        host and remote address valves and filters. Based on a patch by Graham
-        Leggett. (markt)
-      </fix>
-      <fix>
-        Correct a regression in the fix for <bug>58588</bug> that removed the
-        entire <code>org.apache.juli</code> package from the embedded JARs
-        rendering them unusable. (markt)
-      </fix>
-      <add>
-        <bug>59399</bug>: Add a new option to the Realm implementations that
-        ship with Tomcat that allows the HTTP status code used for HTTP -> HTTPS
-        redirects to be controlled per Realm. (markt)
-      </add>
-      <fix>
-        <bug>59708</bug>: Modify the LockOutRealm logic. Valid authentication
-        attempts during the lock out period will no longer reset the lock out
-        timer to zero. (markt)
-      </fix>
-      <update>
-        Change the default of the
-        <code>sessionCookiePathUsesTrailingSlash</code> attribute of the
-        <code>Context</code> element to <code>false</code> since the problems
-        caused when a Servlet is mapped to <code>/*</code> are more significant
-        than the security risk of not enabling this option by default. (markt)
-      </update>
-      <fix>
-        Follow-up to <bug>59655</bug>. Improve the documentation for configuring
-        permitted cookie names. Patch provided by Kyohei Nakamura. (markt)
-      </fix>
-      <fix>
-        Do not attempt to start web resources during a web application's
-        initialisation phase since the web application is not fully configured
-        at that point and the web resources may not be correctly configured.
-        (markt)
-      </fix>
-      <fix>
-        Improve error handling around user code prior to calling
-        <code>InstanceManager.destroy()</code> to ensure that the method is
-        executed. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <fix>
-        Fix a cause of multiple attempts to close the same socket. (markt)
-      </fix>
-      <scode>
-        Refactor the certificate keystore and trust store generation to make it
-        easier for embedded users to inject their own key stores. (markt)
-      </scode>
-      <update>
-        Add a <code>maxConcurrentStreamExecution</code> on the HTTP/2
-        protocol handler to allow restricting the amount of concurrent stream
-        that are being executed in a single connection. The default is to
-        not limit it. (remm)
-      </update>
-      <add>
-        <bug>59233</bug>: Add the ability to add TLS virtual hosts dynamically.
-        (markt)
-      </add>
-      <fix>
-        Correct a problem with <code>ServletRequest.getServerPort()</code> for
-        secure HTTP/2 connections that meant an incorrect value was returned when
-        using the default port. (markt)
-      </fix>
-      <fix>
-        Improve error handling around user code prior to calling
-        <code>InstanceManager.destroy()</code> to ensure that the method is
-        executed. (markt)
-      </fix>
-      <fix>
-        Document the default for the HTTP/2 configuration parameter
-        <code>maxConcurrentStreamExecution</code> as 20. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Jasper">
-    <changelog>
-      <fix>
-        Improve error handling around user code prior to calling
-        <code>InstanceManager.destroy()</code> to ensure that the method is
-        executed. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="WebSocket">
-    <changelog>
-      <scode>
-        Now the WebSocket implementation is not built directly on top of the
-        Servlet API and can use Tomcat internals, there is no need for the
-        dedicated WebSocket Executor. It has been replaced by the use of the
-        Connector/Endpoint provided Executor. (markt)
-      </scode>
-      <fix>
-        Improve error handling around user code prior to calling
-        <code>InstanceManager.destroy()</code> to ensure that the method is
-        executed. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Web Applications">
-    <changelog>
-      <fix>
-        Do not log an additional case of <code>IOException</code>s in the
-        error handler for the Drawboard WebSocket example when the root cause is
-        the client disconnecting since the logs add no value. (markt)
-      </fix>
-      <fix>
-        <bug>59642</bug>: Mention the <code>localDataSource</code> in the
-        <code>DataSourceRealm</code> section of the Realm How-To. (markt)
-      </fix>
-      <fix>
-        <bug>59672</bug>: Update the security considerations page of the
-        documentation web application to take account of the fact that the
-        Manager and HostManager applications now have a
-        <code>RemoteAddrValve</code> configured by default. (markt)
-      </fix>
-      <fix>
-        Follow-up to the fix for <bug>59399</bug>. Ensure that the new attribute
-        <code>transportGuaranteeRedirectStatus</code> is documented for all
-        <strong>Realm</strong>s. Also document the <code>NullRealm</code> and
-        when it is automatically created for an <strong>Engine</strong>. (markt)
-      </fix>
-      <fix>
-        Fix the description of <code>maxAge</code> attribute in jdbc-pool doc.
-        This attribute works both when a connection is returned and when a
-        connection is borrowed. (kfujino)
-      </fix>
-      <fix>
-        <bug>59774</bug>: Correct the <code>prefix</code> values in the
-        documented examples for configuring the <code>AccessLogValve</code>.
-        Patch provided by Mike Noordermeer. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Tribes">
-    <changelog>
-      <add>
-        Add log message when the ping has timed-out. (kfujino)
-      </add>
-      <fix>
-        If the ping message has been received at the
-        <code>AbstractReplicatedMap#leftOver</code> method, ensure that notify
-        the member is alive than ignore it. (kfujino)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="jdbc-pool">
-    <changelog>
-      <fix>
-        Fix the duplicated connection release when connection verification
-        failed. (kfujino)
-      </fix>
-      <fix>
-        Ensure that do not remove the abandoned connection that has been already
-        released. (kfujino)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <fix>
-        Remove JULI plus log4j extras and embedded artifacts from Maven release
-        script. (markt)
-      </fix>
-      <add>
-        Use the mirror network rather than the ASF master site to download the
-        current ASF dependencies. (markt)
-      </add>
-      <update>
-        Update the packaged version of the Tomcat Native Library to 1.2.8 to
-        pick up the latest fixes and make 1.2.8 the minimum recommended version.
-        (markt)
-      </update>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.0.M8 (markt)" rtext="2016-06-13">
-  <subsection name="Coyote">
-    <changelog>
-      <fix>
-        Remove accidentally committed debug code. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.0.M7 (markt)" rtext="not released">
-  <subsection name="Catalina">
-    <changelog>
-      <fix>
-        RMI Target related memory leaks are avoidable which makes them an
-        application bug that needs to be fixed rather than a JRE bug to work
-        around. Therefore, start logging RMI Target related memory leaks on web
-        application stop. Add an option that controls if the check for these
-        leaks is made. Log a warning if running on Java 9 with this check
-        enabled but without the command line option it requires. (markt)
-      </fix>
-      <fix>
-        Ensure NPE will not be thrown during deployment when scanning jar files
-        without MANIFEST.MF file. (violetagg)
-      </fix>
-      <scode>
-        Remove the <code>clearReferencesStatic</code> option from
-        <code>StandardContext</code>. It was known to cause problems with some
-        libraries (such as log4j) and was only linked to suspected memory leaks
-        rather than known memory leaks. It had been disabled by default with no
-        increase in the reports of memory leaks for some time. (markt)
-      </scode>
-      <fix>
-        <bug>59604</bug>: Correct the assumption made in the URL decoding that
-        the default platform encoding is always compatible with ISO-8859-1. This
-        assumption is not always valid, e.g. on z/OS. (markt)
-      </fix>
-      <fix>
-        <bug>59608</bug>: Skip over any invalid <code>Class-Path</code> attribute
-        from JAR manifests. Log errors at debug level due to many bad libraries.
-        (remm)
-      </fix>
-      <fix>
-        Fix error message when failed to register MBean. (kfujino)
-      </fix>
-      <fix>
-        <bug>59655</bug>: Configure the cookie name validation to use RFC6265
-        rules by default to align it with the default cookie parser. Document
-        the impact system properties have on cookie name validation. (mark)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <fix>
-        Ensure that requests with HTTP method names that are not tokens (as
-        required by RFC 7231) are rejected with a 400 response. (markt)
-      </fix>
-      <fix>
-        When an asynchronous request is processed by the AJP connector, ensure
-        that request processing has fully completed before starting the next
-        request. (markt)
-      </fix>
-      <fix>
-        Improve handling of HTTP/2 stream resets. (markt)
-      </fix>
-      <add>
-        <bug>58750</bug>: The HTTP Server header is no longer set by default. A
-        Server header may be configured by setting the <code>server</code>
-        attribute on the <code>Connector</code>. A new <code>Connector</code>
-        attribute, <code>serverRemoveAppProvidedValues</code> may be used to
-        remove any Server header set by a web application. (markt)
-      </add>
-      <fix>
-        <bug>59564</bug>: Correct offset when reading into HTTP/2 input buffer
-        that could cause problems reading request bodies. (violetagg/markt)
-      </fix>
-      <fix>
-        Modify the handling of read/write timeouts so that the appropriate error
-        handling (<code>ReadListener.onError()</code>,
-        <code>WriteListener.onError()</code> or
-        <code>AsyncListener.onError()</code>) is called. (markt)
-      </fix>
-      <fix>
-       If an async dispatch results in the completion of request processing,
-       ensure that any remaining request body is swallowed before starting the
-       processing of the next request else the remaining body may be read as the
-       start of the next request leading to a 400 response. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Jasper">
-    <changelog>
-      <fix>
-        <bug>59567</bug>: Fix NPE scanning webapps for TLDs when an exploded
-        JAR has an empty WEB-INF/classes/META-INF folder. (remm)
-      </fix>
-      <fix>
-        Fix a memory leak in the expression language implementation that caused
-        the class loader of the first web application to use expressions to be
-        pinned in memory. (markt)
-      </fix>
-      <fix>
-        <bug>59654</bug>: Improve error message when attempting to use a TLD
-        file from an invalid location. Patch provided by Huxing Zhang. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="WebSocket">
-    <changelog>
-      <fix>
-        <bug>59659</bug>: Fix possible memory leak in WebSocket handling of
-        unexpected client disconnects. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Web applications">
-    <changelog>
-      <fix>
-        <bug>58891</bug>: Update the SSL How-To. Based on a suggestion by
-        Alexander Kjäll. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Extras">
-    <changelog>
-      <scode>
-        <bug>58588</bug>: Remove the JULI extras package from the distribution.
-        It was only useful for switching Tomcat's internal logging to log4j
-        1.2.x and that version of log4j is no longer supported. No additional
-        Tomcat code is required if switching Tomcat's internal logging to log
-        via log4j 2.x. (markt)
-      </scode>
-    </changelog>
-  </subsection>
-  <subsection name="jdbc-pool">
-    <changelog>
-      <fix>
-        Fix a memory leak with the pool cleaner thread that retained a reference
-        to the web application class loader for the first web application to use
-        a connection pool. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <update>
-        Update the internal fork of Commons DBCP 2 to r1743696 (2.1.1 plus
-        additional fixes). (markt)
-      </update>
-      <update>
-        Update the internal fork of Commons Pool 2 to r1743697 (2.4.2 plus
-        additional fixes). (markt)
-      </update>
-      <update>
-        Update the internal fork of Commons File Upload to r1743698 (1.3.1 plus
-        additional fixes). (markt)
-      </update>
-      <scode>
-        Use UTF-8 with a standard prolog for all XML files. (markt)
-      </scode>
-      <fix>
-        <bug>58626</bug>: Add support for a new environment variable
-        (<code>USE_NOHUP</code>) that causes <code>nohup</code> to be used when
-        starting Tomcat. It is disabled by default except on HP-UX where it is
-        enabled by default since it is required when starting Tomcat at boot on
-        HP-UX. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.0.M6 (markt)" rtext="2016-05-16">
-  <subsection name="Catalina">
-    <changelog>
-      <fix>
-        Ensure that annotated web components packed in web fragments will be
-        processed when <code>unpackWARs</code> is enabled. (violetagg)
-      </fix>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.0.M5 (markt)" rtext="not released">
-  <subsection name="Catalina">
-    <changelog>
-      <fix>
-        <bug>48922</bug>: Apply a very small performance improvement to the
-        date formatting in Tomcat's internal request object. Based on a patch
-        provided by Ondrej Medek. (markt)
-      </fix>
-      <fix>
-        <bug>59206</bug>: Ensure NPE will not be thrown by
-        <code>o.a.tomcat.util.file.ConfigFileLoader</code> when
-        <code>catalina.base</code> is not specified. (violetagg)
-      </fix>
-      <fix>
-        <bug>59217</bug>: Remove duplication in the recycling of the path in
-        <code>o.a.tomcat.util.http.ServerCookie</code>. Patch is provided by
-        Kyohei Nakamura. (violetagg)
-      </fix>
-      <fix>
-        Fixed possible NPE in
-        <code>o.a.catalina.loader.WebappClassLoaderBase.getResourceAsStream</code>
-        (violetagg)
-      </fix>
-      <fix>
-        <bug>59213</bug>: Async dispatches should be based off a wrapped
-        request. (remm)
-      </fix>
-      <fix>
-        Ensure that <code>javax.servlet.ServletRequest</code> and
-        <code>javax.servlet.ServletResponse</code> provided during
-        <code>javax.servlet.AsyncListener</code> registration are made
-        available via <code>javax.servlet.AsyncEvent.getSuppliedRequest</code>
-        and <code>javax.servlet.AsyncEvent.getSuppliedResponse</code>
-        (violetagg)
-      </fix>
-      <fix>
-        <bug>59219</bug>: Ensure <code>AsyncListener.onError()</code> is called
-        if an <code>Exception</code> is thrown during async processing. (markt)
-      </fix>
-      <fix>
-        <bug>59220</bug>: Ensure that <code>AsyncListener.onComplete()</code> is
-        called if the async request times out and the response is already
-        committed. (markt)
-      </fix>
-      <fix>
-        <bug>59226</bug>: Process the <code>Class-Path</code> attribute from
-        JAR manifests for JARs on the class path excluding JARs packaged in
-        <code>WEB-INF/lib</code>. (markt)
-      </fix>
-      <fix>
-        <bug>59255</bug>: Fix possible NPE in mapper. (kkolinko/remm)
-      </fix>
-      <fix>
-        <bug>59256</bug>: <code>slf4j-taglib*.jar</code> should not be excluded
-        from the standard JAR scanning by default. (violetagg)
-      </fix>
-      <fix>
-        Clarify the log message that specifying both urlPatterns and value
-        attributes in @WebServlet and @WebFilter annotations is not allowed.
-        (violetagg)
-      </fix>
-      <fix>
-        Ensure the exceptions caused by Valves will be available in the log
-        files so that they can be evaluated when
-        <code>o.a.catalina.valves.ErrorReportValve.showReport</code> is
-        disabled. Patch is provided by Svetlin Zarev. (violetagg)
-      </fix>
-      <fix>
-        Remove unused <code>distributable</code> attribute that is defined as
-        <code>TransientAttribute</code> of <code>Manager</code> in StoreConfig.
-        (kfujino)
-      </fix>
-      <fix>
-        Fix handling of Cluster Receiver in StoreConfig. The <code>bind</code>
-        and <code>host</code> attributes define as
-        <code>TransientAttribute</code>. (kfujino)
-      </fix>
-      <fix>
-        <bug>59261</bug>: <code>ServletRequest.getAsyncContext()</code> now
-        throws an <code>IllegalStateException</code> as required by the Servlet
-        specification if the request is not in asynchronous mode when called.
-        (markt)
-      </fix>
-      <fix>
-        <bug>59269</bug>: Correct the implementation of
-        <code>PersistentManagerBase</code> so that <code>minIdleSwap</code>
-        functions as designed and sessions are swapped out to keep the active
-        session count below <code>maxActiveSessions</code>. (markt)
-      </fix>
-      <update>
-        Update the implementation of the proposed Servlet 4.0 API to provide
-        mapping type information for the current request to reflect discussions
-        within the EG. (markt)
-      </update>
-      <fix>
-        Correctly configure the base path for a resources directory provided by
-        an expanded JAR file. Patch provided by hengyunabc. (markt)
-      </fix>
-      <add>
-        When multiple compressed formats are available and the client does not
-        express a preference, use the server order to determine the preferred
-        format. Based on a patch by gmokki. (markt)
-      </add>
-      <fix>
-        <bug>59284</bug>: Allow the Tomcat provided JASPIC
-        <code>SimpleServerAuthConfig</code> to pick up module configuration
-        properties from either the property set passed to its constructor or
-        from the properties passed in the call to <code>getAuthContext</code>.
-        Based on a patch by Thomas Maslen. (markt)
-      </fix>
-      <fix>
-        <bug>59310</bug>: Do not add a <code>Content-Length: 0</code> header for
-        custom responses to <code>HEAD</code> requests that do not set a
-        <code>Content-Length</code> value. (markt)
-      </fix>
-      <fix>
-        When normalizing paths, improve the handling when paths end with
-        <code>/.</code> or <code>/..</code> and ensure that input and output are
-        consistent with respect to whether or not they end with <code>/</code>.
-        (markt)
-      </fix>
-      <fix>
-        <bug>59317</bug>: Ensure that
-        <code>HttpServletRequest.getRequestURI()</code> returns an encoded URI
-        rather than a decoded URI after a dispatch. (markt)
-      </fix>
-      <fix>
-        Use the correct URL for the fragment when reporting errors processing
-        a <code>web-fragment.xml</code> file from a JAR located in an unpacked
-        WAR. (markt)
-      </fix>
-      <fix>
-        Ensure that <code>JarScanner</code> only uses the explicit call-back to
-        process <code>WEB-INF/classes</code> and only when configured to treat
-        the contents of <code>WEB-INF/classes</code> as a possible exploded JAR.
-        (markt)
-      </fix>
-      <scode>
-        Remove the <code>java2DDisposerProtection</code> option from the
-        <code>JreMemoryLeakPreventionListener</code>. The leak is fixed in Java
-        7 onwards and Tomcat 9 requires Java 8 so the option is unnecessary.
-        (markt)
-      </scode>
-      <scode>
-        Remove the <code>securityPolicyProtection</code> option from the
-        <code>JreMemoryLeakPreventionListener</code>. The leak is fixed in Java
-        8 onwards and Tomcat 9 requires Java 8 so the option is unnecessary.
-        (markt)
-      </scode>
-      <scode>
-        Remove the <code>securityLoginConfigurationProtection</code> option from
-        the <code>JreMemoryLeakPreventionListener</code>. The leak is fixed in
-        Java 8 onwards and Tomcat 9 requires Java 8 so the option is
-        unnecessary. (markt)
-      </scode>
-      <fix>
-        Ensure that the value for the header <code>X-Frame-Options</code> is
-        constructed correctly according to the specification when
-        <code>ALLOW-FROM</code> option is used. (violetagg)
-      </fix>
-      <fix>
-        Fix an <code>IllegalArgumentException</code> if the first use of an
-        internal <code>Response</code> object requires JASPIC authentication.
-        (markt)
-      </fix>
-      <fix>
-        Do not trigger unnecessary session ID changes when using JASPIC and the
-        user is authenticated using cached credentials. (markt)
-      </fix>
-      <fix>
-        <bug>59437</bug>: Ensure that the JASPIC <code>CallbackHandler</code> is
-        thread-safe. (markt)
-      </fix>
-      <fix>
-        <bug>59449</bug>: In <code>ContainerBase</code>, ensure that the process
-        to remove a child container is the reverse of the process to add one.
-        Patch provided by Huxing Zhang. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <fix>
-        Improves OpenSSL engine robustness when SSL allocation fails for
-        some reason. (remm)
-      </fix>
-      <fix>
-        OpenSSL engine code cleanups. (remm)
-      </fix>
-      <fix>
-        Align cipher configuration parsing with current OpenSSL master. (markt)
-      </fix>
-      <update>
-        Change the default for <code>honorCipherOrder</code> to
-        <code>false</code>. With the current default TLS configuration, it is no
-        longer necessary for this to be <code>true</code> for a reasonably
-        secure configuration. (markt)
-      </update>
-      <add>
-        Add a new environment variable <code>JSSE_OPTS</code> that is intended
-        to be used to pass JVM wide configuration to the JSSE implementation.
-        The default value is <code>-Djdk.tls.ephemeralDHKeySize=2048</code>
-        which protects against weak Diffie-Hellman keys. (markt)
-      </add>
-      <fix>
-        <bug>58970</bug>: Fix a connection counting bug in the NIO connector
-        that meant some dropped connections were not removed from the current
-        connection count. (markt)
-      </fix>
-      <fix>
-        <bug>59289</bug>: Do not recycle upgrade processors in unexpected close
-        situations. (remm)
-      </fix>
-      <fix>
-        <bug>59295</bug>: Use <code>Locale.toLanguageTag()</code> to construct
-        the <code>Content-Language</code> HTTP header to ensure the locale is
-        correctly represented. Patch provided by zikfat. (markt)
-      </fix>
-      <update>
-        <bug>59295</bug>: Add support for using pem encoded certificates with
-        JSSE SSL. Submitted by Emmanuel Bourg with additional tweaks. (remm)
-      </update>
-      <fix>
-        Make the TLS certificate chain available to clients when using
-        JSSE+OpenSSL with the certificate chain stored in a Java KeyStore.
-        (markt)
-      </fix>
-      <fix>
-        Work around <a href="https://github.com/openssl/openssl/issues/188">a
-        known issue in OpenSSL</a> that does not permit the TLS handshake to be
-        failed if the ALPN negotiation fails. (markt)
-      </fix>
-      <update>
-        <bug>59421</bug>: Add direct HTTP/2 connection support. (remm)
-      </update>
-      <fix>
-        Correctly handle a call to <code>AsyncContext.complete()</code> from a
-        non-container thread when non-blocking I/O is being used. (markt)
-      </fix>
-      <fix>
-        <bug>59451</bug>: Correct Javadoc for <code>MessageBytes</code>. Patch
-        provided by Kyohei Nakamura. (markt)
-      </fix>
-      <fix>
-        <bug>59450</bug>: Correctly handle the case where the
-        <code>LegacyCookieProcessor</code> is configured with
-        <code>allowHttpSepsInV0</code> set to <code>false</code> and
-        <code>forwardSlashIsSeparator</code> set to <code>true</code>. Patch
-        provided by Kyohei Nakamura. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Jasper">
-    <changelog>
-      <fix>
-        When scanning JARs for TLDs, correctly handle the (rare) case where a
-        JAR has been exploded into <code>WEB-INF/classes</code> and the web
-        application is deployed as a packed WAR. (markt)
-      </fix>
-      <fix>
-        <bug>59640</bug>: NPEs with not found TLDs. (remm)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="WebSocket">
-    <changelog>
-      <fix>
-        <bug>59189</bug>: Explicitly release the native memory held by the
-        <code>Inflater</code> and <code>Deflater</code> when using
-        PerMessageDeflate and the WebSocket session ends. Based on a patch by
-        Henrik Olsson. (markt)
-      </fix>
-      <fix>
-        Restore the <code>WsServerContainer.doUpgrade()</code> method which was
-        accidentally removed since it is not used by Tomcat. (markt)
-      </fix>
-      <fix>
-        Fix a regression caused by the connector refactoring and ensure that the
-        thread context class loader is set to the web application
-        classloader when processing WebSocket messages on the server. (markt)
-      </fix>
-      <fix>
-        Ensure that a client disconnection triggers the error handling for the
-        associated WebSocket end point. (markt)
-      </fix>
-      <add>
-        Make WebSocket client more robust when handling errors during the close
-        of a WebSocket session. (markt)
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="Web applications">
-    <changelog>
-      <fix>
-        <bug>59218</bug>: Correct the path to <code>jaspic-providers.xml</code>
-        in Jaspic How-To. Patch is provided by Tatsuya Bessho. (violetagg)
-      </fix>
-      <fix>
-        Remove button that has accidentally been added to the host manager.
-        Submitted by Coty Sutherland. (remm)
-      </fix>
-      <fix>
-        Update in the documentation the link to the maven repository where
-        Tomcat snapshot artifacts are deployed. (markt/violetagg)
-      </fix>
-      <fix>
-        Clarify in the documentation that calls to
-        <code>ServletContext.log(String, Throwable)</code> or
-        <code>GenericServlet.log(String, Throwable)</code> are logged at the
-        SEVERE level. (violetagg)
-      </fix>
-      <fix>
-        Correct a typo in SSL/TLS Configuration How-To.
-        Issue reported via comments.apache.org. (violetagg)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Tribes">
-    <changelog>
-      <fix>
-        Avoid NPE when a proxy node failed to retrieve a backup entry. (kfujino)
-      </fix>
-      <add>
-        Add the flag indicating that member is a localMember. (kfujino)
-      </add>
-      <fix>
-        Fix potential NPE that depends on the setting order of attributes of
-        static member when using the static cluster. (kfujino)
-      </fix>
-      <add>
-        Add get/set method for the channel that is related to
-        <code>ChannelInterceptor</code>. (kfujino)
-      </add>
-      <fix>
-        As with the multicast cluster environment, in the static cluster
-        environment, the local member inherits properties from the cluster
-        receiver. (kfujino)
-      </fix>
-      <add>
-        Add get/set method for the channel that is related to each Channel
-        services. (kfujino)
-      </add>
-      <add>
-        Add name to channel in order to identify channels. In tomcat cluster
-        environment, it is set the cluster name + "-Channel" as default value.
-        (kfujino)
-      </add>
-      <add>
-        Add the channel name to the thread which is invoked by channel services
-        in order to identify the associated channel. (kfujino)
-      </add>
-      <fix>
-        Ensure that clear the channel instance from channel services when
-        stopping channel. (kfujino)
-      </fix>
-      <add>
-        Implement map state in the replication map. (kfujino)
-      </add>
-      <fix>
-        Ensure that the ping is not executed during the start/stop of the
-        replication map. (kfujino)
-      </fix>
-      <fix>
-        In ping processing in the replication map, send not the
-        <code>INIT</code> message but the newly introduced <code>PING</code>
-        message. (kfujino)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <fix>
-        <bug>59211</bug>: Add hamcrest to Eclipse classpath. Patch is provided
-        by Huxing Zhang. (violetagg)
-      </fix>
-      <update>
-        <bug>59276</bug>: Update optional Checkstyle library to 6.17.
-        (kkolinko)
-      </update>
-      <update>
-        <bug>59280</bug>: Update the NSIS Installer used to build the
-        Windows Installers to version 2.51. (kkolinko)
-      </update>
-      <update>
-        Update the packaged version of the Tomcat Native Library to 1.2.7 to
-        pick up the Windows binaries that are based on OpenSSL 1.0.2h and APR
-        1.5.2. (markt)
-      </update>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.0.M4 (markt)" rtext="2016-03-16">
-  <subsection name="Catalina">
-    <changelog>
-      <fix>
-        Ensure that <code>/WEB-INF/classes</code> is never processed as a web
-        fragment. (markt)
-      </fix>
-      <update>
-        Switch default connector when native is installed. Unless configured
-        otherwise, the NIO endpoint will be used by default. If SSL is
-        configured, OpenSSL will be used rather than JSSE. (remm)
-      </update>
-      <fix>
-        Correct a regression in the fix for <bug>58867</bug>. When configuring a
-        Context to use an external directory for the <code>docBase</code>, and
-        that directory happens to be located along side the original WAR, use
-        the directory as the <code>docBase</code> rather than expanding the
-        WAR into the <code>appBase</code> and using the newly created expanded
-        directory as the <code>docBase</code>. (markt)
-      </fix>
-      <add>
-        <bug>58351</bug>: Make the server build date and server version number
-        accessible via JMX. Patch provided by  Huxing Zhang. (markt)
-      </add>
-      <add>
-        <bug>58988</bug>: Special characters in the substitutions for the
-        RewriteValve can now be quoted with a backslash. (fschumacher)
-      </add>
-      <fix>
-        <bug>58999</bug>: Fix class and resource name filtering in
-        WebappClassLoader. It throws a StringIndexOutOfBoundsException if the
-        name is exactly "org" or "javax". (rjung)
-      </fix>
-      <add>
-        Add JASPIC (JSR-196) support. (markt)
-      </add>
-      <add>
-        Make checking for var and map replacement in RewriteValve a bit stricter
-        and correct detection of colon in var replacement. (fschumacher)
-      </add>
-      <fix>
-        Refactor the web application class loader to reduce the impact of JAR
-        scanning on the memory footprint of the web application. (markt)
-      </fix>
-      <fix>
-        Fix some resource leaks in the error handling for accessing files from
-        JARs and WARs. (markt)
-      </fix>
-      <fix>
-        Refactor the JAR and JAR-in-WAR resource handling to reduce the memory
-        footprint of the web application. (markt)
-      </fix>
-      <fix>
-        Refactor the web.xml parsing so a new parser is created every time the
-        web application starts rather than creating and caching the parser when
-        the Context is created. This enables the parser to take account of
-        modified Context configuration parameters and reduces (slightly) the
-        memory footprint of a running Tomcat instance. (markt)
-      </fix>
-      <update>
-        Switch the web application class loader to the
-        <code>ParallelWebappClassLoader</code> by default. (markt)
-      </update>
-      <fix>
-        <bug>57809</bug>: Remove the custom context attribute that held the
-        effective web.xml. Components needing access to configuration
-        information may access it via the Servlet API. (markt)
-      </fix>
-      <fix>
-        Refactor JAR scanning to reduce memory footprint. (markt)
-      </fix>
-      <fix>
-        <bug>59001</bug>: Correctly handle the case when Tomcat is installed on
-        a path where one of the segments ends in an exclamation mark. (markt)
-      </fix>
-      <fix>
-        Expand the fix for <bug>59001</bug> to cover the special sequences used
-        in Tomcat&apos;s custom jar:war: URLs. (markt)
-      </fix>
-      <fix>
-        <bug>59043</bug>: Avoid warning while expiring sessions associated with
-        a single sign on if <code>HttpServletRequest.logout()</code> is used.
-        (markt)
-      </fix>
-      <fix>
-        <bug>59054</bug>: Ensure that using the
-        <code>CrawlerSessionManagerValve</code> in a distributed environment
-        does not trigger an error when the Valve registers itself in the
-        session. (markt)
-      </fix>
-      <fix>
-        Add socket properties support to storeconfig. (remm)
-      </fix>
-      <fix>
-        Fix incorrect parsing of the NE and NC flags in rewrite rules. (remm)
-      </fix>
-      <fix>
-        <bug>59065</bug>: Correct the timing of the check for colons in paths
-        on non-Windows systems implemented in <code>catalina.sh</code> so it
-        works correctly with Cygwin. Patch provided by Ed Randall. (markt)
-      </fix>
-      <fix>
-        When a Host is configured with an appBase that does not exist, create
-        the appBase before trying to expand an external WAR file into it.
-        (markt)
-      </fix>
-      <fix>
-       <bug>59115</bug>: When using the Servlet 3.0 file upload, the submitted
-       file name may be provided as a token or a quoted-string. If a
-       quoted-string, unquote the string before returning it to the user.
-       (markt)
-      </fix>
-      <fix>
-        <bug>59123</bug>: Close <code>NamingEnumeration</code> objects used by
-        the <code>JNDIRealm</code> once they are no longer required.
-        (fschumacher/markt)
-      </fix>
-      <add>
-        Implement the proposed Servlet 4.0 API to provide mapping type
-        information for the current request. (markt)
-      </add>
-      <fix>
-        <bug>59138</bug>: Correct a false positive warning for ThreadLocal
-        related memory leaks when the key class but not the value class has been
-        loaded by the web application class loader. (markt)
-      </fix>
-      <add>
-        <bug>59017</bug>: Make the pre-compressed file support in the Default
-        Servlet generic so any compression may be used rather than just gzip.
-        Patch provided by Mikko Tiihonen. (markt)
-      </add>
-      <fix>
-        <bug>59145</bug>: Don't log an invalid warning when a user logs out of
-        a session associated with SSO. (markt)
-      </fix>
-      <fix>
-        <bug>59150</bug>: Add an additional flag on APR listener to allow
-        disabling automatic use of OpenSSL. (remm)
-      </fix>
-      <fix>
-        <bug>59151</bug>: Fix a regression in the fix for <bug>56917</bug> that
-        added additional (and arguably unnecessary) validation to the provided
-        redirect location. (markt)
-      </fix>
-      <fix>
-        <bug>59154</bug>: Fix a <code>NullPointerException</code> in the
-        <code>JAASMemoryLoginModule</code> resulting from the introduction of
-        the <code>CredentialHandler</code> to <code>Realm</code>s.
-        (schultz/markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <fix>
-        Handle the case in the NIO2 connector where the required TLS buffer
-        sizes increase after the connection has been initiated. (markt/remm)
-      </fix>
-      <fix>
-        Bad processing of handshake errors in NIO2. (remm)
-      </fix>
-      <fix>
-        Use JSSE session configuration options with OpenSSL. (remm)
-      </fix>
-      <fix>
-        <bug>59015</bug>: Fix potential cause of endless APR Poller loop during
-        shutdown if the Poller experiences an error during the shutdown process.
-        (markt)
-      </fix>
-      <fix>
-        Align cipher aliases for <code>kECDHE</code> and <code>ECDHE</code> with
-        the current OpenSSL implementation. (markt)
-      </fix>
-      <fix>
-        <bug>59081</bug>: Retain the user defined cipher order when defining
-        ciphers. (markt)
-      </fix>
-      <fix>
-        <bug>59089</bug>: Correctly ignore HTTP headers that include non-token
-        characters in the header name. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Jasper">
-    <changelog>
-      <update>
-        Update to the Eclipse JDT Compiler 4.5.1. (markt)
-      </update>
-      <fix>
-        <bug>57583</bug>: Improve the performance of
-        <code>javax.servlet.jsp.el.ScopedAttributeELResolver</code> when
-        resolving attributes that do not exist. This improvement only works when
-        Jasper is used with Tomcat's EL implementation. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="WebSocket">
-    <changelog>
-      <fix>
-        Fix a timing issue on session close that could result in an exception
-        being thrown for an incomplete message even through the message was
-        completed. (markt)
-      </fix>
-      <fix>
-        Correctly handle compression of partial messages when the final message
-        fragment has a zero length payload. (markt)
-      </fix>
-      <fix>
-        <bug>59119</bug>: Correct read logic for WebSocket client when using
-        secure connections. (markt)
-      </fix>
-      <fix>
-        <bug>59134</bug>: Correct client connect logic for secure connections
-        made through a proxy. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Web applications">
-    <changelog>
-      <fix>
-        Correct an error in the documentation of the expected behaviour for
-        automatic deployment. If a WAR is updated and an expanded directory is
-        present, the directory will always be deleted and recreated by expanding
-        the WAR if <code>unpackWARs</code> is <code>true</code>. (markt)
-      </fix>
-      <fix>
-        <bug>48674</bug>: Implement an option within the Host Manager web
-        application to persist the current configuration. Based on a patch by
-        Coty Sutherland. (markt)
-      </fix>
-      <fix>
-        <bug>58935</bug>: Remove incorrect references in the documentation to
-        using <code>jar:file:</code> URLs with the Manager application. (markt)
-      </fix>
-      <fix>
-        Correct the description of the
-        <code>ServletRequest.getServerPort()</code> in Proxy How-To.
-        Issue reported via comments.apache.org. (violetagg)
-      </fix>
-      <add>
-        The Manager and Host Manager applications are now only accessible via
-        <code>localhost</code> by default. (markt)
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="Tribes">
-    <changelog>
-      <fix>
-        If promoting a proxy node to a primary node when getting a session,
-        notify the change of the new primary node to the original backup node.
-        (kfujino)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <fix>
-        <bug>58283</bug>: Change the default download location for libraries
-        during the build process from <code>/usr/share/java</code> to
-        <code>${user.home}/temp</code>. Patch provided by Ahmed Hosni. (markt)
-      </fix>
-      <fix>
-        <bug>59031</bug>: When using the Windows uninstaller, do not remove the
-        contents of any directories that have been symlinked into the Tomcat
-        directory structure. (markt)
-      </fix>
-      <update>
-        Update the packaged version of the Tomcat Native Library to 1.2.5 to
-        pick up the Windows binaries that are based on OpenSSL 1.0.2g and APR
-        1.5.1. (markt)
-      </update>
-      <update>
-        Modify the default <code>tomcat-users.xml</code> file to make it harder
-        for users to configure the entries intended for use with the examples
-        web application for the Manager application. (markt)
-      </update>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.0.M3 (markt)" rtext="2016-02-05">
-  <subsection name="General">
-    <changelog>
-      <add>
-        Allow to configure multiple JUnit test class patterns with the build
-        property <code>test.name</code> and document the property in
-        BUILDING.txt. (rjung)
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="Catalina">
-    <changelog>
-      <fix>
-        Protect initialization of <code>ResourceLinkFactory</code> when
-        running with a SecurityManager. (kkolinko)
-      </fix>
-      <fix>
-        Correct a thread safety issue in the filtering of session attributes
-        based on the implementing class name of the value object. (markt)
-      </fix>
-      <fix>
-        Fix class loader decision on the delegation for class loading and
-        resource lookup and make it faster too. (rjung)
-      </fix>
-      <fix>
-        <bug>58768</bug>: Log a warning if a redirect fails because of an
-        invalid location. (markt)
-      </fix>
-      <scode>
-        <bug>58827</bug>: Remove remains of JSR-77 implementation. (markt)
-      </scode>
-      <fix>
-        <bug>58946</bug>: Ensure that the request parameter map remains
-        immutable when processing via a RequestDispatcher. (markt)
-      </fix>
-      <fix>
-        <bug>58905</bug>: Ensure that <code>Tomcat.silence()</code> silences the
-        correct logger and respects the current setting. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <fix>
-        Correct a regression in the connector refactoring in 9.0.0.M2 that broke
-        TLS support for the APR/native connector. (remm)
-      </fix>
-      <fix>
-        Correct an NPE when listing the enabled ciphers (e.g. via the Manager
-        web application) for a TLS enabled APR/native connector. (markt)
-      </fix>
-      <add>
-        New configuration option <code>ajpFlush</code> for the AJP connectors
-        to disable the sending of AJP flush packets. (rjung)
-      </add>
-      <fix>
-        Handle the case in the NIO connector where the required TLS buffer sizes
-        increase after the connection has been initiated. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.0.M2 (markt)" rtext="not released">
-  <subsection name="Catalina">
-    <changelog>
-      <scode>
-        Refactor creation of <code>MapperListener</code> to ensure that the
-        <code>Mapper</code> used is the <code>Mapper</code> associated with the
-        <code>Service</code> for which the listener was created. (markt)
-      </scode>
-      <add>
-        Move the functionality that provides redirects for context roots and
-        directories where a trailing <code>/</code> is added from the Mapper to
-        the <code>DefaultServlet</code>. This enables such requests to be
-        processed by any configured Valves and Filters before the redirect is
-        made. This behaviour is configurable via the
-        <code>mapperContextRootRedirectEnabled</code> and
-        <code>mapperDirectoryRedirectEnabled</code> attributes of the Context
-        which may be used to restore the previous behaviour. (markt)
-      </add>
-      <scode>
-        Refactor <code>Service.getContainer()</code> to return an
-        <code>Engine</code> rather than a <code>Container</code>. (markt)
-      </scode>
-      <fix>
-        <bug>34319</bug>: Only load those keys in <code>StoreBase.processExpire</code>
-        from JDBCStore, that are old enough, to be expired. Based on a patch
-        by Tom Anderson. (fschumacher)
-      </fix>
-      <add>
-        <bug>56917</bug>: As per RFC7231 (HTTP/1.1), allow HTTP/1.1 and later
-        redirects to use relative URIs. This is controlled by a new attribute
-        <code>useRelativeRedirects</code> on the <strong>Context</strong> and
-        defaults to <code>true</code>. (markt)
-      </add>
-      <fix>
-        <bug>58629</bug>: Allow an embedded Tomcat instance to start when the
-        <code>Service</code> has no <code>Engine</code> configured. (markt)
-      </fix>
-      <fix>
-        Correctly notify the MapperListener associated with a Service if the
-        Engine for that Service is changed. (markt)
-      </fix>
-      <add>
-        Make a web application's CredentialHandler available through a context
-        attribute. This allows a web application to use the same algorithm
-        for validating or generating new stored credentials from cleartext
-        ones. (schultz)
-      </add>
-      <fix>
-        <bug>58635</bug>: Enable break points to be set within agent code when
-        running Tomcat with a Java agent. Based on a patch by Huxing Zhang.
-        (markt)
-      </fix>
-      <fix>
-        Fixed potential NPE in <code>HostConfig</code> while deploying an
-        application. Issue reported by coverity scan. (violetagg)
-      </fix>
-      <fix>
-        <bug>58655</bug>: Fix an <code> IllegalStateException</code> when
-        calling <code>HttpServletResponse.sendRedirect()</code> with the
-        <code>RemoteIpFilter</code>. This was caused by trying to correctly
-        generate the absolute URI for the redirect. With the fix for
-        <bug>56917</bug>, redirects may now be relative making the
-        <code>sendRedirect()</code> implementation for the
-        <code>RemoteIpFilter</code> much simpler. This also addresses issues
-        where the redirect may not have behaved as expected when redirecting
-        from http to https to from https to http. (markt)
-      </fix>
-      <fix>
-        <bug>58657</bug>: Exceptions in a Servlet 3.1 <code>ReadListener</code>
-        or <code>WriteListener</code> do not need to be immediately fatal to the
-        connection. Allow an error response to be written. (markt)
-      </fix>
-      <fix>
-        Correct implementation of
-        <code>validateClientProvidedNewSessionId</code> so client provided
-        session IDs may be rejected if validation is enabled. (markt)
-      </fix>
-      <fix>
-        <bug>58701</bug>: Reset the <code>instanceInitialized</code> field in
-        <code>StandardWrapper</code> when unloading a Servlet so that a new
-        instance may be correctly initialized. (markt)
-      </fix>
-      <update>
-        Add a new flag <code>aprPreferred</code> to the Apr listener. if set to
-        <code>false</code>, when using the connector defaults, it will use
-        NIO + OpenSSL if tomcat-native is available, rather than the APR
-        connector. (remm)
-      </update>
-      <fix>
-        Add path parameter handling to
-        <code>HttpServletRequest.getContextPath()</code>. This is a follow-up to
-        the fix for <bug>57215</bug>. (markt)
-      </fix>
-      <fix>
-        <bug>58692</bug>: Make <code>StandardJarScanner</code> more robust. Log
-        a warning if a class path entry cannot be scanned rather than triggering
-        the failure of the web application. Includes a test case written by
-         Derek Abdine. (markt)
-      </fix>
-      <fix>
-        <bug>58702</bug>: Ensure an access log entry is generated if the client
-        aborts the connection. (markt)
-      </fix>
-      <fix>
-        Fixed various issues reported by Findbugs. (violetagg)
-      </fix>
-      <fix>
-        <bug>58735</bug>: Add support for the <code>X-XSS-Protection</code>
-        header to the <code>HttpHeaderSecurityFilter</code>. Patch provided by
-        Jacopo Cappellato. (markt)
-      </fix>
-      <fix>
-        Add the <code>StatusManagerServlet</code> to the list of Servlets that
-        can only be loaded by privileged applications. (markt)
-      </fix>
-      <fix>
-        Simplify code and fix messages in
-        <code>org.apache.catalina.core.DefaultInstanceManager</code> class.
-        (kkolinko)
-      </fix>
-      <fix>
-        <bug>58751</bug>: Correctly handle the case where an
-        <code>AsyncListener</code> dispatches to a Servlet on an asynchronous
-        timeout and the Servlet uses <code>sendError()</code> to trigger an
-        error page. Includes a test case based on code provided by Andy
-        Wilkinson.(markt)
-      </fix>
-      <fix>
-        Ensure that the proper file encoding if specified will be used when
-        a readme file is served by DefaultServlet. (violetagg)
-      </fix>
-      <fix>
-        Fix declaration of <code>localPort</code> attribute of Connector MBean:
-        it is read-only. (kkolinko)
-      </fix>
-      <fix>
-        <bug>58766</bug>: Make skipping non-class files during annotation
-        scanning faster by checking the file name first. Improve debug logging.
-        (kkolinko)
-      </fix>
-      <fix>
-        <bug>58836</bug>: Correctly merge query string parameters when
-        processing a forwarded request where the target includes a query string
-        that contains a parameter with no value. (markt/kkolinko)
-      </fix>
-      <fix>
-        Make sure that shared Digester is reset in an unlikely error case
-        in <code>HostConfig.deployWAR()</code>. (kkolinko)
-      </fix>
-      <add>
-        Extend the feature available in the cluster session manager
-        implementations that enables session attribute replication to be
-        filtered based on attribute name to all session manager implementations.
-        Note that configuration attribute name has changed from
-        <code>sessionAttributeFilter</code> to
-        <code>sessionAttributeNameFilter</code>. Apply the filter on load as
-        well as unload to ensure that configuration changes made while the web
-        application is stopped are applied to any persisted data. (markt)
-      </add>
-      <add>
-        Extend the session attribute filtering options to include filtering
-        based on the implementation class of the value and optional
-        <code>WARN</code> level logging if an attribute is filtered. These
-        options are available for all of the Manager implementations that ship
-        with Tomcat. When a <code>SecurityManager</code> is used filtering will
-        be enabled by default. (markt)
-      </add>
-      <scode>
-        Remove <code>distributable</code> and <code>maxInactiveInterval</code>
-        from the <code>Manager</code> interface because the attributes are never
-        used. The equivalent attributes from the <code>Context</code> always
-        take precedence. (markt)
-      </scode>
-      <fix>
-        <bug>58867</bug>: Improve checking on Host start for WAR files that have
-        been modified while Tomcat has stopped and re-expand them if
-        <code>unpackWARs</code> is <code>true</code>. (markt)
-      </fix>
-      <fix>
-        <bug>58900</bug>: Correctly undeploy symlinked resources and prevent an
-        infinite cycle of deploy / undeploy. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <fix>
-        <bug>58621</bug>: The certificate chain cannot be set using the main
-        certificate attribute, so restore the certificate chain property. (remm)
-      </fix>
-      <fix>
-        Allow a new SSL config type where a connector can use either JSSE or
-        OpenSSL. Both could be allowed, but it would likely create support
-        issues. This type is used by the OpenSSL implementation for NIOx. (remm)
-      </fix>
-      <fix>
-        Improve upgrade context classloader handling by using Context.bind and
-        unbind. (remm)
-      </fix>
-      <add>
-        Improve OpenSSL keystore/truststore configuration by using the code
-        from the JSSE implementation. (remm, jfclere)
-      </add>
-      <fix>
-        Fix a potential loop when a client drops the connection unexpectedly.
-        (markt)
-      </fix>
-      <add>
-        OpenSSL renegotiation support for client certificate authentication.
-        (remm)
-      </add>
-      <fix>
-        Fix NIO connector renegotiation. (remm)
-      </fix>
-      <fix>
-        <bug>58659</bug>: Fix a potential deadlock during HTTP/2 processing when
-        the connection window size is limited. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Jasper">
-    <changelog>
-      <fix>
-        <bug>57136#c25</bug>: Change default value of
-        <code>quoteAttributeEL</code> setting in Jasper to be <code>true</code>
-        for better compatibility with other implementations and older versions
-        of Tomcat. Add command line option <code>-no-quoteAttributeEL</code> in
-        JspC. (kkolinko)
-      </fix>
-      <fix>
-        Fix handling of missing messages in
-        <code>org.apache.el.util.MessageFactory</code>. (violetagg)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Cluster">
-    <changelog>
-      <fix>
-        Enable an explicit configuration of local member in the static cluster
-        membership. (kfujino)
-      </fix>
-      <fix>
-        Fix potential integer overflow in <code>DeltaSession</code>.
-        Reported by coverity scan. (fschumacher)
-      </fix>
-      <fix>
-        In order to avoid that the heartbeat thread and the background thread to
-        run <code>Channel.heartbeat</code> simultaneously, if
-        <code>heartbeatBackgroundEnabled</code> of <code>SimpleTcpCluster</code>
-        set to <code>true</code>, ensure that the heartbeat thread does not
-        start. (kfujino)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="WebSocket">
-    <changelog>
-      <add>
-        <bug>55006</bug>: The WebSocket client now honors the
-        <code>java.net.java.net.ProxySelector</code> configuration (using the
-        HTTP type) when establishing WebSocket connections to servers. Based on
-        a patch by Niki Dokovski. (markt)
-      </add>
-      <fix>
-        <bug>58624</bug>: Correct a potential deadlock if the WebSocket
-        connection is closed when a message write is in progress. (markt)
-      </fix>
-      <fix>
-        <bug>57489</bug>: Ensure <code>onClose()</code> is called when a
-        WebSocket connection is closed even if the sending of the close message
-        fails. Includes test cases by Barry Coughlan. (markt)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Web Applications">
-    <changelog>
-      <fix>
-        <bug>58631</bug>: Correct the continuation character use in the Windows
-        Service How-To page of the documentation web application. (markt)
-      </fix>
-      <fix>
-        Correct the SSL documentation for deprecated attributes to point to the
-        correct, new location for attributes related to individual certificates.
-        (markt)
-      </fix>
-      <fix>
-        Correct some typos in the JNDI resources How-To. (markt)
-      </fix>
-      <fix>
-        Don't create session unnecessarily in the Manager application. (markt)
-      </fix>
-      <fix>
-        Don't create session unnecessarily in the Host Manager application.
-        (markt)
-      </fix>
-      <fix>
-        <bug>58723</bug>: Clarify documentation and error messages for the text
-        interface of the manager to make clear that version must be used with
-        path when referencing contexts deployed using parallel deployment.
-        (markt)
-      </fix>
-      <add>
-        Document <code>test.threads</code> option in BUILDING.txt. (kkolinko)
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="Tribes">
-    <changelog>
-      <fix>
-        Ensure that the static member is registered to the add suspect list even
-        if the static member that is registered to the remove suspect list has
-        disappeared. (kfujino)
-      </fix>
-      <fix>
-        When using a static cluster, add the members that have been cached in
-        the membership service to the map members list in order to ensure that
-        the map member is a static member. (kfujino)
-      </fix>
-      <fix>
-        Add support for the startup notification of local members in the static
-        cluster. (kfujino)
-      </fix>
-      <fix>
-        Ignore the unnecessary member remove operation from different domain.
-        (kfujino)
-      </fix>
-      <fix>
-        Add support for the shutdown notification of local members in the static
-        cluster. (kfujino)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="jdbc-pool">
-    <changelog>
-      <fix>
-        Correct evaluation of system property
-        <code>org.apache.tomcat.jdbc.pool.onlyAttemptCurrentClassLoader</code>.
-        It was basically ignored before. Reported by coverity scan. (fschumacher)
-      </fix>
-      <fix>
-        Fix potential integer overflow in <code>ConnectionPool</code> and
-        <code>PooledConnection</code>. Reported by coverity scan. (fschumacher)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <update>
-        Update optional Checkstyle library to 6.14.1. (kkolinko)
-      </update>
-      <update>
-        Update the packaged version of the Tomcat Native Library to 1.2.4 to
-        pick up the Windows binaries that are based on OpenSSL 1.0.2e and APR
-        1.5.1. (markt)
-      </update>
-      <update>
-        Update the NSIS Installer used to build the Windows Installers to
-        version 2.50. (markt/kkolinko)
-      </update>
-      <update>
-        Update the internal fork of Commons BCEL to r1725718 to align with the
-        refactoring for BCEL 6, the next major BCEL release. (markt)
-      </update>
-      <update>
-        Update the internal fork of Commons DBCP 2 to r1725730 (2.1.1 plus
-        additional fixes). (markt)
-      </update>
-      <update>
-        Update the internal fork of Commons Pool 2 to r1725738 (2.4.2 plus
-        additional fixes). (markt)
-      </update>
-      <update>
-        Update the internal fork of Commons Codec to r1725746 (1.9 plus
-        additional fixes). (markt)
-      </update>
-    </changelog>
-  </subsection>
-</section>
-<section name="Tomcat 9.0.0.M1 (markt)" rtext="2015-11-17">
-  <subsection name="General">
-    <changelog>
-      <add>
-        Make Java 8 the minimum required version to build and run Tomcat 9.
-        (markt)
-      </add>
-      <update>
-        Remove support for Comet. (markt)
-      </update>
-      <update>
-        Tighten up the default file permissions for the <code>.tar.gz</code>
-        distribution so no files or directories are world readable by default.
-        Configure Tomcat to run with a default umask of <code>0027</code> which
-        may be overridden by setting <code>UMASK</code> in
-        <code>setenv.sh</code>. (markt)
-      </update>
-      <update>
-        Remove native code (Windows Service Wrapper, APR/native connector)
-        support for Windows Itanium. (markt)
-      </update>
-    </changelog>
-  </subsection>
-  <subsection name="Catalina">
-    <changelog>
-      <update>
-        The default HTTP cookie parser has been changed to
-        <code>org.apache.tomcat.util.http.Rfc6265CookieProcessor</code>. (markt)
-      </update>
-    </changelog>
-  </subsection>
-  <subsection name="Coyote">
-    <changelog>
-      <update>
-        Remove support for the HTTP BIO and AJP BIO connectors. (markt)
-      </update>
-      <scode>
-        Refactor HTTP upgrade and AJP implementations to reduce duplication.
-        (markt)
-      </scode>
-      <add>
-        Add support for HPACK header encoding and decoding, contributed
-        by Stuart Douglas. (remm)
-      </add>
-      <add>
-        <bug>57108</bug>: Add support for Server Name Indication (SNI). There
-        has been significant changes to the SSL configuration in server.xml to
-        support this. (markt)
-      </add>
-      <add>
-        Add SSL engine for JSSE backed by OpenSSL. Includes ALPN support.
-        Based on code contributed by Numa de Montmollin and derived from code
-        developed by Twitter and Netty. (remm)
-      </add>
-      <fix>
-        RFC 7230 states that clients should ignore reason phrases in HTTP/1.1
-        response messages. Since the reason phrase is optional, Tomcat no longer
-        sends it. As a result the system property
-        <code>org.apache.coyote.USE_CUSTOM_STATUS_MSG_IN_HEADER</code> is no
-        longer used and has been removed. (markt)
-      </fix>
-      <update>
-        The minimum required Tomcat Native version has been increased to 1.2.2.
-        The 1.2.x branch includes ALPN and SNI support which are required for
-        HTTP/2. (markt)
-      </update>
-      <add>
-        Add support for HTTP/2 including server push. (markt)
-      </add>
-    </changelog>
-  </subsection>
-  <subsection name="Tribes">
-    <changelog>
-      <fix>
-        Clarify the handling of Copy message and Copy nodes. (kfujino)
-      </fix>
-    </changelog>
-  </subsection>
-  <subsection name="Other">
-    <changelog>
-      <add>
-        Support the use of the <code>threads</code> attribute on Ant&apos;s
-        junit task. Note that using this with a value of greater than one will
-        disable Cobertura code coverage. (markt)
-      </add>
-    </changelog>
-  </subsection>
+<section name="Tomcat 10.0.0.0-M1 (markt)" rtext="in development">
 </section>
 </body>
 </document>


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


[tomcat] 10/18: Rename "javax.transaction" to "jakarta.transation"

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tomcat.git

commit 6c3e9285db2ca16e1a2f1e99a653916b91bd2c5a
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Thu Nov 28 19:16:36 2019 +0000

    Rename "javax.transaction" to "jakarta.transation"
---
 .../transaction/HeuristicCommitException.java               |  2 +-
 .../transaction/HeuristicMixedException.java                |  2 +-
 .../transaction/HeuristicRollbackException.java             |  2 +-
 .../transaction/InvalidTransactionException.java            |  2 +-
 .../transaction/NotSupportedException.java                  |  2 +-
 java/{javax => jakarta}/transaction/RollbackException.java  |  2 +-
 java/{javax => jakarta}/transaction/Status.java             |  2 +-
 java/{javax => jakarta}/transaction/Synchronization.java    |  2 +-
 java/{javax => jakarta}/transaction/SystemException.java    |  2 +-
 java/{javax => jakarta}/transaction/Transaction.java        |  2 +-
 java/{javax => jakarta}/transaction/TransactionManager.java |  2 +-
 .../transaction/TransactionRequiredException.java           |  2 +-
 .../transaction/TransactionRolledbackException.java         |  2 +-
 .../transaction/TransactionSynchronizationRegistry.java     |  2 +-
 java/{javax => jakarta}/transaction/UserTransaction.java    |  2 +-
 java/org/apache/catalina/startup/WebAnnotationSet.java      |  2 +-
 java/org/apache/naming/TransactionRef.java                  |  2 +-
 .../tomcat/dbcp/dbcp2/managed/BasicManagedDataSource.java   |  5 +++--
 .../dbcp/dbcp2/managed/DataSourceXAConnectionFactory.java   |  5 +++--
 .../tomcat/dbcp/dbcp2/managed/LocalXAConnectionFactory.java |  3 ++-
 .../tomcat/dbcp/dbcp2/managed/TransactionContext.java       | 13 +++++++------
 .../tomcat/dbcp/dbcp2/managed/TransactionRegistry.java      |  9 +++++----
 res/checkstyle/jakarta-import-control.xml                   |  4 ++++
 res/checkstyle/javax-import-control.xml                     |  3 ---
 res/checkstyle/org-import-control.xml                       |  3 ++-
 25 files changed, 43 insertions(+), 36 deletions(-)

diff --git a/java/javax/transaction/HeuristicCommitException.java b/java/jakarta/transaction/HeuristicCommitException.java
similarity index 97%
rename from java/javax/transaction/HeuristicCommitException.java
rename to java/jakarta/transaction/HeuristicCommitException.java
index e0c1294..049993a 100644
--- a/java/javax/transaction/HeuristicCommitException.java
+++ b/java/jakarta/transaction/HeuristicCommitException.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.transaction;
+package jakarta.transaction;
 
 public class HeuristicCommitException extends java.lang.Exception {
 
diff --git a/java/javax/transaction/HeuristicMixedException.java b/java/jakarta/transaction/HeuristicMixedException.java
similarity index 97%
rename from java/javax/transaction/HeuristicMixedException.java
rename to java/jakarta/transaction/HeuristicMixedException.java
index 0910bb7..ba2523a 100644
--- a/java/javax/transaction/HeuristicMixedException.java
+++ b/java/jakarta/transaction/HeuristicMixedException.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.transaction;
+package jakarta.transaction;
 
 public class HeuristicMixedException extends java.lang.Exception {
 
diff --git a/java/javax/transaction/HeuristicRollbackException.java b/java/jakarta/transaction/HeuristicRollbackException.java
similarity index 97%
rename from java/javax/transaction/HeuristicRollbackException.java
rename to java/jakarta/transaction/HeuristicRollbackException.java
index f09a700..6e059f0 100644
--- a/java/javax/transaction/HeuristicRollbackException.java
+++ b/java/jakarta/transaction/HeuristicRollbackException.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.transaction;
+package jakarta.transaction;
 
 public class HeuristicRollbackException extends java.lang.Exception {
 
diff --git a/java/javax/transaction/InvalidTransactionException.java b/java/jakarta/transaction/InvalidTransactionException.java
similarity index 97%
rename from java/javax/transaction/InvalidTransactionException.java
rename to java/jakarta/transaction/InvalidTransactionException.java
index d29d5aa..f75b185 100644
--- a/java/javax/transaction/InvalidTransactionException.java
+++ b/java/jakarta/transaction/InvalidTransactionException.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.transaction;
+package jakarta.transaction;
 
 public class InvalidTransactionException extends java.rmi.RemoteException {
 
diff --git a/java/javax/transaction/NotSupportedException.java b/java/jakarta/transaction/NotSupportedException.java
similarity index 97%
rename from java/javax/transaction/NotSupportedException.java
rename to java/jakarta/transaction/NotSupportedException.java
index bad9810..ac19336 100644
--- a/java/javax/transaction/NotSupportedException.java
+++ b/java/jakarta/transaction/NotSupportedException.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.transaction;
+package jakarta.transaction;
 
 public class NotSupportedException extends java.lang.Exception {
 
diff --git a/java/javax/transaction/RollbackException.java b/java/jakarta/transaction/RollbackException.java
similarity index 97%
rename from java/javax/transaction/RollbackException.java
rename to java/jakarta/transaction/RollbackException.java
index 0ff971e..1851141 100644
--- a/java/javax/transaction/RollbackException.java
+++ b/java/jakarta/transaction/RollbackException.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.transaction;
+package jakarta.transaction;
 
 public class RollbackException extends java.lang.Exception {
 
diff --git a/java/javax/transaction/Status.java b/java/jakarta/transaction/Status.java
similarity index 97%
rename from java/javax/transaction/Status.java
rename to java/jakarta/transaction/Status.java
index 513f9e0..9c68a50 100644
--- a/java/javax/transaction/Status.java
+++ b/java/jakarta/transaction/Status.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.transaction;
+package jakarta.transaction;
 
 public interface Status {
     public static final int STATUS_ACTIVE = 0;
diff --git a/java/javax/transaction/Synchronization.java b/java/jakarta/transaction/Synchronization.java
similarity index 96%
rename from java/javax/transaction/Synchronization.java
rename to java/jakarta/transaction/Synchronization.java
index 0b5db31..2fe66d8 100644
--- a/java/javax/transaction/Synchronization.java
+++ b/java/jakarta/transaction/Synchronization.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.transaction;
+package jakarta.transaction;
 
 public interface Synchronization {
     public void beforeCompletion();
diff --git a/java/javax/transaction/SystemException.java b/java/jakarta/transaction/SystemException.java
similarity index 97%
rename from java/javax/transaction/SystemException.java
rename to java/jakarta/transaction/SystemException.java
index b4b4abe..3d5a50c 100644
--- a/java/javax/transaction/SystemException.java
+++ b/java/jakarta/transaction/SystemException.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.transaction;
+package jakarta.transaction;
 
 public class SystemException extends java.lang.Exception {
 
diff --git a/java/javax/transaction/Transaction.java b/java/jakarta/transaction/Transaction.java
similarity index 98%
rename from java/javax/transaction/Transaction.java
rename to java/jakarta/transaction/Transaction.java
index ed1f00f..4cfced6 100644
--- a/java/javax/transaction/Transaction.java
+++ b/java/jakarta/transaction/Transaction.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.transaction;
+package jakarta.transaction;
 
 import javax.transaction.xa.XAResource;
 
diff --git a/java/javax/transaction/TransactionManager.java b/java/jakarta/transaction/TransactionManager.java
similarity index 98%
rename from java/javax/transaction/TransactionManager.java
rename to java/jakarta/transaction/TransactionManager.java
index b2969db..caddaab 100644
--- a/java/javax/transaction/TransactionManager.java
+++ b/java/jakarta/transaction/TransactionManager.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.transaction;
+package jakarta.transaction;
 
 public interface TransactionManager {
     public void begin() throws NotSupportedException, SystemException;
diff --git a/java/javax/transaction/TransactionRequiredException.java b/java/jakarta/transaction/TransactionRequiredException.java
similarity index 97%
rename from java/javax/transaction/TransactionRequiredException.java
rename to java/jakarta/transaction/TransactionRequiredException.java
index 583a001..048ca2e 100644
--- a/java/javax/transaction/TransactionRequiredException.java
+++ b/java/jakarta/transaction/TransactionRequiredException.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.transaction;
+package jakarta.transaction;
 
 public class TransactionRequiredException extends java.rmi.RemoteException {
 
diff --git a/java/javax/transaction/TransactionRolledbackException.java b/java/jakarta/transaction/TransactionRolledbackException.java
similarity index 97%
rename from java/javax/transaction/TransactionRolledbackException.java
rename to java/jakarta/transaction/TransactionRolledbackException.java
index 2dfa899..f8e01db 100644
--- a/java/javax/transaction/TransactionRolledbackException.java
+++ b/java/jakarta/transaction/TransactionRolledbackException.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.transaction;
+package jakarta.transaction;
 
 public class TransactionRolledbackException extends java.rmi.RemoteException {
 
diff --git a/java/javax/transaction/TransactionSynchronizationRegistry.java b/java/jakarta/transaction/TransactionSynchronizationRegistry.java
similarity index 97%
rename from java/javax/transaction/TransactionSynchronizationRegistry.java
rename to java/jakarta/transaction/TransactionSynchronizationRegistry.java
index 9aa8daf..b2ac98f 100644
--- a/java/javax/transaction/TransactionSynchronizationRegistry.java
+++ b/java/jakarta/transaction/TransactionSynchronizationRegistry.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.transaction;
+package jakarta.transaction;
 
 public interface TransactionSynchronizationRegistry {
     Object getTransactionKey();
diff --git a/java/javax/transaction/UserTransaction.java b/java/jakarta/transaction/UserTransaction.java
similarity index 97%
rename from java/javax/transaction/UserTransaction.java
rename to java/jakarta/transaction/UserTransaction.java
index b0cce4a..cf770a6 100644
--- a/java/javax/transaction/UserTransaction.java
+++ b/java/jakarta/transaction/UserTransaction.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.transaction;
+package jakarta.transaction;
 
 public interface UserTransaction {
     void begin() throws NotSupportedException, SystemException;
diff --git a/java/org/apache/catalina/startup/WebAnnotationSet.java b/java/org/apache/catalina/startup/WebAnnotationSet.java
index 1a5b138..8d0073b 100644
--- a/java/org/apache/catalina/startup/WebAnnotationSet.java
+++ b/java/org/apache/catalina/startup/WebAnnotationSet.java
@@ -402,7 +402,7 @@ public class WebAnnotationSet {
             /*
              * General case. Also used for:
              * - javax.resource.cci.InteractionSpec
-             * - javax.transaction.UserTransaction
+             * - jakarta.transaction.UserTransaction
              */
 
             // resource-env-ref
diff --git a/java/org/apache/naming/TransactionRef.java b/java/org/apache/naming/TransactionRef.java
index fc1e14b..d772144 100644
--- a/java/org/apache/naming/TransactionRef.java
+++ b/java/org/apache/naming/TransactionRef.java
@@ -48,7 +48,7 @@ public class TransactionRef extends AbstractRef {
      * @param factoryLocation The factory location
      */
     public TransactionRef(String factory, String factoryLocation) {
-        super("javax.transaction.UserTransaction", factory, factoryLocation);
+        super("jakarta.transaction.UserTransaction", factory, factoryLocation);
     }
 
 
diff --git a/java/org/apache/tomcat/dbcp/dbcp2/managed/BasicManagedDataSource.java b/java/org/apache/tomcat/dbcp/dbcp2/managed/BasicManagedDataSource.java
index 654edc2..0db3393 100644
--- a/java/org/apache/tomcat/dbcp/dbcp2/managed/BasicManagedDataSource.java
+++ b/java/org/apache/tomcat/dbcp/dbcp2/managed/BasicManagedDataSource.java
@@ -21,8 +21,9 @@ import java.sql.SQLException;
 
 import javax.sql.DataSource;
 import javax.sql.XADataSource;
-import javax.transaction.TransactionManager;
-import javax.transaction.TransactionSynchronizationRegistry;
+
+import jakarta.transaction.TransactionManager;
+import jakarta.transaction.TransactionSynchronizationRegistry;
 
 import org.apache.tomcat.dbcp.dbcp2.BasicDataSource;
 import org.apache.tomcat.dbcp.dbcp2.ConnectionFactory;
diff --git a/java/org/apache/tomcat/dbcp/dbcp2/managed/DataSourceXAConnectionFactory.java b/java/org/apache/tomcat/dbcp/dbcp2/managed/DataSourceXAConnectionFactory.java
index 71a3f37..fdcc68b 100644
--- a/java/org/apache/tomcat/dbcp/dbcp2/managed/DataSourceXAConnectionFactory.java
+++ b/java/org/apache/tomcat/dbcp/dbcp2/managed/DataSourceXAConnectionFactory.java
@@ -26,10 +26,11 @@ import javax.sql.ConnectionEventListener;
 import javax.sql.PooledConnection;
 import javax.sql.XAConnection;
 import javax.sql.XADataSource;
-import javax.transaction.TransactionManager;
-import javax.transaction.TransactionSynchronizationRegistry;
 import javax.transaction.xa.XAResource;
 
+import jakarta.transaction.TransactionManager;
+import jakarta.transaction.TransactionSynchronizationRegistry;
+
 import org.apache.tomcat.dbcp.dbcp2.Utils;
 
 /**
diff --git a/java/org/apache/tomcat/dbcp/dbcp2/managed/LocalXAConnectionFactory.java b/java/org/apache/tomcat/dbcp/dbcp2/managed/LocalXAConnectionFactory.java
index d5e176a..5eda07d 100644
--- a/java/org/apache/tomcat/dbcp/dbcp2/managed/LocalXAConnectionFactory.java
+++ b/java/org/apache/tomcat/dbcp/dbcp2/managed/LocalXAConnectionFactory.java
@@ -21,11 +21,12 @@ import java.sql.Connection;
 import java.sql.SQLException;
 import java.util.Objects;
 
-import javax.transaction.TransactionManager;
 import javax.transaction.xa.XAException;
 import javax.transaction.xa.XAResource;
 import javax.transaction.xa.Xid;
 
+import jakarta.transaction.TransactionManager;
+
 import org.apache.tomcat.dbcp.dbcp2.ConnectionFactory;
 
 /**
diff --git a/java/org/apache/tomcat/dbcp/dbcp2/managed/TransactionContext.java b/java/org/apache/tomcat/dbcp/dbcp2/managed/TransactionContext.java
index 6266262..c9b5803 100644
--- a/java/org/apache/tomcat/dbcp/dbcp2/managed/TransactionContext.java
+++ b/java/org/apache/tomcat/dbcp/dbcp2/managed/TransactionContext.java
@@ -22,14 +22,15 @@ import java.sql.Connection;
 import java.sql.SQLException;
 import java.util.Objects;
 
-import javax.transaction.RollbackException;
-import javax.transaction.Status;
-import javax.transaction.Synchronization;
-import javax.transaction.SystemException;
-import javax.transaction.Transaction;
-import javax.transaction.TransactionSynchronizationRegistry;
 import javax.transaction.xa.XAResource;
 
+import jakarta.transaction.RollbackException;
+import jakarta.transaction.Status;
+import jakarta.transaction.Synchronization;
+import jakarta.transaction.SystemException;
+import jakarta.transaction.Transaction;
+import jakarta.transaction.TransactionSynchronizationRegistry;
+
 /**
  * TransactionContext represents the association between a single XAConnectionFactory and a Transaction. This context
  * contains a single shared connection which should be used by all ManagedConnections for the XAConnectionFactory, the
diff --git a/java/org/apache/tomcat/dbcp/dbcp2/managed/TransactionRegistry.java b/java/org/apache/tomcat/dbcp/dbcp2/managed/TransactionRegistry.java
index 6a01610..483fab6 100644
--- a/java/org/apache/tomcat/dbcp/dbcp2/managed/TransactionRegistry.java
+++ b/java/org/apache/tomcat/dbcp/dbcp2/managed/TransactionRegistry.java
@@ -23,12 +23,13 @@ import java.util.Map;
 import java.util.Objects;
 import java.util.WeakHashMap;
 
-import javax.transaction.SystemException;
-import javax.transaction.Transaction;
-import javax.transaction.TransactionManager;
-import javax.transaction.TransactionSynchronizationRegistry;
 import javax.transaction.xa.XAResource;
 
+import jakarta.transaction.SystemException;
+import jakarta.transaction.Transaction;
+import jakarta.transaction.TransactionManager;
+import jakarta.transaction.TransactionSynchronizationRegistry;
+
 import org.apache.tomcat.dbcp.dbcp2.DelegatingConnection;
 
 /**
diff --git a/res/checkstyle/jakarta-import-control.xml b/res/checkstyle/jakarta-import-control.xml
index 78416bd..3a548f2 100644
--- a/res/checkstyle/jakarta-import-control.xml
+++ b/res/checkstyle/jakarta-import-control.xml
@@ -65,4 +65,8 @@
       <allow pkg="jakarta.servlet.jsp"/>
     </subpackage>
   </subpackage>
+  <subpackage name="transaction">
+    <allow pkg="jakarta.transaction"/>
+    <allow pkg="javax.transaction.xa"/>
+  </subpackage>
 </import-control>
\ No newline at end of file
diff --git a/res/checkstyle/javax-import-control.xml b/res/checkstyle/javax-import-control.xml
index 8f68bc0..bc61d54 100644
--- a/res/checkstyle/javax-import-control.xml
+++ b/res/checkstyle/javax-import-control.xml
@@ -21,9 +21,6 @@
 
 <import-control pkg="javax">
   <allow pkg="java"/>
-  <subpackage name="transaction">
-    <allow pkg="javax.transaction"/>
-  </subpackage>
   <subpackage name="websocket">
     <allow pkg="javax.websocket"/>
   </subpackage>
diff --git a/res/checkstyle/org-import-control.xml b/res/checkstyle/org-import-control.xml
index 4ba6395..d0ad044 100644
--- a/res/checkstyle/org-import-control.xml
+++ b/res/checkstyle/org-import-control.xml
@@ -143,7 +143,8 @@
         <allow pkg="org.apache.tomcat.dbcp.dbcp2"/>
         <allow pkg="org.apache.tomcat.dbcp.pool2"/>
         <subpackage name="managed">
-          <allow pkg="javax.transaction"/>
+          <allow pkg="jakarta.transaction"/>
+          <allow pkg="javax.transaction.xa"/>
         </subpackage>
       </subpackage>
       <subpackage name="pool2">


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


[tomcat] 06/18: Rename "javax.mail.*" to "jakarta.mail.*"

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tomcat.git

commit 8cd528df42c420f1859c5075664218d6a2618166
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Thu Nov 28 13:44:50 2019 +0000

    Rename "javax.mail.*" to "jakarta.mail.*"
---
 java/{javax => jakarta}/mail/Authenticator.java             |  2 +-
 java/{javax => jakarta}/mail/PasswordAuthentication.java    |  2 +-
 java/{javax => jakarta}/mail/Session.java                   |  2 +-
 java/{javax => jakarta}/mail/internet/InternetAddress.java  |  2 +-
 java/{javax => jakarta}/mail/internet/MimeMessage.java      |  4 ++--
 java/{javax => jakarta}/mail/internet/MimePart.java         |  2 +-
 .../mail/internet/MimePartDataSource.java                   |  2 +-
 java/org/apache/catalina/startup/WebAnnotationSet.java      |  2 +-
 java/org/apache/naming/factory/MailSessionFactory.java      | 11 ++++++-----
 java/org/apache/naming/factory/ResourceFactory.java         |  4 ++--
 java/org/apache/naming/factory/SendMailFactory.java         | 13 +++++++------
 res/checkstyle/jakarta-import-control.xml                   |  3 +++
 res/checkstyle/javax-import-control.xml                     |  3 ---
 res/checkstyle/org-import-control.xml                       |  2 +-
 webapps/docs/config/systemprops.xml                         |  4 ++--
 webapps/docs/jndi-resources-howto.xml                       | 12 ++++++------
 16 files changed, 36 insertions(+), 34 deletions(-)

diff --git a/java/javax/mail/Authenticator.java b/java/jakarta/mail/Authenticator.java
similarity index 97%
rename from java/javax/mail/Authenticator.java
rename to java/jakarta/mail/Authenticator.java
index 78df841..6586675 100644
--- a/java/javax/mail/Authenticator.java
+++ b/java/jakarta/mail/Authenticator.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.mail;
+package jakarta.mail;
 
 public class Authenticator {
     protected PasswordAuthentication getPasswordAuthentication() {
diff --git a/java/javax/mail/PasswordAuthentication.java b/java/jakarta/mail/PasswordAuthentication.java
similarity index 97%
rename from java/javax/mail/PasswordAuthentication.java
rename to java/jakarta/mail/PasswordAuthentication.java
index d5d9411..7be7b29 100644
--- a/java/javax/mail/PasswordAuthentication.java
+++ b/java/jakarta/mail/PasswordAuthentication.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.mail;
+package jakarta.mail;
 
 @SuppressWarnings("unused") // Dummy implementation
 public class PasswordAuthentication {
diff --git a/java/javax/mail/Session.java b/java/jakarta/mail/Session.java
similarity index 98%
rename from java/javax/mail/Session.java
rename to java/jakarta/mail/Session.java
index a95a11b..d638f81 100644
--- a/java/javax/mail/Session.java
+++ b/java/jakarta/mail/Session.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.mail;
+package jakarta.mail;
 
 import java.util.Properties;
 
diff --git a/java/javax/mail/internet/InternetAddress.java b/java/jakarta/mail/internet/InternetAddress.java
similarity index 96%
rename from java/javax/mail/internet/InternetAddress.java
rename to java/jakarta/mail/internet/InternetAddress.java
index 4daa35d..aa1ce38 100644
--- a/java/javax/mail/internet/InternetAddress.java
+++ b/java/jakarta/mail/internet/InternetAddress.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.mail.internet;
+package jakarta.mail.internet;
 
 @SuppressWarnings("unused") // Dummy implementation
 public class InternetAddress {
diff --git a/java/javax/mail/internet/MimeMessage.java b/java/jakarta/mail/internet/MimeMessage.java
similarity index 95%
rename from java/javax/mail/internet/MimeMessage.java
rename to java/jakarta/mail/internet/MimeMessage.java
index 2587730..08cdb80 100644
--- a/java/javax/mail/internet/MimeMessage.java
+++ b/java/jakarta/mail/internet/MimeMessage.java
@@ -14,9 +14,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.mail.internet;
+package jakarta.mail.internet;
 
-import javax.mail.Session;
+import jakarta.mail.Session;
 
 @SuppressWarnings("unused") // Dummy implementation
 public class MimeMessage implements MimePart {
diff --git a/java/javax/mail/internet/MimePart.java b/java/jakarta/mail/internet/MimePart.java
similarity index 96%
rename from java/javax/mail/internet/MimePart.java
rename to java/jakarta/mail/internet/MimePart.java
index 4b57b20..7591634 100644
--- a/java/javax/mail/internet/MimePart.java
+++ b/java/jakarta/mail/internet/MimePart.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.mail.internet;
+package jakarta.mail.internet;
 
 public interface MimePart {
     // Dummy implementation
diff --git a/java/javax/mail/internet/MimePartDataSource.java b/java/jakarta/mail/internet/MimePartDataSource.java
similarity index 96%
rename from java/javax/mail/internet/MimePartDataSource.java
rename to java/jakarta/mail/internet/MimePartDataSource.java
index 28a3f39..a86bae5 100644
--- a/java/javax/mail/internet/MimePartDataSource.java
+++ b/java/jakarta/mail/internet/MimePartDataSource.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.mail.internet;
+package jakarta.mail.internet;
 
 @SuppressWarnings("unused") // Dummy implementation
 public class MimePartDataSource {
diff --git a/java/org/apache/catalina/startup/WebAnnotationSet.java b/java/org/apache/catalina/startup/WebAnnotationSet.java
index 6921023..bbca47d 100644
--- a/java/org/apache/catalina/startup/WebAnnotationSet.java
+++ b/java/org/apache/catalina/startup/WebAnnotationSet.java
@@ -360,7 +360,7 @@ public class WebAnnotationSet {
                 type.equals("javax.jms.ConnectionFactory") ||
                 type.equals("javax.jms.QueueConnectionFactory") ||
                 type.equals("javax.jms.TopicConnectionFactory") ||
-                type.equals("javax.mail.Session") ||
+                type.equals("jakarta.mail.Session") ||
                 type.equals("java.net.URL") ||
                 type.equals("javax.resource.cci.ConnectionFactory") ||
                 type.equals("org.omg.CORBA_2_3.ORB") ||
diff --git a/java/org/apache/naming/factory/MailSessionFactory.java b/java/org/apache/naming/factory/MailSessionFactory.java
index fc87930..9259d6d 100644
--- a/java/org/apache/naming/factory/MailSessionFactory.java
+++ b/java/org/apache/naming/factory/MailSessionFactory.java
@@ -23,15 +23,16 @@ import java.util.Enumeration;
 import java.util.Hashtable;
 import java.util.Properties;
 
-import javax.mail.Authenticator;
-import javax.mail.PasswordAuthentication;
-import javax.mail.Session;
 import javax.naming.Context;
 import javax.naming.Name;
 import javax.naming.RefAddr;
 import javax.naming.Reference;
 import javax.naming.spi.ObjectFactory;
 
+import jakarta.mail.Authenticator;
+import jakarta.mail.PasswordAuthentication;
+import jakarta.mail.Session;
+
 /**
  * <p>Factory class that creates a JNDI named JavaMail Session factory,
  * which can be used for managing inbound and outbound electronic mail
@@ -49,7 +50,7 @@ import javax.naming.spi.ObjectFactory;
  * configuration file.  An example of factory configuration is:</p>
  * <pre>
  * &lt;Resource name="mail/smtp" auth="CONTAINER"
- *           type="javax.mail.Session"/&gt;
+ *           type="jakarta.mail.Session"/&gt;
  * &lt;ResourceParams name="mail/smtp"&gt;
  *   &lt;parameter&gt;
  *     &lt;name&gt;factory&lt;/name&gt;
@@ -70,7 +71,7 @@ public class MailSessionFactory implements ObjectFactory {
     /**
      * The Java type for which this factory knows how to create objects.
      */
-    protected static final String factoryType = "javax.mail.Session";
+    protected static final String factoryType = "jakarta.mail.Session";
 
 
     /**
diff --git a/java/org/apache/naming/factory/ResourceFactory.java b/java/org/apache/naming/factory/ResourceFactory.java
index a458315..00c3b8b 100644
--- a/java/org/apache/naming/factory/ResourceFactory.java
+++ b/java/org/apache/naming/factory/ResourceFactory.java
@@ -54,9 +54,9 @@ public class ResourceFactory extends FactoryBase {
                 ex.initCause(e);
                 throw ex;
             }
-        } else if (ref.getClassName().equals("javax.mail.Session")) {
+        } else if (ref.getClassName().equals("jakarta.mail.Session")) {
             String javaxMailSessionFactoryClassName =
-                System.getProperty("javax.mail.Session.Factory",
+                System.getProperty("jakarta.mail.Session.Factory",
                         "org.apache.naming.factory.MailSessionFactory");
             try {
                 factory = (ObjectFactory) Class.forName(
diff --git a/java/org/apache/naming/factory/SendMailFactory.java b/java/org/apache/naming/factory/SendMailFactory.java
index 882cc4f..7395d44 100644
--- a/java/org/apache/naming/factory/SendMailFactory.java
+++ b/java/org/apache/naming/factory/SendMailFactory.java
@@ -23,16 +23,17 @@ import java.util.Enumeration;
 import java.util.Hashtable;
 import java.util.Properties;
 
-import javax.mail.Session;
-import javax.mail.internet.InternetAddress;
-import javax.mail.internet.MimeMessage;
-import javax.mail.internet.MimePartDataSource;
 import javax.naming.Context;
 import javax.naming.Name;
 import javax.naming.RefAddr;
 import javax.naming.Reference;
 import javax.naming.spi.ObjectFactory;
 
+import jakarta.mail.Session;
+import jakarta.mail.internet.InternetAddress;
+import jakarta.mail.internet.MimeMessage;
+import jakarta.mail.internet.MimePartDataSource;
+
 /**
  * Factory class that creates a JNDI named javamail MimePartDataSource
  * object which can be used for sending email using SMTP.
@@ -43,7 +44,7 @@ import javax.naming.spi.ObjectFactory;
  * Example:
  * <pre>
  * &lt;Resource name="mail/send" auth="CONTAINER"
- *           type="javax.mail.internet.MimePartDataSource"/&gt;
+ *           type="jakarta.mail.internet.MimePartDataSource"/&gt;
  * &lt;ResourceParams name="mail/send"&gt;
  *   &lt;parameter&gt;&lt;name&gt;factory&lt;/name&gt;
  *     &lt;value&gt;org.apache.naming.factory.SendMailFactory&lt;/value&gt;
@@ -76,7 +77,7 @@ public class SendMailFactory implements ObjectFactory
 {
     // The class name for the javamail MimeMessageDataSource
     protected static final String DataSourceClassName =
-        "javax.mail.internet.MimePartDataSource";
+        "jakarta.mail.internet.MimePartDataSource";
 
     @Override
     public Object getObjectInstance(Object refObj, Name name, Context ctx,
diff --git a/res/checkstyle/jakarta-import-control.xml b/res/checkstyle/jakarta-import-control.xml
index 0acf63d..cc86b88 100644
--- a/res/checkstyle/jakarta-import-control.xml
+++ b/res/checkstyle/jakarta-import-control.xml
@@ -30,4 +30,7 @@
   <subpackage name="el">
     <allow pkg="jakarta.el"/>
   </subpackage>
+  <subpackage name="mail">
+    <allow pkg="jakarta.mail"/>
+  </subpackage>
 </import-control>
\ No newline at end of file
diff --git a/res/checkstyle/javax-import-control.xml b/res/checkstyle/javax-import-control.xml
index b843edd..b7906af 100644
--- a/res/checkstyle/javax-import-control.xml
+++ b/res/checkstyle/javax-import-control.xml
@@ -21,9 +21,6 @@
 
 <import-control pkg="javax">
   <allow pkg="java"/>
-  <subpackage name="mail">
-    <allow pkg="javax.mail"/>
-  </subpackage>
   <subpackage name="persistence">
     <allow pkg="javax.persistence"/>
   </subpackage>
diff --git a/res/checkstyle/org-import-control.xml b/res/checkstyle/org-import-control.xml
index df2f563..a76bb1c 100644
--- a/res/checkstyle/org-import-control.xml
+++ b/res/checkstyle/org-import-control.xml
@@ -118,7 +118,7 @@
     <allow pkg="org.apache.juli"/>
   </subpackage>
   <subpackage name="naming">
-    <allow pkg="javax.mail"/>
+    <allow pkg="jakarta.mail"/>
     <allow pkg="javax.wsdl"/>
     <allow pkg="org.apache.juli"/>
     <allow pkg="org.apache.naming"/>
diff --git a/webapps/docs/config/systemprops.xml b/webapps/docs/config/systemprops.xml
index ff25981..9294817 100644
--- a/webapps/docs/config/systemprops.xml
+++ b/webapps/docs/config/systemprops.xml
@@ -580,9 +580,9 @@
       <a href="https://commons.apache.org/dbcp">Apache Commons DBCP 2</a>.</p>
     </property>
 
-    <property name="javax.mail.Session.Factory">
+    <property name="jakarta.mail.Session.Factory">
       <p>The class name of the factory to use to create resources of type
-      <code>javax.mail.Session</code>. If not specified the default of
+      <code>jakarta.mail.Session</code>. If not specified the default of
       <code>org.apache.naming.factory.MailSessionFactory</code> is used.</p>
     </property>
 
diff --git a/webapps/docs/jndi-resources-howto.xml b/webapps/docs/jndi-resources-howto.xml
index fc5c0aa..91c03cb 100644
--- a/webapps/docs/jndi-resources-howto.xml
+++ b/webapps/docs/jndi-resources-howto.xml
@@ -508,7 +508,7 @@ public class MyBean2 {
     (including the name of the SMTP host to be used for message sending).</p>
 
     <p>Tomcat includes a standard resource factory that will create
-    <code>javax.mail.Session</code> session instances for you, already
+    <code>jakarta.mail.Session</code> session instances for you, already
     configured to connect to an SMTP server.
     In this way, the application is totally insulated from changes in the
     email server configuration environment - it simply asks for, and receives,
@@ -527,7 +527,7 @@ public class MyBean2 {
     might look like this:</p>
 <source><![CDATA[<resource-ref>
   <description>
-    Resource reference to a factory for javax.mail.Session
+    Resource reference to a factory for jakarta.mail.Session
     instances that may be used for sending electronic mail
     messages, preconfigured to connect to the appropriate
     SMTP server.
@@ -536,7 +536,7 @@ public class MyBean2 {
     mail/Session
   </res-ref-name>
   <res-type>
-    javax.mail.Session
+    jakarta.mail.Session
   </res-type>
   <res-auth>
     Container
@@ -580,7 +580,7 @@ Transport.send(message);]]></source>
 <source><![CDATA[<Context ...>
   ...
   <Resource name="mail/Session" auth="Container"
-            type="javax.mail.Session"
+            type="jakarta.mail.Session"
             mail.smtp.host="localhost"/>
   ...
 </Context>]]></source>
@@ -592,7 +592,7 @@ Transport.send(message);]]></source>
 
     <p>Additional resource attributes and values will be converted to properties
     and values and passed to
-    <code>javax.mail.Session.getInstance(java.util.Properties)</code> as part of
+    <code>jakarta.mail.Session.getInstance(java.util.Properties)</code> as part of
     the <code>java.util.Properties</code> collection. In addition to the
     properties defined in Annex A of the JavaMail specification, individual
     providers may also support additional properties.
@@ -601,7 +601,7 @@ Transport.send(message);]]></source>
     <p>If the resource is configured with a <code>password</code> attribute and
     either a <code>mail.smtp.user</code> or <code>mail.user</code> attribute
     then Tomcat&apos;s resource factory will configure and add a
-    <code>javax.mail.Authenticator</code> to the mail session.</p>
+    <code>jakarta.mail.Authenticator</code> to the mail session.</p>
 
     <h5>4.  Install the JavaMail libraries</h5>
 


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


[tomcat] 01/18: First pass at version updates for Tomcat 10.0.0.x

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tomcat.git

commit fabe5e7aedb8c5b90ae0e924a060384d138e3976
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Mon Jan 13 11:00:04 2020 +0000

    First pass at version updates for Tomcat 10.0.0.x
---
 build.properties.default |  4 +--
 build.xml                | 90 +++++++++++++++++++++++++-----------------------
 2 files changed, 49 insertions(+), 45 deletions(-)

diff --git a/build.properties.default b/build.properties.default
index ffe38de..8986247 100644
--- a/build.properties.default
+++ b/build.properties.default
@@ -23,9 +23,9 @@
 # -----------------------------------------------------------------------------
 
 # ----- Version Control Flags -----
-version.major=9
+version.major=10
 version.minor=0
-version.build=31
+version.build=0
 version.patch=0
 version.suffix=-dev
 
diff --git a/build.xml b/build.xml
index fbe0311..4141d0a 100644
--- a/build.xml
+++ b/build.xml
@@ -44,22 +44,26 @@
   <property name="project"               value="apache-tomcat" />
 
   <!-- Version numbers -->
-  <property name="version"               value="${version.major}.${version.minor}.${version.build}${version.suffix}" />
+  <property name="version"               value="${version.major}.${version.minor}.${version.build}.${version.patch}${version.suffix}" />
   <property name="version.number"        value="${version.major}.${version.minor}.${version.build}.${version.patch}" />
   <property name="version.major.minor"   value="${version.major}.${version.minor}" />
 
   <!-- constant to declare a file binary for md5sum -->
   <property name="md5sum.binary-prefix"  value=" *" />
 
-  <!-- Exact spec versions (for the manifests) -->
-  <property name="servlet.revision"      value="FR" />
-  <property name="jsp.revision"          value="FR" />
-  <property name="el.revision"           value="FR" />
-  <property name="websocket.revision"    value="FR" />
-  <!-- MR B but this was first 1.1 release so use FR -->
-  <property name="jaspic.revision"       value="FR" />
-  <!-- MR 3 but this was first 1.3 release so use FR -->
-  <property name="annotation.revision"   value="FR" />
+  <!-- Exact spec versions (for the manifests etc.) -->
+  <property name="servlet.spec.version"    value="5.0" />
+  <property name="servlet.revision"        value="M1" />
+  <property name="jsp.spec.version"        value="3.0" />
+  <property name="jsp.revision"            value="M1" />
+  <property name="el.spec.version"         value="4.0" />
+  <property name="el.revision"             value="M1" />
+  <property name="websocket.spec.version"  value="2.0" />
+  <property name="websocket.revision"      value="M1" />
+  <property name="jaspic.spec.version"     value="2.0" />
+  <property name="jaspic.revision"         value="M1" />
+  <property name="annotation.spec.version" value="2.0" />
+  <property name="annotation.revision"     value="M1" />
 
   <!-- Release artifact base names -->
   <property name="final.name"            value="${project}-${version}" />
@@ -90,7 +94,7 @@
   <!-- build output directory for jdbc-pool -->
   <property name="tomcat.pool"           value="${tomcat.output}/jdbc-pool"/>
 
-  <!-- Servlet 4.0 spec requires Java 8+ -->
+  <!-- Jakarta EE 9 specs requires Java 8+ -->
   <property name="compile.source" value="8"/>
   <property name="compile.target" value="8"/>
   <property name="compile.release" value="8"/>
@@ -766,14 +770,14 @@
   </target>
 
   <target name="package" depends="compile,build-manifests,build-bnd" >
-    <!-- Common Annotations 1.3 JAR File -->
+    <!-- Common Annotations JAR File -->
     <jarIt jarfile="${annotations-api.jar}"
       filesDir="${tomcat.classes}"
       filesId="files.annotations-api"
       manifest="${tomcat.manifests}/annotations-api.jar.manifest"
       addOSGi="true" />
 
-    <!-- Servlet 4.0 Implementation JAR File -->
+    <!-- Servlet Implementation JAR File -->
     <jarIt jarfile="${servlet-api.jar}"
       filesDir="${tomcat.classes}"
       filesId="files.servlet-api"
@@ -782,35 +786,35 @@
       license="${tomcat.manifests}/servlet-api.jar.license"
       addOSGi="true" />
 
-    <!-- JSP 2.3 Implementation JAR File -->
+    <!-- JSP Implementation JAR File -->
     <jarIt jarfile="${jsp-api.jar}"
       filesDir="${tomcat.classes}"
       filesId="files.jsp-api"
       manifest="${tomcat.manifests}/jsp-api.jar.manifest"
       addOSGi="true" />
 
-    <!-- EL 3.0 Implementation JAR File -->
+    <!-- EL Implementation JAR File -->
     <jarIt jarfile="${el-api.jar}"
       filesDir="${tomcat.classes}"
       filesId="files.el-api"
       manifest="${tomcat.manifests}/el-api.jar.manifest"
       addOSGi="true" />
 
-    <!-- WebSocket 1.1 API JAR File -->
+    <!-- WebSocket API JAR File -->
     <jarIt jarfile="${websocket-api.jar}"
       filesDir="${tomcat.classes}"
       filesId="files.websocket-api"
       manifest="${tomcat.manifests}/websocket-api.jar.manifest"
       addOSGi="true" />
 
-    <!-- JASPIC 1.1 API JAR File -->
+    <!-- JASPIC API JAR File -->
     <jarIt jarfile="${jaspic-api.jar}"
       filesDir="${tomcat.classes}"
       filesId="files.jaspic-api"
       manifest="${tomcat.manifests}/jaspic-api.jar.manifest"
       addOSGi="true" />
 
-    <!-- WebSocket 1.1 implementation JAR File -->
+    <!-- WebSocket implementation JAR File -->
     <jarIt jarfile="${tomcat-websocket.jar}"
       filesDir="${tomcat.classes}"
       filesId="files.tomcat-websocket"
@@ -1879,9 +1883,9 @@ Apache Tomcat ${version} native binaries for Win64 AMD64/EMT64 platform.
       sourcepath="${tomcat.dist}/src/java"
       destdir="${tomcat.dist}/webapps/docs/annotationapi"
       version="true"
-      windowtitle="Common Annotations 1.3 API Documentation - Apache Tomcat ${version}"
-      doctitle="Common Annotations 1.3 API - Apache Tomcat ${version}"
-      header="&lt;b&gt;Common Annotations 1.3 - Apache Tomcat ${version}&lt;/b&gt;"
+      windowtitle="Common Annotations ${annotation.spec.version} API Documentation - Apache Tomcat ${version}"
+      doctitle="Common Annotations ${annotation.spec.version} API - Apache Tomcat ${version}"
+      header="&lt;b&gt;Common Annotations ${annotation.spec.version} - Apache Tomcat ${version}&lt;/b&gt;"
       bottom="Copyright &amp;#169; 2000-${year} Apache Software Foundation. All Rights Reserved."
       encoding="UTF-8"
       docencoding="UTF-8"
@@ -1901,9 +1905,9 @@ Apache Tomcat ${version} native binaries for Win64 AMD64/EMT64 platform.
       sourcepath="${tomcat.dist}/src/java"
       destdir="${tomcat.dist}/webapps/docs/servletapi"
       version="true"
-      windowtitle="Servlet 4.0 API Documentation - Apache Tomcat ${version}"
-      doctitle="Servlet 4.0 API - Apache Tomcat ${version}"
-      header="&lt;b&gt;Servlet 4.0 - Apache Tomcat ${version}&lt;/b&gt;"
+      windowtitle="Servlet {servlet.spec.version} API Documentation - Apache Tomcat ${version}"
+      doctitle="Servlet {servlet.spec.version} API - Apache Tomcat ${version}"
+      header="&lt;b&gt;Servlet {servlet.spec.version} - Apache Tomcat ${version}&lt;/b&gt;"
       bottom="Copyright &amp;#169; 2000-${year} Apache Software Foundation. All Rights Reserved."
       encoding="UTF-8"
       docencoding="UTF-8"
@@ -1922,9 +1926,9 @@ Apache Tomcat ${version} native binaries for Win64 AMD64/EMT64 platform.
       sourcepath="${tomcat.dist}/src/java"
       destdir="${tomcat.dist}/webapps/docs/jspapi"
       version="true"
-      windowtitle="JSP 2.3 API Documentation - Apache Tomcat ${version}"
-      doctitle="JSP 2.3 API - Apache Tomcat ${version}"
-      header="&lt;b&gt;JSP 2.3 - Apache Tomcat ${version}&lt;/b&gt;"
+      windowtitle="JSP ${jsp.spec.version} API Documentation - Apache Tomcat ${version}"
+      doctitle="JSP ${jsp.spec.version} API - Apache Tomcat ${version}"
+      header="&lt;b&gt;JSP ${jsp.spec.version} - Apache Tomcat ${version}&lt;/b&gt;"
       bottom="Copyright &amp;#169; 2000-${year} Apache Software Foundation. All Rights Reserved."
       encoding="UTF-8"
       docencoding="UTF-8"
@@ -1943,9 +1947,9 @@ Apache Tomcat ${version} native binaries for Win64 AMD64/EMT64 platform.
       sourcepath="${tomcat.dist}/src/java"
       destdir="${tomcat.dist}/webapps/docs/elapi"
       version="true"
-      windowtitle="EL 3.0 API Documentation - Apache Tomcat ${version}"
-      doctitle="EL 3.0 API - Apache Tomcat ${version}"
-      header="&lt;b&gt;EL 3.0 - Apache Tomcat ${version}&lt;/b&gt;"
+      windowtitle="EL ${el.spec.version} API Documentation - Apache Tomcat ${version}"
+      doctitle="EL ${el.spec.version} API - Apache Tomcat ${version}"
+      header="&lt;b&gt;EL ${el.spec.version} - Apache Tomcat ${version}&lt;/b&gt;"
       bottom="Copyright &amp;#169; 2000-${year} Apache Software Foundation. All Rights Reserved."
       encoding="UTF-8"
       docencoding="UTF-8"
@@ -1964,9 +1968,9 @@ Apache Tomcat ${version} native binaries for Win64 AMD64/EMT64 platform.
       sourcepath="${tomcat.dist}/src/java"
       destdir="${tomcat.dist}/webapps/docs/websocketapi"
       version="true"
-      windowtitle="WebSocket 1.1 API Documentation - Apache Tomcat ${version}"
-      doctitle="WebSocket 1.1 API - Apache Tomcat ${version}"
-      header="&lt;b&gt;WebSocket 1.1 - Apache Tomcat ${version}&lt;/b&gt;"
+      windowtitle="WebSocket ${websocket.spec.version} API Documentation - Apache Tomcat ${version}"
+      doctitle="WebSocket ${websocket.spec.version} API - Apache Tomcat ${version}"
+      header="&lt;b&gt;WebSocket ${websocket.spec.version} - Apache Tomcat ${version}&lt;/b&gt;"
       bottom="Copyright &amp;#169; 2000-${year} Apache Software Foundation. All Rights Reserved."
       encoding="UTF-8"
       docencoding="UTF-8"
@@ -1985,9 +1989,9 @@ Apache Tomcat ${version} native binaries for Win64 AMD64/EMT64 platform.
       sourcepath="${tomcat.dist}/src/java"
       destdir="${tomcat.dist}/webapps/docs/jaspicapi"
       version="true"
-      windowtitle="JASPIC 1.1 API Documentation - Apache Tomcat ${version}"
-      doctitle="JASPIC 1.1 API - Apache Tomcat ${version}"
-      header="&lt;b&gt;JASPIC 1.1 - Apache Tomcat ${version}&lt;/b&gt;"
+      windowtitle="JASPIC ${jaspic.spec.version} API Documentation - Apache Tomcat ${version}"
+      doctitle="JASPIC ${jaspic.spec.version} API - Apache Tomcat ${version}"
+      header="&lt;b&gt;JASPIC ${jaspic.spec.version} - Apache Tomcat ${version}&lt;/b&gt;"
       bottom="Copyright &amp;#169; 2000-${year} Apache Software Foundation. All Rights Reserved."
       encoding="UTF-8"
       docencoding="UTF-8"
@@ -2589,13 +2593,13 @@ skip.installer property in build.properties" />
 
     <mkdir dir="${tomcat.src.jars}" />
 
-    <!-- Common Annotations 1.3 JAR File -->
+    <!-- Common Annotations JAR File -->
     <jarIt jarfile="${annotations-api-src.jar}"
       filesDir="java"
       filesId="files.annotations-api"
       manifest="${tomcat.manifests}/annotations-api.jar.manifest" />
 
-    <!-- Servlet 4.0 Implementation JAR File -->
+    <!-- Servlet Implementation JAR File -->
     <jarIt jarfile="${servlet-api-src.jar}"
       filesDir="java"
       filesId="files.servlet-api"
@@ -2603,7 +2607,7 @@ skip.installer property in build.properties" />
       notice="${tomcat.manifests}/servlet-api.jar.notice"
       license="${tomcat.manifests}/servlet-api.jar.license" />
 
-    <!-- JSP 2.3 Implementation JAR File -->
+    <!-- JSP Implementation JAR File -->
     <jarIt jarfile="${jsp-api-src.jar}"
       filesDir="java"
       filesId="files.jsp-api"
@@ -2611,24 +2615,24 @@ skip.installer property in build.properties" />
       notice="${tomcat.manifests}/jsp-api.jar.notice"
       license="${tomcat.manifests}/jsp-api.jar.license" />
 
-    <!-- JSP EL 3.0 Implementation JAR File -->
+    <!-- JSP EL Implementation JAR File -->
     <jarIt jarfile="${el-api-src.jar}"
       filesDir="java"
       filesId="files.el-api"
       manifest="${tomcat.manifests}/el-api.jar.manifest" />
 
-    <!-- WebSocket 1.1 API JAR File -->
+    <!-- WebSocket API JAR File -->
     <jarIt jarfile="${websocket-api-src.jar}"
       filesDir="java"
       filesId="files.websocket-api"
       manifest="${tomcat.manifests}/websocket-api.jar.manifest" />
 
-    <!-- WebSocket 1.1 implementation JAR File -->
+    <!-- WebSocket implementation JAR File -->
     <jarIt jarfile="${tomcat-websocket-src.jar}"
       filesDir="java"
       filesId="files.tomcat-websocket" />
 
-    <!-- JASPIC 1.1 API JAR File -->
+    <!-- JASPIC API JAR File -->
     <jarIt jarfile="${jaspic-api-src.jar}"
       filesDir="java"
       filesId="files.jaspic-api"


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


[tomcat] 03/18: Rename javax.ejb.* to jakarta.ejb.*

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tomcat.git

commit c91bf7fcaf3d2b94d6940687335576de33f05134
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Wed Nov 27 23:31:41 2019 +0000

    Rename javax.ejb.* to jakarta.ejb.*
---
 java/{javax => jakarta}/ejb/EJB.java               |  2 +-
 java/{javax => jakarta}/ejb/EJBs.java              |  2 +-
 .../catalina/core/DefaultInstanceManager.java      |  4 +-
 java/org/apache/naming/factory/EjbFactory.java     |  2 +-
 res/checkstyle/jakarta-import-control.xml          | 50 +---------------------
 res/checkstyle/javax-import-control.xml            |  6 ---
 res/checkstyle/org-import-control.xml              |  8 ++--
 7 files changed, 11 insertions(+), 63 deletions(-)

diff --git a/java/javax/ejb/EJB.java b/java/jakarta/ejb/EJB.java
similarity index 98%
rename from java/javax/ejb/EJB.java
rename to java/jakarta/ejb/EJB.java
index 2b16782..65f9e8f 100644
--- a/java/javax/ejb/EJB.java
+++ b/java/jakarta/ejb/EJB.java
@@ -16,7 +16,7 @@
  */
 
 
-package javax.ejb;
+package jakarta.ejb;
 
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;
diff --git a/java/javax/ejb/EJBs.java b/java/jakarta/ejb/EJBs.java
similarity index 98%
rename from java/javax/ejb/EJBs.java
rename to java/jakarta/ejb/EJBs.java
index b716915..4a9321c 100644
--- a/java/javax/ejb/EJBs.java
+++ b/java/jakarta/ejb/EJBs.java
@@ -16,7 +16,7 @@
  */
 
 
-package javax.ejb;
+package jakarta.ejb;
 
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;
diff --git a/java/org/apache/catalina/core/DefaultInstanceManager.java b/java/org/apache/catalina/core/DefaultInstanceManager.java
index 18c98d4..3f46ee1 100644
--- a/java/org/apache/catalina/core/DefaultInstanceManager.java
+++ b/java/org/apache/catalina/core/DefaultInstanceManager.java
@@ -35,7 +35,6 @@ import java.util.Map;
 import java.util.Properties;
 import java.util.Set;
 
-import javax.ejb.EJB;
 import javax.naming.Context;
 import javax.naming.NamingException;
 import javax.persistence.PersistenceContext;
@@ -45,6 +44,7 @@ import javax.xml.ws.WebServiceRef;
 import jakarta.annotation.PostConstruct;
 import jakarta.annotation.PreDestroy;
 import jakarta.annotation.Resource;
+import jakarta.ejb.EJB;
 
 import org.apache.catalina.ContainerServlet;
 import org.apache.catalina.Globals;
@@ -75,7 +75,7 @@ public class DefaultInstanceManager implements InstanceManager {
     static {
         Class<?> clazz = null;
         try {
-            clazz = Class.forName("javax.ejb.EJB");
+            clazz = Class.forName("jakarta.ejb.EJB");
         } catch (ClassNotFoundException cnfe) {
             // Expected
         }
diff --git a/java/org/apache/naming/factory/EjbFactory.java b/java/org/apache/naming/factory/EjbFactory.java
index 4f593a5..0820e16 100644
--- a/java/org/apache/naming/factory/EjbFactory.java
+++ b/java/org/apache/naming/factory/EjbFactory.java
@@ -41,7 +41,7 @@ public class EjbFactory extends FactoryBase {
 
         ObjectFactory factory;
         String javaxEjbFactoryClassName = System.getProperty(
-                "javax.ejb.Factory", Constants.OPENEJB_EJB_FACTORY);
+                "jakarta.ejb.Factory", Constants.OPENEJB_EJB_FACTORY);
         try {
             factory = (ObjectFactory)
                 Class.forName(javaxEjbFactoryClassName).getConstructor().newInstance();
diff --git a/res/checkstyle/jakarta-import-control.xml b/res/checkstyle/jakarta-import-control.xml
index 26ec8b0..580ce0e 100644
--- a/res/checkstyle/jakarta-import-control.xml
+++ b/res/checkstyle/jakarta-import-control.xml
@@ -25,53 +25,7 @@
     <allow pkg="jakarta.annotation"/>
   </subpackage>
   <subpackage name="ejb">
-    <allow pkg="javax.ejb"/>
-  </subpackage>
-  <subpackage name="el">
-    <allow pkg="javax.el"/>
-  </subpackage>
-  <subpackage name="mail">
-    <allow pkg="javax.mail"/>
-  </subpackage>
-  <subpackage name="persistence">
-    <allow pkg="javax.persistence"/>
-  </subpackage>
-  <subpackage name="security">
-    <subpackage name="auth">
-      <subpackage name="message">
-        <allow pkg="javax.crypto" />
-        <allow class="javax.security.auth.Subject"/>
-        <allow pkg="javax.security.auth.callback"/>
-        <allow pkg="javax.security.auth.login"/>
-        <allow pkg="javax.security.auth.x500"/>
-        <disallow pkg="javax.security.auth.message.callback" local-only="true"/>
-        <disallow pkg="javax.security.auth.message.config" local-only="true"/>
-        <disallow pkg="javax.security.auth.message.module" local-only="true"/>
-        <subpackage name="config">
-        <allow class="javax.security.auth.AuthPermission"/>
-          <allow pkg="javax.security.auth.message"/>
-        </subpackage>
-        <subpackage name="module">
-          <allow pkg="javax.security.auth.message"/>
-        </subpackage>
-      </subpackage>
-    </subpackage>
-  </subpackage>
-  <subpackage name="servlet">
-    <allow pkg="javax.servlet"/>
-    <disallow pkg="javax.servlet.jsp" local-only="true"/>
-    <subpackage name="jsp">
-      <allow pkg="javax.el"/>
-      <allow pkg="javax.servlet.jsp"/>
-    </subpackage>
-  </subpackage>
-  <subpackage name="transaction">
-    <allow pkg="javax.transaction"/>
-  </subpackage>
-  <subpackage name="websocket">
-    <allow pkg="javax.websocket"/>
-  </subpackage>
-  <subpackage name="xml.ws">
-    <allow pkg="javax.xwl.ws"/>
+    <allow pkg="jakarta.ejb"/>
   </subpackage>
+
 </import-control>
\ No newline at end of file
diff --git a/res/checkstyle/javax-import-control.xml b/res/checkstyle/javax-import-control.xml
index 3ba050d..b6faa80 100644
--- a/res/checkstyle/javax-import-control.xml
+++ b/res/checkstyle/javax-import-control.xml
@@ -21,12 +21,6 @@
 
 <import-control pkg="javax">
   <allow pkg="java"/>
-  <subpackage name="annotation">
-    <allow pkg="jakarta.annotation"/>
-  </subpackage>
-  <subpackage name="ejb">
-    <allow pkg="javax.ejb"/>
-  </subpackage>
   <subpackage name="el">
     <allow pkg="javax.el"/>
   </subpackage>
diff --git a/res/checkstyle/org-import-control.xml b/res/checkstyle/org-import-control.xml
index 269e160..83605cd 100644
--- a/res/checkstyle/org-import-control.xml
+++ b/res/checkstyle/org-import-control.xml
@@ -37,7 +37,7 @@
   <allow pkg="org.ietf.jgss"/>
   <subpackage name="catalina">
     <allow pkg="jakarta.annotation"/>
-    <allow pkg="javax.ejb"/>
+    <allow pkg="jakarta.ejb"/>
     <allow pkg="javax.persistence"/>
     <allow pkg="javax.servlet"/>
     <allow pkg="org.apache.catalina"/>
@@ -51,7 +51,7 @@
       <allow pkg="org.apache.tools.ant"/>
       <allow class="org.apache.tomcat.util.Base64"/>
       <disallow pkg="jakarta.annotation"/>
-      <disallow pkg="javax.ejb"/>
+      <disallow pkg="jakarta.ejb"/>
       <disallow pkg="javax.persistence"/>
       <disallow pkg="javax.servlet"/>
       <disallow pkg="org.apache.coyote"/>
@@ -60,7 +60,7 @@
     </subpackage>
     <subpackage name="ha">
       <disallow pkg="jakarta.annotation"/>
-      <disallow pkg="javax.ejb"/>
+      <disallow pkg="jakarta.ejb"/>
       <disallow pkg="javax.persistence"/>
       <disallow pkg="org.apache.coyote"/>
       <disallow pkg="org.apache.naming"/>
@@ -73,7 +73,7 @@
     </subpackage>
     <subpackage name="tribes">
       <disallow pkg="jakarta.annotation"/>
-      <disallow pkg="javax.ejb"/>
+      <disallow pkg="jakarta.ejb"/>
       <disallow pkg="javax.persistence"/>
       <disallow pkg="javax.servlet"/>
       <disallow pkg="org\.apache\.catalina(?!\.tribes).*" regex="true"/>


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


[tomcat] 09/18: Rename "javax.servlet.*" to "jakartax.servlet.*" and fix tests

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tomcat.git

commit ab35110801998e4f2fa74c62263b0f8030f021d4
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Thu Nov 28 18:56:01 2019 +0000

    Rename "javax.servlet.*" to "jakartax.servlet.*" and fix tests
    
    Note: Tests that depend on JSTL have been ignored - look for comments containing "Jakarta EE / JSTL".
---
 build.xml                                          |  22 +--
 java/jakarta/el/CompositeELResolver.java           |   4 +-
 java/jakarta/el/ImportHandler.java                 |   6 +-
 java/{javax => jakarta}/servlet/AsyncContext.java  |  26 +--
 java/{javax => jakarta}/servlet/AsyncEvent.java    |   2 +-
 java/{javax => jakarta}/servlet/AsyncListener.java |   2 +-
 .../{javax => jakarta}/servlet/DispatcherType.java |   2 +-
 java/{javax => jakarta}/servlet/Filter.java        |   2 +-
 java/{javax => jakarta}/servlet/FilterChain.java   |   2 +-
 java/{javax => jakarta}/servlet/FilterConfig.java  |   2 +-
 .../servlet/FilterRegistration.java                |   2 +-
 java/{javax => jakarta}/servlet/GenericFilter.java |   2 +-
 .../{javax => jakarta}/servlet/GenericServlet.java |   4 +-
 .../servlet/HttpConstraintElement.java             |  10 +-
 .../servlet/HttpMethodConstraintElement.java       |   4 +-
 .../servlet/LocalStrings.properties                |   0
 .../servlet/LocalStrings_cs.properties             |   0
 .../servlet/LocalStrings_de.properties             |   0
 .../servlet/LocalStrings_es.properties             |   0
 .../servlet/LocalStrings_fr.properties             |   0
 .../servlet/LocalStrings_ja.properties             |   0
 .../servlet/LocalStrings_ko.properties             |   0
 .../servlet/LocalStrings_zh_CN.properties          |   0
 .../servlet/MultipartConfigElement.java            |   4 +-
 java/{javax => jakarta}/servlet/ReadListener.java  |   2 +-
 java/{javax => jakarta}/servlet/Registration.java  |   2 +-
 .../servlet/RequestDispatcher.java                 |  38 ++---
 java/{javax => jakarta}/servlet/Servlet.java       |   8 +-
 java/{javax => jakarta}/servlet/ServletConfig.java |   2 +-
 .../servlet/ServletContainerInitializer.java       |   8 +-
 .../{javax => jakarta}/servlet/ServletContext.java |  82 ++++-----
 .../servlet/ServletContextAttributeEvent.java      |   2 +-
 .../servlet/ServletContextAttributeListener.java   |   2 +-
 .../servlet/ServletContextEvent.java               |   2 +-
 .../servlet/ServletContextListener.java            |   2 +-
 .../servlet/ServletException.java                  |   2 +-
 .../servlet/ServletInputStream.java                |   2 +-
 .../servlet/ServletOutputStream.java               |   6 +-
 .../servlet/ServletRegistration.java               |   2 +-
 .../{javax => jakarta}/servlet/ServletRequest.java |   8 +-
 .../servlet/ServletRequestAttributeEvent.java      |   2 +-
 .../servlet/ServletRequestAttributeListener.java   |   2 +-
 .../servlet/ServletRequestEvent.java               |   2 +-
 .../servlet/ServletRequestListener.java            |   2 +-
 .../servlet/ServletRequestWrapper.java             |   6 +-
 .../servlet/ServletResponse.java                   |   2 +-
 .../servlet/ServletResponseWrapper.java            |   6 +-
 .../servlet/ServletSecurityElement.java            |   6 +-
 .../servlet/SessionCookieConfig.java               |   2 +-
 .../servlet/SessionTrackingMode.java               |   2 +-
 .../servlet/SingleThreadModel.java                 |   2 +-
 .../servlet/UnavailableException.java              |   2 +-
 java/{javax => jakarta}/servlet/WriteListener.java |   2 +-
 .../servlet/annotation/HandlesTypes.java           |   4 +-
 .../servlet/annotation/HttpConstraint.java         |  10 +-
 .../servlet/annotation/HttpMethodConstraint.java   |   8 +-
 .../servlet/annotation/MultipartConfig.java        |  10 +-
 .../servlet/annotation/ServletSecurity.java        |   4 +-
 .../servlet/annotation/WebFilter.java              |  12 +-
 .../servlet/annotation/WebInitParam.java           |   8 +-
 .../servlet/annotation/WebListener.java            |  16 +-
 .../servlet/annotation/WebServlet.java             |   6 +-
 .../servlet/descriptor/JspConfigDescriptor.java    |   2 +-
 .../descriptor/JspPropertyGroupDescriptor.java     |   2 +-
 .../servlet/descriptor/TaglibDescriptor.java       |   2 +-
 java/{javax => jakarta}/servlet/http/Cookie.java   |   4 +-
 .../servlet/http/HttpFilter.java                   |  12 +-
 .../servlet/http/HttpServlet.java                  |  38 ++---
 .../servlet/http/HttpServletMapping.java           |   6 +-
 .../servlet/http/HttpServletRequest.java           |   8 +-
 .../servlet/http/HttpServletRequestWrapper.java    |   8 +-
 .../servlet/http/HttpServletResponse.java          |   6 +-
 .../servlet/http/HttpServletResponseWrapper.java   |   6 +-
 .../servlet/http/HttpSession.java                  |   4 +-
 .../http/HttpSessionActivationListener.java        |   2 +-
 .../servlet/http/HttpSessionAttributeListener.java |   2 +-
 .../servlet/http/HttpSessionBindingEvent.java      |   2 +-
 .../servlet/http/HttpSessionBindingListener.java   |   2 +-
 .../servlet/http/HttpSessionContext.java           |   2 +-
 .../servlet/http/HttpSessionEvent.java             |   2 +-
 .../servlet/http/HttpSessionIdListener.java        |   6 +-
 .../servlet/http/HttpSessionListener.java          |   2 +-
 .../servlet/http/HttpUpgradeHandler.java           |   2 +-
 .../{javax => jakarta}/servlet/http/HttpUtils.java |   6 +-
 .../servlet/http/LocalStrings.properties           |   0
 .../servlet/http/LocalStrings_de.properties        |   0
 .../servlet/http/LocalStrings_es.properties        |   0
 .../servlet/http/LocalStrings_fr.properties        |   0
 .../servlet/http/LocalStrings_ja.properties        |   0
 .../servlet/http/LocalStrings_ko.properties        |   0
 .../servlet/http/LocalStrings_zh_CN.properties     |   0
 .../servlet/http/MappingMatch.java                 |   2 +-
 java/{javax => jakarta}/servlet/http/Part.java     |   4 +-
 .../servlet/http/PushBuilder.java                  |   2 +-
 .../servlet/http/WebConnection.java                |   6 +-
 java/{javax => jakarta}/servlet/http/package.html  |   2 +-
 java/{javax => jakarta}/servlet/jsp/ErrorData.java |   2 +-
 .../servlet/jsp/HttpJspPage.java                   |   8 +-
 .../servlet/jsp/JspApplicationContext.java         |   2 +-
 .../{javax => jakarta}/servlet/jsp/JspContext.java |   6 +-
 .../servlet/jsp/JspEngineInfo.java                 |   2 +-
 .../servlet/jsp/JspException.java                  |   2 +-
 .../{javax => jakarta}/servlet/jsp/JspFactory.java |  14 +-
 java/{javax => jakarta}/servlet/jsp/JspPage.java   |   4 +-
 .../servlet/jsp/JspTagException.java               |   2 +-
 java/{javax => jakarta}/servlet/jsp/JspWriter.java |   2 +-
 .../servlet/jsp/PageContext.java                   |  40 ++---
 .../servlet/jsp/SkipPageException.java             |   8 +-
 .../servlet/jsp/el/ELException.java                |   2 +-
 .../servlet/jsp/el/ELParseException.java           |   2 +-
 .../servlet/jsp/el/Expression.java                 |   2 +-
 .../servlet/jsp/el/ExpressionEvaluator.java        |   2 +-
 .../servlet/jsp/el/FunctionMapper.java             |   2 +-
 .../servlet/jsp/el/ImplicitObjectELResolver.java   |  13 +-
 .../servlet/jsp/el/ScopedAttributeELResolver.java  |   7 +-
 .../servlet/jsp/el/VariableResolver.java           |   2 +-
 .../{javax => jakarta}/servlet/jsp/el/package.html |   0
 java/{javax => jakarta}/servlet/jsp/package.html   |   2 +-
 .../servlet/jsp/resources/jspxml.dtd               |   0
 .../servlet/jsp/resources/jspxml.xsd               |   0
 .../servlet/jsp/tagext/BodyContent.java            |   4 +-
 .../servlet/jsp/tagext/BodyTag.java                |   4 +-
 .../servlet/jsp/tagext/BodyTagSupport.java         |   6 +-
 .../servlet/jsp/tagext/DynamicAttributes.java      |   4 +-
 .../servlet/jsp/tagext/FunctionInfo.java           |   2 +-
 .../servlet/jsp/tagext/IterationTag.java           |   4 +-
 .../servlet/jsp/tagext/JspFragment.java            |  10 +-
 .../servlet/jsp/tagext/JspIdConsumer.java          |   2 +-
 .../servlet/jsp/tagext/JspTag.java                 |   2 +-
 .../servlet/jsp/tagext/PageData.java               |   2 +-
 .../servlet/jsp/tagext/SimpleTag.java              |  10 +-
 .../servlet/jsp/tagext/SimpleTagSupport.java       |   8 +-
 .../{javax => jakarta}/servlet/jsp/tagext/Tag.java |   6 +-
 .../servlet/jsp/tagext/TagAdapter.java             |   6 +-
 .../servlet/jsp/tagext/TagAttributeInfo.java       |   2 +-
 .../servlet/jsp/tagext/TagData.java                |   2 +-
 .../servlet/jsp/tagext/TagExtraInfo.java           |   2 +-
 .../servlet/jsp/tagext/TagFileInfo.java            |   2 +-
 .../servlet/jsp/tagext/TagInfo.java                |   2 +-
 .../servlet/jsp/tagext/TagLibraryInfo.java         |   6 +-
 .../servlet/jsp/tagext/TagLibraryValidator.java    |   2 +-
 .../servlet/jsp/tagext/TagSupport.java             |   6 +-
 .../servlet/jsp/tagext/TagVariableInfo.java        |   2 +-
 .../servlet/jsp/tagext/TryCatchFinally.java        |   2 +-
 .../servlet/jsp/tagext/ValidationMessage.java      |   2 +-
 .../servlet/jsp/tagext/VariableInfo.java           |   2 +-
 .../jsp/tagext/doc-files/BodyTagProtocol.gif       | Bin
 .../jsp/tagext/doc-files/IterationTagProtocol.gif  | Bin
 .../servlet/jsp/tagext/doc-files/TagProtocol.gif   | Bin
 .../jsp/tagext/doc-files/VariableInfo-1.gif        | Bin
 .../servlet/jsp/tagext/package.html                |   0
 java/{javax => jakarta}/servlet/package.html       |   2 +-
 .../servlet/resources/XMLSchema.dtd                |   0
 .../servlet/resources/datatypes.dtd                |   0
 .../servlet/resources/j2ee_1_4.xsd                 |   0
 .../servlet/resources/j2ee_web_services_1_1.xsd    |   0
 .../resources/j2ee_web_services_client_1_1.xsd     |   0
 .../servlet/resources/javaee_5.xsd                 |   0
 .../servlet/resources/javaee_6.xsd                 |   0
 .../servlet/resources/javaee_7.xsd                 |   0
 .../servlet/resources/javaee_8.xsd                 |   0
 .../servlet/resources/javaee_web_services_1_2.xsd  |   0
 .../servlet/resources/javaee_web_services_1_3.xsd  |   0
 .../servlet/resources/javaee_web_services_1_4.xsd  |   0
 .../resources/javaee_web_services_client_1_2.xsd   |   0
 .../resources/javaee_web_services_client_1_3.xsd   |   0
 .../resources/javaee_web_services_client_1_4.xsd   |   0
 .../servlet/resources/jsp_2_0.xsd                  |   0
 .../servlet/resources/jsp_2_1.xsd                  |   0
 .../servlet/resources/jsp_2_2.xsd                  |   0
 .../servlet/resources/jsp_2_3.xsd                  |   0
 .../servlet/resources/web-app_2_2.dtd              |   0
 .../servlet/resources/web-app_2_3.dtd              |   0
 .../servlet/resources/web-app_2_4.xsd              |   0
 .../servlet/resources/web-app_2_5.xsd              |   0
 .../servlet/resources/web-app_3_0.xsd              |   0
 .../servlet/resources/web-app_3_1.xsd              |   0
 .../servlet/resources/web-app_4_0.xsd              |   0
 .../servlet/resources/web-common_3_0.xsd           |   0
 .../servlet/resources/web-common_3_1.xsd           |   0
 .../servlet/resources/web-common_4_0.xsd           |   0
 .../servlet/resources/web-fragment_3_0.xsd         |   0
 .../servlet/resources/web-fragment_3_1.xsd         |   0
 .../servlet/resources/web-fragment_4_0.xsd         |   0
 .../servlet/resources/web-jsptaglibrary_1_1.dtd    |   0
 .../servlet/resources/web-jsptaglibrary_1_2.dtd    |   0
 .../servlet/resources/web-jsptaglibrary_2_0.xsd    |   0
 .../servlet/resources/web-jsptaglibrary_2_1.xsd    |   0
 java/{javax => jakarta}/servlet/resources/xml.xsd  |   0
 java/javax/websocket/server/HandshakeRequest.java  |   2 +-
 java/org/apache/catalina/AsyncDispatcher.java      |   6 +-
 java/org/apache/catalina/Authenticator.java        |   4 +-
 java/org/apache/catalina/Context.java              |  26 +--
 java/org/apache/catalina/Globals.java              |  10 +-
 java/org/apache/catalina/Manager.java              |  20 +--
 java/org/apache/catalina/Session.java              |   2 +-
 java/org/apache/catalina/Valve.java                |   2 +-
 java/org/apache/catalina/Wrapper.java              |   8 +-
 .../catalina/authenticator/AuthenticatorBase.java  |  16 +-
 .../catalina/authenticator/BasicAuthenticator.java |   4 +-
 .../authenticator/DigestAuthenticator.java         |   4 +-
 .../catalina/authenticator/FormAuthenticator.java  |   8 +-
 .../authenticator/NonLoginAuthenticator.java       |   2 +-
 .../catalina/authenticator/SSLAuthenticator.java   |   4 +-
 .../catalina/authenticator/SavedRequest.java       |   2 +-
 .../catalina/authenticator/SingleSignOn.java       |   4 +-
 .../catalina/authenticator/SingleSignOnEntry.java  |   2 +-
 .../authenticator/SpnegoAuthenticator.java         |   3 +-
 .../authenticator/jaspic/MessageInfoImpl.java      |   5 +-
 .../apache/catalina/connector/CoyoteAdapter.java   |  12 +-
 .../catalina/connector/CoyoteInputStream.java      |   4 +-
 .../catalina/connector/CoyoteOutputStream.java     |   4 +-
 .../org/apache/catalina/connector/InputBuffer.java |   2 +-
 .../apache/catalina/connector/OutputBuffer.java    |   4 +-
 java/org/apache/catalina/connector/Request.java    |  45 ++---
 .../apache/catalina/connector/RequestFacade.java   |  32 ++--
 java/org/apache/catalina/connector/Response.java   |  12 +-
 .../apache/catalina/connector/ResponseFacade.java  |   6 +-
 .../apache/catalina/core/ApplicationContext.java   |  45 ++---
 .../catalina/core/ApplicationContextFacade.java    |  22 +--
 .../catalina/core/ApplicationDispatcher.java       |  32 ++--
 .../catalina/core/ApplicationFilterChain.java      |  18 +-
 .../catalina/core/ApplicationFilterConfig.java     |  15 +-
 .../catalina/core/ApplicationFilterFactory.java    |   6 +-
 .../core/ApplicationFilterRegistration.java        |   4 +-
 .../catalina/core/ApplicationHttpRequest.java      |  24 +--
 .../catalina/core/ApplicationHttpResponse.java     |  10 +-
 .../apache/catalina/core/ApplicationMapping.java   |   4 +-
 java/org/apache/catalina/core/ApplicationPart.java |   2 +-
 .../catalina/core/ApplicationPushBuilder.java      |  10 +-
 .../apache/catalina/core/ApplicationRequest.java   |  10 +-
 .../apache/catalina/core/ApplicationResponse.java  |   8 +-
 .../core/ApplicationServletRegistration.java       |   6 +-
 .../core/ApplicationSessionCookieConfig.java       |   4 +-
 .../org/apache/catalina/core/AsyncContextImpl.java |  21 +--
 .../apache/catalina/core/AsyncListenerWrapper.java |   8 +-
 java/org/apache/catalina/core/StandardContext.java |  55 +++---
 .../apache/catalina/core/StandardContextValve.java |   6 +-
 .../apache/catalina/core/StandardEngineValve.java  |   2 +-
 .../apache/catalina/core/StandardHostValve.java    |  10 +-
 java/org/apache/catalina/core/StandardWrapper.java |  21 +--
 .../catalina/core/StandardWrapperFacade.java       |   4 +-
 .../apache/catalina/core/StandardWrapperValve.java |  12 +-
 .../catalina/filters/AddDefaultCharsetFilter.java  |  14 +-
 java/org/apache/catalina/filters/CorsFilter.java   |  28 ++--
 .../catalina/filters/CsrfPreventionFilter.java     |  18 +-
 .../catalina/filters/CsrfPreventionFilterBase.java |   8 +-
 .../org/apache/catalina/filters/ExpiresFilter.java |  22 +--
 .../catalina/filters/FailedRequestFilter.java      |  10 +-
 java/org/apache/catalina/filters/FilterBase.java   |   6 +-
 .../catalina/filters/HttpHeaderSecurityFilter.java |  12 +-
 .../apache/catalina/filters/RemoteAddrFilter.java  |   8 +-
 .../apache/catalina/filters/RemoteCIDRFilter.java  |  10 +-
 .../apache/catalina/filters/RemoteHostFilter.java  |   8 +-
 .../apache/catalina/filters/RemoteIpFilter.java    |  20 +--
 .../catalina/filters/RequestDumperFilter.java      |  16 +-
 .../org/apache/catalina/filters/RequestFilter.java |  12 +-
 .../catalina/filters/RestCsrfPreventionFilter.java |  16 +-
 .../catalina/filters/SessionInitializerFilter.java |  16 +-
 .../filters/SetCharacterEncodingFilter.java        |   8 +-
 .../apache/catalina/filters/WebdavFixFilter.java   |  14 +-
 java/org/apache/catalina/ha/ClusterSession.java    |   2 +-
 .../catalina/ha/context/ReplicatedContext.java     |   2 +-
 .../catalina/ha/session/JvmRouteBinderValve.java   |   2 +-
 .../apache/catalina/ha/tcp/ReplicationValve.java   |   2 +-
 .../catalina/loader/WebappClassLoaderBase.java     |  18 +-
 java/org/apache/catalina/loader/WebappLoader.java  |   3 +-
 .../apache/catalina/manager/DummyProxySession.java |   2 +-
 .../catalina/manager/HTMLManagerServlet.java       |  14 +-
 .../apache/catalina/manager/JMXProxyServlet.java   |   9 +-
 .../apache/catalina/manager/ManagerServlet.java    |  15 +-
 .../catalina/manager/StatusManagerServlet.java     |   9 +-
 .../apache/catalina/manager/StatusTransformer.java |   3 +-
 .../manager/host/HTMLHostManagerServlet.java       |   6 +-
 .../catalina/manager/host/HostManagerServlet.java  |  11 +-
 .../apache/catalina/manager/util/SessionUtils.java |   7 +-
 java/org/apache/catalina/mapper/Mapper.java        |   2 +-
 java/org/apache/catalina/mapper/MappingData.java   |   4 +-
 .../catalina/realm/JAASMemoryLoginModule.java      |   3 +-
 java/org/apache/catalina/realm/JAASRealm.java      |   3 +-
 java/org/apache/catalina/realm/RealmBase.java      |   4 +-
 .../catalina/security/SecurityClassLoad.java       |   2 +-
 .../org/apache/catalina/security/SecurityUtil.java |  13 +-
 java/org/apache/catalina/servlets/CGIServlet.java  |  18 +-
 .../apache/catalina/servlets/DefaultServlet.java   |  23 +--
 .../apache/catalina/servlets/WebdavServlet.java    |  13 +-
 java/org/apache/catalina/session/FileStore.java    |   2 +-
 .../apache/catalina/session/StandardManager.java   |   4 +-
 .../apache/catalina/session/StandardSession.java   |  24 +--
 .../catalina/session/StandardSessionFacade.java    |   6 +-
 .../catalina/ssi/ByteArrayServletOutputStream.java |   4 +-
 .../catalina/ssi/ResponseIncludeWrapper.java       |   6 +-
 java/org/apache/catalina/ssi/SSIFilter.java        |  14 +-
 java/org/apache/catalina/ssi/SSIServlet.java       |  10 +-
 .../catalina/ssi/SSIServletExternalResolver.java   |  10 +-
 .../apache/catalina/ssi/SSIServletRequestUtil.java |   4 +-
 .../org/apache/catalina/startup/ContextConfig.java |  16 +-
 .../org/apache/catalina/startup/FailedContext.java |  12 +-
 java/org/apache/catalina/startup/Tomcat.java       |  24 +--
 .../apache/catalina/startup/WebAnnotationSet.java  |   5 +-
 .../catalina/startup/WebappServiceLoader.java      |   4 +-
 java/org/apache/catalina/util/RequestUtil.java     |   4 +-
 java/org/apache/catalina/util/SessionConfig.java   |   2 +-
 .../catalina/valves/AbstractAccessLogValve.java    |   8 +-
 .../valves/CrawlerSessionManagerValve.java         |   8 +-
 .../apache/catalina/valves/ErrorReportValve.java   |   8 +-
 .../catalina/valves/ExtendedAccessLogValve.java    |   4 +-
 .../apache/catalina/valves/HealthCheckValve.java   |   2 +-
 .../apache/catalina/valves/JDBCAccessLogValve.java |   2 +-
 .../catalina/valves/LoadBalancerDrainingValve.java |   6 +-
 .../apache/catalina/valves/PersistentValve.java    |   4 +-
 .../apache/catalina/valves/RemoteAddrValve.java    |   2 +-
 .../apache/catalina/valves/RemoteCIDRValve.java    |   4 +-
 .../apache/catalina/valves/RemoteHostValve.java    |   2 +-
 java/org/apache/catalina/valves/RemoteIpValve.java |   6 +-
 .../apache/catalina/valves/RequestFilterValve.java |   4 +-
 java/org/apache/catalina/valves/SSLValve.java      |   2 +-
 .../org/apache/catalina/valves/SemaphoreValve.java |   2 +-
 .../catalina/valves/StuckThreadDetectionValve.java |   2 +-
 .../catalina/valves/rewrite/RewriteValve.java      |   6 +-
 .../catalina/webresources/ExtractingRoot.java      |   2 +-
 java/org/apache/coyote/AbstractProcessor.java      |   2 +-
 java/org/apache/coyote/AbstractProtocol.java       |   5 +-
 java/org/apache/coyote/ActionCode.java             |   8 +-
 java/org/apache/coyote/AsyncContextCallback.java   |   2 +-
 java/org/apache/coyote/Request.java                |   2 +-
 java/org/apache/coyote/Response.java               |   2 +-
 java/org/apache/coyote/UpgradeToken.java           |   2 +-
 java/org/apache/coyote/ajp/AjpProcessor.java       |   2 +-
 .../coyote/http11/AbstractHttp11Protocol.java      |   2 +-
 java/org/apache/coyote/http11/Http11Processor.java |   2 +-
 .../http11/upgrade/InternalHttpUpgradeHandler.java |   2 +-
 .../http11/upgrade/UpgradeProcessorBase.java       |   2 +-
 .../http11/upgrade/UpgradeProcessorExternal.java   |   4 +-
 .../http11/upgrade/UpgradeProcessorInternal.java   |   4 +-
 .../http11/upgrade/UpgradeServletInputStream.java  |   4 +-
 .../http11/upgrade/UpgradeServletOutputStream.java |   4 +-
 java/org/apache/coyote/http2/Http2AsyncParser.java |   2 +-
 .../coyote/http2/Http2AsyncUpgradeHandler.java     |   2 +-
 java/org/apache/coyote/http2/Http2Parser.java      |   2 +-
 .../apache/coyote/http2/Http2UpgradeHandler.java   |   2 +-
 java/org/apache/jasper/Constants.java              |   6 +-
 java/org/apache/jasper/EmbeddedServletOptions.java |   8 +-
 java/org/apache/jasper/JasperException.java        |   2 +-
 java/org/apache/jasper/JspC.java                   |   4 +-
 java/org/apache/jasper/JspCompilationContext.java  |   4 +-
 java/org/apache/jasper/Options.java                |   2 +-
 .../apache/jasper/compiler/ELFunctionMapper.java   |   2 +-
 java/org/apache/jasper/compiler/ELInterpreter.java |   2 +-
 .../jasper/compiler/ELInterpreterFactory.java      |   2 +-
 java/org/apache/jasper/compiler/ELNode.java        |   2 +-
 java/org/apache/jasper/compiler/Generator.java     | 185 ++++++++++-----------
 .../jasper/compiler/ImplicitTagLibraryInfo.java    |  10 +-
 .../apache/jasper/compiler/JarScannerFactory.java  |   2 +-
 java/org/apache/jasper/compiler/JasperTagInfo.java |  10 +-
 java/org/apache/jasper/compiler/JspConfig.java     |   6 +-
 .../apache/jasper/compiler/JspDocumentParser.java  |   7 +-
 .../apache/jasper/compiler/JspRuntimeContext.java  |   4 +-
 java/org/apache/jasper/compiler/JspUtil.java       |   2 +-
 java/org/apache/jasper/compiler/Node.java          |  25 ++-
 java/org/apache/jasper/compiler/PageDataImpl.java  |   4 +-
 java/org/apache/jasper/compiler/PageInfo.java      |   3 +-
 java/org/apache/jasper/compiler/Parser.java        |   8 +-
 .../apache/jasper/compiler/ScriptingVariabler.java |   4 +-
 .../apache/jasper/compiler/TagFileProcessor.java   |  13 +-
 .../apache/jasper/compiler/TagLibraryInfoImpl.java |  22 +--
 .../apache/jasper/compiler/TagPluginManager.java   |   2 +-
 java/org/apache/jasper/compiler/TldCache.java      |   2 +-
 java/org/apache/jasper/compiler/Validator.java     |  19 +--
 java/org/apache/jasper/el/ELResolverImpl.java      |   7 +-
 .../apache/jasper/el/ExpressionEvaluatorImpl.java  |  13 +-
 java/org/apache/jasper/el/ExpressionImpl.java      |   7 +-
 java/org/apache/jasper/el/FunctionMapperImpl.java  |   2 +-
 java/org/apache/jasper/el/JasperELResolver.java    |   5 +-
 .../org/apache/jasper/el/VariableResolverImpl.java |   5 +-
 .../jasper/resources/LocalStrings.properties       |   2 +-
 .../jasper/resources/LocalStrings_es.properties    |   2 +-
 .../jasper/resources/LocalStrings_fr.properties    |   2 +-
 .../jasper/resources/LocalStrings_ja.properties    |   2 +-
 .../jasper/resources/LocalStrings_ko.properties    |   2 +-
 .../org/apache/jasper/runtime/BodyContentImpl.java |   4 +-
 java/org/apache/jasper/runtime/HttpJspBase.java    |  12 +-
 .../jasper/runtime/InstanceManagerFactory.java     |   2 +-
 .../jasper/runtime/JspApplicationContextImpl.java  |   7 +-
 .../apache/jasper/runtime/JspContextWrapper.java   |  37 ++---
 java/org/apache/jasper/runtime/JspFactoryImpl.java |  16 +-
 .../apache/jasper/runtime/JspFragmentHelper.java   |   8 +-
 .../apache/jasper/runtime/JspRuntimeLibrary.java   |  26 +--
 java/org/apache/jasper/runtime/JspWriterImpl.java  |   4 +-
 .../org/apache/jasper/runtime/PageContextImpl.java |  39 +++--
 .../jasper/runtime/ProtectedFunctionMapper.java    |   2 +-
 .../runtime/ServletResponseWrapperInclude.java     |  10 +-
 java/org/apache/jasper/runtime/TagHandlerPool.java |   6 +-
 .../apache/jasper/servlet/JasperInitializer.java   |   8 +-
 .../apache/jasper/servlet/JspCServletContext.java  |  24 +--
 java/org/apache/jasper/servlet/JspServlet.java     |  16 +-
 .../apache/jasper/servlet/JspServletWrapper.java   |  20 +--
 java/org/apache/jasper/servlet/TldPreScanned.java  |   2 +-
 java/org/apache/jasper/servlet/TldScanner.java     |   6 +-
 java/org/apache/jasper/tagplugins/jstl/Util.java   |  16 +-
 .../apache/jasper/tagplugins/jstl/core/Out.java    |   2 +-
 java/org/apache/tomcat/JarScanner.java             |   2 +-
 .../tomcat/util/descriptor/DigesterFactory.java    |   4 +-
 .../util/descriptor/tagplugin/TagPluginParser.java |   2 +-
 .../apache/tomcat/util/descriptor/tld/TagXml.java  |   6 +-
 .../tomcat/util/descriptor/tld/TaglibXml.java      |   2 +-
 .../tomcat/util/descriptor/tld/TldRuleSet.java     |   8 +-
 .../tomcat/util/descriptor/web/FilterDef.java      |   2 +-
 .../tomcat/util/descriptor/web/FilterMap.java      |   2 +-
 .../descriptor/web/JspConfigDescriptorImpl.java    |   6 +-
 .../web/JspPropertyGroupDescriptorImpl.java        |   2 +-
 .../util/descriptor/web/SecurityConstraint.java    |  10 +-
 .../tomcat/util/descriptor/web/SessionConfig.java  |   2 +-
 .../util/descriptor/web/TaglibDescriptorImpl.java  |   2 +-
 .../apache/tomcat/util/descriptor/web/WebXml.java  |  12 +-
 .../apache/tomcat/util/http/CookieProcessor.java   |   2 +-
 .../tomcat/util/http/LegacyCookieProcessor.java    |   2 +-
 java/org/apache/tomcat/util/http/RequestUtil.java  |   2 +-
 java/org/apache/tomcat/util/http/ResponseUtil.java |   2 +-
 .../tomcat/util/http/Rfc6265CookieProcessor.java   |   2 +-
 .../http/fileupload/disk/DiskFileItemFactory.java  |   2 +-
 .../http/fileupload/servlet/ServletFileUpload.java |   2 +-
 .../fileupload/servlet/ServletRequestContext.java  |   2 +-
 java/org/apache/tomcat/util/net/SSLSupport.java    |  10 +-
 .../tomcat/util/scan/StandardJarScanner.java       |   2 +-
 .../tomcat/websocket/server/UpgradeUtil.java       |  11 +-
 .../tomcat/websocket/server/WsContextListener.java |   6 +-
 .../apache/tomcat/websocket/server/WsFilter.java   |  14 +-
 .../websocket/server/WsHandshakeRequest.java       |   3 +-
 .../websocket/server/WsHttpUpgradeHandler.java     |   5 +-
 java/org/apache/tomcat/websocket/server/WsSci.java |   9 +-
 .../tomcat/websocket/server/WsServerContainer.java |  13 +-
 .../tomcat/websocket/server/WsSessionListener.java |   4 +-
 .../tomcat/websocket/server/WsWriteTimeout.java    |   4 +-
 .../web/tomcat/OpenWebBeansSecurityFilter.java     |  12 +-
 .../web/tomcat/OpenWebBeansSecurityValve.java      |   2 +-
 .../apache/webbeans/web/tomcat/TomcatPlugin.java   |  20 +--
 .../webbeans/web/tomcat/TomcatSecurityService.java |   2 +-
 ...=> jakarta.servlet.ServletContainerInitializer} |   0
 res/META-INF/jsp-api.jar.manifest                  |   4 +-
 res/META-INF/servlet-api.jar.manifest              |   4 +-
 ...=> jakarta.servlet.ServletContainerInitializer} |   0
 res/bnd/jsp-api.jar.tmp.bnd                        |   8 +-
 res/bnd/servlet-api.jar.tmp.bnd                    |  10 +-
 res/bnd/tomcat-embed-core.jar.tmp.bnd              |  10 +-
 res/bnd/tomcat-embed-jasper.jar.tmp.bnd            |   8 +-
 res/checkstyle/jakarta-import-control.xml          |   8 +
 res/checkstyle/javax-import-control.xml            |   8 -
 res/checkstyle/org-import-control.xml              |  16 +-
 res/findbugs/filter-false-positives.xml            |  14 +-
 res/maven/tomcat-servlet-api.pom                   |   2 +-
 res/rat/rat-excludes.txt                           | 126 +++++++-------
 res/tomcat-maven/pom.xml                           |   2 +-
 res/tomcat-maven/tomcat-reflection.json            |   2 +-
 res/tomcat-maven/tomcat-resource.json              |   4 +-
 ...=> jakarta.servlet.ServletContainerInitializer} |   0
 test/jakarta/el/TestCompositeELResolver.java       |   2 +-
 .../jakarta/el/TesterImportHandlerPerformance.java |  12 +-
 .../servlet/annotation/TestServletSecurity.java    |  10 +-
 .../annotation/TestServletSecurityMappings.java    |  16 +-
 .../servlet/http/TestCookie.java                   |   2 +-
 .../servlet/http/TestCookieRFC2109Validator.java   |   2 +-
 .../servlet/http/TestCookieRFC6265Validator.java   |   2 +-
 .../servlet/http/TestCookieStrict.java             |   2 +-
 .../servlet/http/TestHttpServlet.java              |   4 +-
 .../http/TestHttpServletResponseSendError.java     |   6 +-
 .../servlet/jsp/TestPageContext.java               |   2 +-
 .../servlet/jsp/TesterPageContext.java             |  21 ++-
 .../jsp/el/TestScopedAttributeELResolver.java      |   4 +-
 .../TestScopedAttributeELResolverPerformance.java  |   7 +-
 .../servlet/resources/TestSchemaValidation.java    |   2 +-
 .../authenticator/TestAuthInfoResponseHeaders.java |   2 +-
 .../authenticator/TestFormAuthenticator.java       |   8 +-
 .../TestJaspicCallbackHandlerInAuthenticator.java  |   3 +-
 .../TestNonLoginAndBasicAuthenticator.java         |   2 +-
 .../TestSSOnonLoginAndBasicAuthenticator.java      |   2 +-
 .../TesterDigestAuthenticatorPerformance.java      |   2 +-
 .../apache/catalina/connector/TestConnector.java   |   2 +-
 .../catalina/connector/TestCoyoteAdapter.java      |  10 +-
 .../catalina/connector/TestCoyoteInputStream.java  |   8 +-
 .../catalina/connector/TestCoyoteOutputStream.java |  14 +-
 .../apache/catalina/connector/TestInputBuffer.java |   8 +-
 .../catalina/connector/TestKeepAliveCount.java     |   8 +-
 .../catalina/connector/TestMaxConnections.java     |   8 +-
 .../catalina/connector/TestOutputBuffer.java       |   8 +-
 .../org/apache/catalina/connector/TestRequest.java |   8 +-
 .../apache/catalina/connector/TestResponse.java    |  10 +-
 .../apache/catalina/connector/TestSendFile.java    |   8 +-
 .../catalina/core/TestApplicationContext.java      |  18 +-
 ...TestApplicationContextGetRequestDispatcher.java |  12 +-
 ...estApplicationContextGetRequestDispatcherB.java |  42 ++---
 .../catalina/core/TestApplicationHttpRequest.java  |   8 +-
 .../catalina/core/TestApplicationMapping.java      |  14 +-
 .../apache/catalina/core/TestAsyncContextImpl.java |  38 ++---
 .../core/TestAsyncContextImplDispatch.java         |  10 +-
 .../core/TestAsyncContextStateChanges.java         |  18 +-
 .../catalina/core/TestNamingContextListener.java   |   5 +-
 .../apache/catalina/core/TestStandardContext.java  |  42 ++---
 .../catalina/core/TestStandardContextAliases.java  |  10 +-
 .../core/TestStandardContextResources.java         |  10 +-
 .../catalina/core/TestStandardContextValve.java    |  12 +-
 .../catalina/core/TestStandardHostValve.java       |  12 +-
 .../apache/catalina/core/TestStandardWrapper.java  |  28 ++--
 .../catalina/core/TestSwallowAbortedUploads.java   |  14 +-
 .../apache/catalina/core/TesterTldListener.java    |   6 +-
 .../catalina/filters/TestAddCharSetFilter.java     |   8 +-
 .../apache/catalina/filters/TestCorsFilter.java    |  12 +-
 .../catalina/filters/TestCsrfPreventionFilter.java |   2 +-
 .../apache/catalina/filters/TestExpiresFilter.java |   8 +-
 .../catalina/filters/TestRemoteIpFilter.java       |  14 +-
 .../filters/TestRestCsrfPreventionFilter.java      |  12 +-
 .../filters/TestRestCsrfPreventionFilter2.java     |   8 +-
 .../apache/catalina/filters/TesterFilterChain.java |   8 +-
 .../catalina/filters/TesterFilterConfigs.java      |   4 +-
 .../catalina/filters/TesterHttpServletRequest.java |  32 ++--
 .../filters/TesterHttpServletResponse.java         |   8 +-
 .../catalina/ha/context/TestReplicatedContext.java |   8 +-
 test/org/apache/catalina/loader/EchoTag.java       |   4 +-
 .../apache/catalina/loader/MyAnnotatedServlet.java |  10 +-
 .../catalina/loader/TestWebappClassLoader.java     |   5 +-
 .../TestWebappClassLoaderExecutorMemoryLeak.java   |   8 +-
 .../loader/TestWebappClassLoaderMemoryLeak.java    |   8 +-
 ...TestWebappClassLoaderThreadLocalMemoryLeak.java |   2 +-
 .../apache/catalina/mapper/TestMapperWebapps.java  |   8 +-
 .../catalina/nonblocking/TestNonBlockingAPI.java   |  25 +--
 .../nonblocking/TesterAjpNonBlockingClient.java    |   3 +-
 test/org/apache/catalina/realm/TestRealmBase.java  |   6 +-
 .../catalina/realm/TesterServletSecurity01.java    |   6 +-
 .../servlets/DefaultServletEncodingBaseTest.java   |  10 +-
 .../catalina/servlets/ServletOptionsBaseTest.java  |   2 +-
 .../catalina/servlets/TestDefaultServlet.java      |   2 +-
 .../servlets/TestDefaultServletOptions.java        |   2 +-
 .../catalina/servlets/TestWebdavServlet.java       |   2 +-
 .../servlets/TestWebdavServletOptions.java         |   2 +-
 .../catalina/session/TestPersistentManager.java    |   6 +-
 .../session/TestPersistentManagerIntegration.java  |  10 +-
 .../session/TestStandardSessionIntegration.java    |  10 +-
 .../startup/DuplicateMappingParamFilter.java       |  12 +-
 .../startup/DuplicateMappingParamServlet.java      |  12 +-
 .../catalina/startup/NoMappingParamServlet.java    |  12 +-
 test/org/apache/catalina/startup/ParamFilter.java  |  16 +-
 test/org/apache/catalina/startup/ParamServlet.java |  12 +-
 .../apache/catalina/startup/TestContextConfig.java |  16 +-
 .../startup/TestContextConfigAnnotation.java       |  10 +-
 test/org/apache/catalina/startup/TestListener.java |  10 +-
 test/org/apache/catalina/startup/TestTomcat.java   |   9 +-
 .../catalina/startup/TestTomcatClassLoader.java    |   8 +-
 .../catalina/startup/TestWebappServiceLoader.java  |   6 +-
 .../org/apache/catalina/startup/TesterServlet.java |   8 +-
 .../TesterServletContainerInitializer1.java        |  10 +-
 .../TesterServletContainerInitializer2.java        |  10 +-
 .../catalina/startup/TesterServletEncodeUrl.java   |   8 +-
 .../startup/TesterServletWithAnnotations.java      |   9 +-
 .../startup/TesterServletWithLifeCycleMethods.java |   9 +-
 .../apache/catalina/startup/TomcatBaseTest.java    |  12 +-
 .../valves/TestCrawlerSessionManagerValve.java     |   6 +-
 .../catalina/valves/TestErrorReportValve.java      |  16 +-
 .../valves/TestLoadBalancerDrainingValve.java      |   6 +-
 .../apache/catalina/valves/TestRemoteIpValve.java  |   2 +-
 .../catalina/valves/TestRequestFilterValve.java    |   2 +-
 .../valves/TestStuckThreadDetectionValve.java      |   6 +-
 .../catalina/valves/TesterAccessLogValve.java      |   2 +-
 .../catalina/webresources/TestFileResource.java    |   2 +-
 test/org/apache/coyote/TestIoTimeouts.java         |  18 +-
 test/org/apache/coyote/TestResponse.java           |   8 +-
 .../coyote/ajp/TestAbstractAjpProcessor.java       |  10 +-
 .../coyote/http11/TestHttp11InputBuffer.java       |   8 +-
 .../apache/coyote/http11/TestHttp11Processor.java  |  14 +-
 .../http11/filters/TestChunkedInputFilter.java     |   8 +-
 .../apache/coyote/http11/upgrade/TestUpgrade.java  |  21 +--
 .../http11/upgrade/TestUpgradeInternalHandler.java |  13 +-
 test/org/apache/coyote/http2/Http2TestBase.java    |   9 +-
 .../org/apache/coyote/http2/TestAbortedUpload.java |   6 +-
 test/org/apache/coyote/http2/TestAsync.java        |  12 +-
 test/org/apache/coyote/http2/TestAsyncFlush.java   |  12 +-
 test/org/apache/coyote/http2/TestAsyncTimeout.java |  12 +-
 test/org/apache/coyote/http2/TestStream.java       |   8 +-
 .../apache/coyote/http2/TestStreamProcessor.java   |  10 +-
 .../apache/coyote/http2/TestStreamQueryString.java |   8 +-
 test/org/apache/el/TestELInJsp.java                |  11 +-
 .../apache/jasper/TestJspCompilationContext.java   |   2 +-
 .../jasper/compiler/TestELInterpreterFactory.java  |   6 +-
 test/org/apache/jasper/compiler/TestGenerator.java |  12 +-
 .../jasper/compiler/TestJspDocumentParser.java     |   3 +-
 .../jasper/compiler/TestScriptingVariabler.java    |   8 +-
 .../jasper/compiler/TestTagLibraryInfoImpl.java    |   2 +-
 .../jasper/compiler/TestTagPluginManager.java      |   6 +-
 test/org/apache/jasper/compiler/TestValidator.java |   6 +-
 test/org/apache/jasper/compiler/TesterTag.java     |   2 +-
 .../org/apache/jasper/el/TestJasperELResolver.java |   3 +-
 .../jasper/runtime/TestCustomHttpJspPage.java      |   2 +-
 .../jasper/runtime/TestJspContextWrapper.java      |  10 +-
 .../apache/jasper/runtime/TestJspWriterImpl.java   |   2 +-
 .../apache/jasper/runtime/TestPageContextImpl.java |  14 +-
 .../runtime/TestTagHandlerPoolPerformance.java     |   4 +-
 .../apache/jasper/runtime/TesterHttpJspBase.java   |  16 +-
 .../jasper/servlet/TestJspCServletContext.java     |   4 +-
 test/org/apache/jasper/servlet/TestJspServlet.java |   8 +-
 .../jasper/tagplugins/jstl/core/TestForEach.java   |   5 +-
 .../jasper/tagplugins/jstl/core/TestOut.java       |   5 +-
 .../jasper/tagplugins/jstl/core/TestSet.java       |   2 +-
 test/org/apache/naming/TestEnvEntry.java           |   2 +-
 test/org/apache/naming/TesterInjectionServlet.java |   8 +-
 .../apache/naming/resources/TestNamingContext.java |   9 +-
 test/org/apache/tomcat/unittest/TesterContext.java |  13 +-
 .../tomcat/unittest/TesterLeakingServlet1.java     |   8 +-
 .../tomcat/unittest/TesterLeakingServlet2.java     |   8 +-
 test/org/apache/tomcat/unittest/TesterRequest.java |   4 +-
 .../tomcat/unittest/TesterServletContext.java      |  28 ++--
 .../tomcat/unittest/TesterSessionCookieConfig.java |   2 +-
 test/org/apache/tomcat/unittest/tags/Bug53545.java |   2 +-
 .../tomcat/util/descriptor/TestLocalResolver.java  |   2 +-
 .../tomcat/util/descriptor/tld/TestTldParser.java  |  10 +-
 .../web/TestJspConfigDescriptorImpl.java           |   6 +-
 .../descriptor/web/TestSecurityConstraint.java     |  10 +-
 .../apache/tomcat/util/http/CookiesBaseTest.java   |   8 +-
 test/org/apache/tomcat/util/http/TestBug49158.java |  10 +-
 .../apache/tomcat/util/http/TestCookieParsing.java |  10 +-
 .../util/http/TestCookieProcessorGeneration.java   |   2 +-
 .../http/TestCookieProcessorGenerationHttp.java    |  10 +-
 test/org/apache/tomcat/util/http/TestCookies.java  |   2 +-
 .../util/http/TestCookiesDefaultSysProps.java      |   2 +-
 .../util/http/TestCookiesNoFwdStrictSysProps.java  |   2 +-
 .../http/TestCookiesNoStrictNamingSysProps.java    |   2 +-
 .../util/http/TestCookiesStrictSysProps.java       |   2 +-
 .../util/http/TestMimeHeadersIntegration.java      |   8 +-
 .../util/http/TestRequestUtilSameOrigin.java       |   4 +-
 test/org/apache/tomcat/util/net/TesterSupport.java |   9 +-
 .../tomcat/websocket/TestWsWebSocketContainer.java |   3 +-
 .../TestWsWebSocketContainerGetOpenSessions.java   |   3 +-
 .../apache/tomcat/websocket/TesterEchoServer.java  |   3 +-
 .../websocket/pojo/TestEncodingDecoding.java       |   3 +-
 .../tomcat/websocket/server/TestCloseBug58624.java |   3 +-
 .../websocket/server/TesterEndpointConfig.java     |   3 +-
 test/webapp-fragments/WEB-INF/lib/resources.jar    | Bin 20061 -> 19989 bytes
 test/webapp/WEB-INF/tags/bug43400.tag              |   2 +-
 .../docs/appdev/sample/src/mypackage/Hello.java    |   8 +-
 webapps/docs/config/context.xml                    |   4 +-
 webapps/docs/config/cookie-processor.xml           |   4 +-
 webapps/docs/config/filter.xml                     |   4 +-
 webapps/docs/config/host.xml                       |   2 +-
 webapps/docs/config/valve.xml                      |   2 +-
 webapps/docs/funcspecs/fs-default.xml              |   2 +-
 webapps/docs/graal.xml                             |   2 +-
 webapps/docs/logging.xml                           |   6 +-
 webapps/docs/manager-howto.xml                     |   4 +-
 webapps/docs/ssi-howto.xml                         |   2 +-
 webapps/docs/ssl-howto.xml                         |  12 +-
 .../examples/WEB-INF/classes/CookieExample.java    |  12 +-
 .../WEB-INF/classes/HelloWorldExample.java         |   8 +-
 .../WEB-INF/classes/RequestHeaderExample.java      |  10 +-
 .../WEB-INF/classes/RequestInfoExample.java        |  10 +-
 .../WEB-INF/classes/RequestParamExample.java       |   8 +-
 webapps/examples/WEB-INF/classes/ServletToJsp.java |   6 +-
 .../examples/WEB-INF/classes/SessionExample.java   |  10 +-
 webapps/examples/WEB-INF/classes/async/Async0.java |  10 +-
 webapps/examples/WEB-INF/classes/async/Async1.java |  10 +-
 webapps/examples/WEB-INF/classes/async/Async2.java |  10 +-
 webapps/examples/WEB-INF/classes/async/Async3.java |  10 +-
 .../classes/async/AsyncStockContextListener.java   |   6 +-
 .../WEB-INF/classes/async/AsyncStockServlet.java   |  16 +-
 webapps/examples/WEB-INF/classes/cal/Entries.java  |   2 +-
 .../examples/WEB-INF/classes/cal/TableBean.java    |   2 +-
 .../compressionFilters/CompressionFilter.java      |  16 +-
 .../CompressionFilterTestServlet.java              |  10 +-
 .../CompressionResponseStream.java                 |   4 +-
 .../CompressionServletResponseWrapper.java         |   6 +-
 .../WEB-INF/classes/examples/ExampleTagBase.java   |   8 +-
 .../examples/WEB-INF/classes/examples/FooTag.java  |   4 +-
 .../WEB-INF/classes/examples/FooTagExtraInfo.java  |   6 +-
 .../examples/WEB-INF/classes/examples/LogTag.java  |   4 +-
 .../WEB-INF/classes/examples/ValuesTag.java        |   8 +-
 .../WEB-INF/classes/filters/ExampleFilter.java     |  10 +-
 .../WEB-INF/classes/http2/SimpleImagePush.java     |  10 +-
 .../jsp2/examples/simpletag/EchoAttributesTag.java |   8 +-
 .../jsp2/examples/simpletag/FindBookSimpleTag.java |   4 +-
 .../examples/simpletag/HelloWorldSimpleTag.java    |   4 +-
 .../jsp2/examples/simpletag/RepeatSimpleTag.java   |   4 +-
 .../jsp2/examples/simpletag/ShuffleSimpleTag.java  |   6 +-
 .../jsp2/examples/simpletag/TileSimpleTag.java     |   4 +-
 .../WEB-INF/classes/listeners/ContextListener.java |  10 +-
 .../WEB-INF/classes/listeners/SessionListener.java |  14 +-
 .../WEB-INF/classes/nonblocking/ByteCounter.java   |  18 +-
 .../WEB-INF/classes/nonblocking/NumberWriter.java  |  18 +-
 .../WEB-INF/classes/trailers/ResponseTrailers.java |   8 +-
 .../WEB-INF/classes/validators/DebugValidator.java |   6 +-
 .../drawboard/DrawboardContextListener.java        |   4 +-
 webapps/examples/servlets/cookies.html             |   4 +-
 webapps/examples/servlets/helloworld.html          |   4 +-
 webapps/examples/servlets/reqheaders.html          |   4 +-
 webapps/examples/servlets/reqinfo.html             |   4 +-
 webapps/examples/servlets/reqparams.html           |   4 +-
 webapps/examples/servlets/sessions.html            |   4 +-
 webapps/host-manager/WEB-INF/jsp/404.jsp           |   2 +-
 webapps/manager/WEB-INF/jsp/404.jsp                |   2 +-
 webapps/manager/WEB-INF/jsp/sessionDetail.jsp      |   2 +-
 696 files changed, 2558 insertions(+), 2536 deletions(-)

diff --git a/build.xml b/build.xml
index a553b56..1f30fc0 100644
--- a/build.xml
+++ b/build.xml
@@ -270,7 +270,7 @@
     <include name="**/LICENSE"/>
     <include name="**/NOTICE"/>
     <include name="**/RELEASE-NOTES"/>
-    <include name="**/javax.servlet.ServletContainerInitializer"/>
+    <include name="**/jakarta.servlet.ServletContainerInitializer"/>
     <include name="**/javax.websocket.ContainerProvider"/>
     <include name="**/javax.websocket.server.ServerEndpointConfig$Configurator"/>
     <include name="**/.gitignore"/>
@@ -331,16 +331,16 @@
   </patternset>
 
   <patternset id="files.servlet-api">
-    <include name="javax/servlet/*" />
-    <include name="javax/servlet/annotation/**" />
-    <include name="javax/servlet/descriptor/**" />
-    <include name="javax/servlet/http/**" />
-    <include name="javax/servlet/resources/**" />
-    <exclude name="javax/servlet/jsp"/>
+    <include name="jakarta/servlet/*" />
+    <include name="jakarta/servlet/annotation/**" />
+    <include name="jakarta/servlet/descriptor/**" />
+    <include name="jakarta/servlet/http/**" />
+    <include name="jakarta/servlet/resources/**" />
+    <exclude name="jakarta/servlet/jsp"/>
   </patternset>
 
   <patternset id="files.jsp-api">
-    <include name="javax/servlet/jsp/**" />
+    <include name="jakarta/servlet/jsp/**" />
   </patternset>
 
   <patternset id="files.el-api">
@@ -1907,8 +1907,8 @@ Apache Tomcat ${version} native binaries for Win64 AMD64/EMT64 platform.
         <path location="${ant.core.lib}"/>
       </classpath>
     </javadoc>
-    <javadoc packagenames="javax.servlet.*"
-      excludepackagenames="javax.servlet.jsp.*"
+    <javadoc packagenames="jakarta.servlet.*"
+      excludepackagenames="jakarta.servlet.jsp.*"
       sourcepath="${tomcat.dist}/src/java"
       destdir="${tomcat.dist}/webapps/docs/servletapi"
       version="true"
@@ -1929,7 +1929,7 @@ Apache Tomcat ${version} native binaries for Win64 AMD64/EMT64 platform.
         <path location="${ant.core.lib}"/>
       </classpath>
     </javadoc>
-    <javadoc packagenames="javax.servlet.jsp.*"
+    <javadoc packagenames="jakarta.servlet.jsp.*"
       sourcepath="${tomcat.dist}/src/java"
       destdir="${tomcat.dist}/webapps/docs/jspapi"
       version="true"
diff --git a/java/jakarta/el/CompositeELResolver.java b/java/jakarta/el/CompositeELResolver.java
index afcdbcd..e0123f3 100644
--- a/java/jakarta/el/CompositeELResolver.java
+++ b/java/jakarta/el/CompositeELResolver.java
@@ -27,7 +27,7 @@ public class CompositeELResolver extends ELResolver {
     static {
         Class<?> clazz = null;
         try {
-            clazz = Class.forName("javax.servlet.jsp.el.ScopedAttributeELResolver");
+            clazz = Class.forName("jakarta.servlet.jsp.el.ScopedAttributeELResolver");
         } catch (ClassNotFoundException e) {
             // Ignore. This is expected if using the EL stand-alone
         }
@@ -94,7 +94,7 @@ public class CompositeELResolver extends ELResolver {
                 if (SCOPED_ATTRIBUTE_EL_RESOLVER != null &&
                         SCOPED_ATTRIBUTE_EL_RESOLVER.isAssignableFrom(resolvers[i].getClass())) {
                     // Special case since
-                    // javax.servlet.jsp.el.ScopedAttributeELResolver will
+                    // jakarta.servlet.jsp.el.ScopedAttributeELResolver will
                     // always return Object.class for type
                     Object value = resolvers[i].getValue(context, base, property);
                     if (value != null) {
diff --git a/java/jakarta/el/ImportHandler.java b/java/jakarta/el/ImportHandler.java
index cc18f6f..bfda5b4 100644
--- a/java/jakarta/el/ImportHandler.java
+++ b/java/jakarta/el/ImportHandler.java
@@ -85,7 +85,7 @@ public class ImportHandler {
         // Exceptions
         servletClassNames.add("ServletException");
         servletClassNames.add("UnavailableException");
-        standardPackages.put("javax.servlet", servletClassNames);
+        standardPackages.put("jakarta.servlet", servletClassNames);
 
         // Servlet 4.0
         Set<String> servletHttpClassNames = new HashSet<>();
@@ -115,7 +115,7 @@ public class ImportHandler {
         servletHttpClassNames.add("HttpUtils");
         // Enums
         servletHttpClassNames.add("MappingMatch");
-        standardPackages.put("javax.servlet.http", servletHttpClassNames);
+        standardPackages.put("jakarta.servlet.http", servletHttpClassNames);
 
         // JSP 2.3
         Set<String> servletJspClassNames = new HashSet<>();
@@ -134,7 +134,7 @@ public class ImportHandler {
         servletJspClassNames.add("JspException");
         servletJspClassNames.add("JspTagException");
         servletJspClassNames.add("SkipPageException");
-        standardPackages.put("javax.servlet.jsp", servletJspClassNames);
+        standardPackages.put("jakarta.servlet.jsp", servletJspClassNames);
 
         Set<String> javaLangClassNames = new HashSet<>();
         // Taken from Java 14 EA27 Javadoc
diff --git a/java/javax/servlet/AsyncContext.java b/java/jakarta/servlet/AsyncContext.java
similarity index 81%
rename from java/javax/servlet/AsyncContext.java
rename to java/jakarta/servlet/AsyncContext.java
index 9d0c81d..31d5ca5 100644
--- a/java/javax/servlet/AsyncContext.java
+++ b/java/jakarta/servlet/AsyncContext.java
@@ -14,7 +14,7 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
-package javax.servlet;
+package jakarta.servlet;
 
 /**
  * TODO SERVLET3 - Add comments
@@ -22,17 +22,17 @@ package javax.servlet;
  */
 public interface AsyncContext {
     public static final String ASYNC_REQUEST_URI =
-            "javax.servlet.async.request_uri";
+            "jakarta.servlet.async.request_uri";
     public static final String ASYNC_CONTEXT_PATH  =
-            "javax.servlet.async.context_path";
+            "jakarta.servlet.async.context_path";
     public static final String ASYNC_MAPPING =
-            "javax.servlet.async.mapping";
+            "jakarta.servlet.async.mapping";
     public static final String ASYNC_PATH_INFO =
-            "javax.servlet.async.path_info";
+            "jakarta.servlet.async.path_info";
     public static final String ASYNC_SERVLET_PATH =
-            "javax.servlet.async.servlet_path";
+            "jakarta.servlet.async.servlet_path";
     public static final String ASYNC_QUERY_STRING =
-            "javax.servlet.async.query_string";
+            "jakarta.servlet.async.query_string";
 
     ServletRequest getRequest();
 
@@ -43,8 +43,8 @@ public interface AsyncContext {
     /**
      * @throws IllegalStateException if this method is called when the request
      * is not in asynchronous mode. The request is in asynchronous mode after
-     * {@link javax.servlet.http.HttpServletRequest#startAsync()} or
-     * {@link javax.servlet.http.HttpServletRequest#startAsync(ServletRequest,
+     * {@link jakarta.servlet.http.HttpServletRequest#startAsync()} or
+     * {@link jakarta.servlet.http.HttpServletRequest#startAsync(ServletRequest,
      * ServletResponse)} has been called and before {@link #complete()} or any
      * other dispatch() method has been called.
      */
@@ -57,8 +57,8 @@ public interface AsyncContext {
      *
      * @throws IllegalStateException if this method is called when the request
      * is not in asynchronous mode. The request is in asynchronous mode after
-     * {@link javax.servlet.http.HttpServletRequest#startAsync()} or
-     * {@link javax.servlet.http.HttpServletRequest#startAsync(ServletRequest,
+     * {@link jakarta.servlet.http.HttpServletRequest#startAsync()} or
+     * {@link jakarta.servlet.http.HttpServletRequest#startAsync(ServletRequest,
      * ServletResponse)} has been called and before {@link #complete()} or any
      * other dispatch() method has been called.
      */
@@ -72,8 +72,8 @@ public interface AsyncContext {
      *
      * @throws IllegalStateException if this method is called when the request
      * is not in asynchronous mode. The request is in asynchronous mode after
-     * {@link javax.servlet.http.HttpServletRequest#startAsync()} or
-     * {@link javax.servlet.http.HttpServletRequest#startAsync(ServletRequest,
+     * {@link jakarta.servlet.http.HttpServletRequest#startAsync()} or
+     * {@link jakarta.servlet.http.HttpServletRequest#startAsync(ServletRequest,
      * ServletResponse)} has been called and before {@link #complete()} or any
      * other dispatch() method has been called.
      */
diff --git a/java/javax/servlet/AsyncEvent.java b/java/jakarta/servlet/AsyncEvent.java
similarity index 98%
rename from java/javax/servlet/AsyncEvent.java
rename to java/jakarta/servlet/AsyncEvent.java
index 4b0f0b3..5d2bdd1 100644
--- a/java/javax/servlet/AsyncEvent.java
+++ b/java/jakarta/servlet/AsyncEvent.java
@@ -14,7 +14,7 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
-package javax.servlet;
+package jakarta.servlet;
 
 /**
  * TODO SERVLET3 - Add comments
diff --git a/java/javax/servlet/AsyncListener.java b/java/jakarta/servlet/AsyncListener.java
similarity index 97%
rename from java/javax/servlet/AsyncListener.java
rename to java/jakarta/servlet/AsyncListener.java
index 66f6392..dc3e1a0 100644
--- a/java/javax/servlet/AsyncListener.java
+++ b/java/jakarta/servlet/AsyncListener.java
@@ -14,7 +14,7 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
-package javax.servlet;
+package jakarta.servlet;
 
 import java.io.IOException;
 import java.util.EventListener;
diff --git a/java/javax/servlet/DispatcherType.java b/java/jakarta/servlet/DispatcherType.java
similarity index 97%
rename from java/javax/servlet/DispatcherType.java
rename to java/jakarta/servlet/DispatcherType.java
index 67e5603..6511ce0 100644
--- a/java/javax/servlet/DispatcherType.java
+++ b/java/jakarta/servlet/DispatcherType.java
@@ -14,7 +14,7 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
-package javax.servlet;
+package jakarta.servlet;
 
 /**
  * @since Servlet 3.0
diff --git a/java/javax/servlet/Filter.java b/java/jakarta/servlet/Filter.java
similarity index 99%
rename from java/javax/servlet/Filter.java
rename to java/jakarta/servlet/Filter.java
index 06b07cd..dbbe718 100644
--- a/java/javax/servlet/Filter.java
+++ b/java/jakarta/servlet/Filter.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet;
+package jakarta.servlet;
 
 import java.io.IOException;
 
diff --git a/java/javax/servlet/FilterChain.java b/java/jakarta/servlet/FilterChain.java
similarity index 98%
rename from java/javax/servlet/FilterChain.java
rename to java/jakarta/servlet/FilterChain.java
index fca19c3..86d3f30 100644
--- a/java/javax/servlet/FilterChain.java
+++ b/java/jakarta/servlet/FilterChain.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet;
+package jakarta.servlet;
 
 import java.io.IOException;
 
diff --git a/java/javax/servlet/FilterConfig.java b/java/jakarta/servlet/FilterConfig.java
similarity index 99%
rename from java/javax/servlet/FilterConfig.java
rename to java/jakarta/servlet/FilterConfig.java
index 5e3c44b..f0a1a93 100644
--- a/java/javax/servlet/FilterConfig.java
+++ b/java/jakarta/servlet/FilterConfig.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package javax.servlet;
+package jakarta.servlet;
 
 import java.util.Enumeration;
 
diff --git a/java/javax/servlet/FilterRegistration.java b/java/jakarta/servlet/FilterRegistration.java
similarity index 99%
rename from java/javax/servlet/FilterRegistration.java
rename to java/jakarta/servlet/FilterRegistration.java
index b9b10ed..0516459 100644
--- a/java/javax/servlet/FilterRegistration.java
+++ b/java/jakarta/servlet/FilterRegistration.java
@@ -14,7 +14,7 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
-package javax.servlet;
+package jakarta.servlet;
 
 import java.util.Collection;
 import java.util.EnumSet;
diff --git a/java/javax/servlet/GenericFilter.java b/java/jakarta/servlet/GenericFilter.java
similarity index 98%
rename from java/javax/servlet/GenericFilter.java
rename to java/jakarta/servlet/GenericFilter.java
index 3f78fe4..7d999a5 100644
--- a/java/javax/servlet/GenericFilter.java
+++ b/java/jakarta/servlet/GenericFilter.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet;
+package jakarta.servlet;
 
 import java.io.Serializable;
 import java.util.Enumeration;
diff --git a/java/javax/servlet/GenericServlet.java b/java/jakarta/servlet/GenericServlet.java
similarity index 98%
rename from java/javax/servlet/GenericServlet.java
rename to java/jakarta/servlet/GenericServlet.java
index da70a61..92cff5c 100644
--- a/java/javax/servlet/GenericServlet.java
+++ b/java/jakarta/servlet/GenericServlet.java
@@ -14,14 +14,14 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet;
+package jakarta.servlet;
 
 import java.io.IOException;
 import java.util.Enumeration;
 
 /**
  * Defines a generic, protocol-independent servlet. To write an HTTP servlet for
- * use on the Web, extend {@link javax.servlet.http.HttpServlet} instead.
+ * use on the Web, extend {@link jakarta.servlet.http.HttpServlet} instead.
  * <p>
  * <code>GenericServlet</code> implements the <code>Servlet</code> and
  * <code>ServletConfig</code> interfaces. <code>GenericServlet</code> may be
diff --git a/java/javax/servlet/HttpConstraintElement.java b/java/jakarta/servlet/HttpConstraintElement.java
similarity index 93%
rename from java/javax/servlet/HttpConstraintElement.java
rename to java/jakarta/servlet/HttpConstraintElement.java
index 82af497..e0fe8d1 100644
--- a/java/javax/servlet/HttpConstraintElement.java
+++ b/java/jakarta/servlet/HttpConstraintElement.java
@@ -14,22 +14,22 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
-package javax.servlet;
+package jakarta.servlet;
 
 import java.util.ResourceBundle;
 
-import javax.servlet.annotation.ServletSecurity.EmptyRoleSemantic;
-import javax.servlet.annotation.ServletSecurity.TransportGuarantee;
+import jakarta.servlet.annotation.ServletSecurity.EmptyRoleSemantic;
+import jakarta.servlet.annotation.ServletSecurity.TransportGuarantee;
 
 /**
- * Equivalent of {@link javax.servlet.annotation.HttpConstraint} for
+ * Equivalent of {@link jakarta.servlet.annotation.HttpConstraint} for
  * programmatic configuration of security constraints.
  *
  * @since Servlet 3.0
  */
 public class HttpConstraintElement {
 
-    private static final String LSTRING_FILE = "javax.servlet.LocalStrings";
+    private static final String LSTRING_FILE = "jakarta.servlet.LocalStrings";
     private static final ResourceBundle lStrings =
         ResourceBundle.getBundle(LSTRING_FILE);
 
diff --git a/java/javax/servlet/HttpMethodConstraintElement.java b/java/jakarta/servlet/HttpMethodConstraintElement.java
similarity index 95%
rename from java/javax/servlet/HttpMethodConstraintElement.java
rename to java/jakarta/servlet/HttpMethodConstraintElement.java
index 5de2ad9..1adfbe5 100644
--- a/java/javax/servlet/HttpMethodConstraintElement.java
+++ b/java/jakarta/servlet/HttpMethodConstraintElement.java
@@ -14,7 +14,7 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
-package javax.servlet;
+package jakarta.servlet;
 
 import java.util.ResourceBundle;
 
@@ -25,7 +25,7 @@ import java.util.ResourceBundle;
 public class HttpMethodConstraintElement extends HttpConstraintElement {
 
     // Can't inherit from HttpConstraintElement as API does not allow it
-    private static final String LSTRING_FILE = "javax.servlet.LocalStrings";
+    private static final String LSTRING_FILE = "jakarta.servlet.LocalStrings";
     private static final ResourceBundle lStrings =
         ResourceBundle.getBundle(LSTRING_FILE);
 
diff --git a/java/javax/servlet/LocalStrings.properties b/java/jakarta/servlet/LocalStrings.properties
similarity index 100%
rename from java/javax/servlet/LocalStrings.properties
rename to java/jakarta/servlet/LocalStrings.properties
diff --git a/java/javax/servlet/LocalStrings_cs.properties b/java/jakarta/servlet/LocalStrings_cs.properties
similarity index 100%
rename from java/javax/servlet/LocalStrings_cs.properties
rename to java/jakarta/servlet/LocalStrings_cs.properties
diff --git a/java/javax/servlet/LocalStrings_de.properties b/java/jakarta/servlet/LocalStrings_de.properties
similarity index 100%
rename from java/javax/servlet/LocalStrings_de.properties
rename to java/jakarta/servlet/LocalStrings_de.properties
diff --git a/java/javax/servlet/LocalStrings_es.properties b/java/jakarta/servlet/LocalStrings_es.properties
similarity index 100%
rename from java/javax/servlet/LocalStrings_es.properties
rename to java/jakarta/servlet/LocalStrings_es.properties
diff --git a/java/javax/servlet/LocalStrings_fr.properties b/java/jakarta/servlet/LocalStrings_fr.properties
similarity index 100%
rename from java/javax/servlet/LocalStrings_fr.properties
rename to java/jakarta/servlet/LocalStrings_fr.properties
diff --git a/java/javax/servlet/LocalStrings_ja.properties b/java/jakarta/servlet/LocalStrings_ja.properties
similarity index 100%
rename from java/javax/servlet/LocalStrings_ja.properties
rename to java/jakarta/servlet/LocalStrings_ja.properties
diff --git a/java/javax/servlet/LocalStrings_ko.properties b/java/jakarta/servlet/LocalStrings_ko.properties
similarity index 100%
rename from java/javax/servlet/LocalStrings_ko.properties
rename to java/jakarta/servlet/LocalStrings_ko.properties
diff --git a/java/javax/servlet/LocalStrings_zh_CN.properties b/java/jakarta/servlet/LocalStrings_zh_CN.properties
similarity index 100%
rename from java/javax/servlet/LocalStrings_zh_CN.properties
rename to java/jakarta/servlet/LocalStrings_zh_CN.properties
diff --git a/java/javax/servlet/MultipartConfigElement.java b/java/jakarta/servlet/MultipartConfigElement.java
similarity index 97%
rename from java/javax/servlet/MultipartConfigElement.java
rename to java/jakarta/servlet/MultipartConfigElement.java
index a2c6c06..f30101c 100644
--- a/java/javax/servlet/MultipartConfigElement.java
+++ b/java/jakarta/servlet/MultipartConfigElement.java
@@ -14,9 +14,9 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
-package javax.servlet;
+package jakarta.servlet;
 
-import javax.servlet.annotation.MultipartConfig;
+import jakarta.servlet.annotation.MultipartConfig;
 
 /**
  * @since Servlet 3.0
diff --git a/java/javax/servlet/ReadListener.java b/java/jakarta/servlet/ReadListener.java
similarity index 98%
rename from java/javax/servlet/ReadListener.java
rename to java/jakarta/servlet/ReadListener.java
index bb2ed18..c31bba6 100644
--- a/java/javax/servlet/ReadListener.java
+++ b/java/jakarta/servlet/ReadListener.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet;
+package jakarta.servlet;
 
 import java.io.IOException;
 
diff --git a/java/javax/servlet/Registration.java b/java/jakarta/servlet/Registration.java
similarity index 99%
rename from java/javax/servlet/Registration.java
rename to java/jakarta/servlet/Registration.java
index 3eebca5..c6c0de8 100644
--- a/java/javax/servlet/Registration.java
+++ b/java/jakarta/servlet/Registration.java
@@ -14,7 +14,7 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
-package javax.servlet;
+package jakarta.servlet;
 
 import java.util.Map;
 import java.util.Set;
diff --git a/java/javax/servlet/RequestDispatcher.java b/java/jakarta/servlet/RequestDispatcher.java
similarity index 88%
rename from java/javax/servlet/RequestDispatcher.java
rename to java/jakarta/servlet/RequestDispatcher.java
index 73bfe7e..11c498e 100644
--- a/java/javax/servlet/RequestDispatcher.java
+++ b/java/jakarta/servlet/RequestDispatcher.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet;
+package jakarta.servlet;
 
 import java.io.IOException;
 
@@ -45,7 +45,7 @@ public interface RequestDispatcher {
      *
      * @since Servlet 3.0
      */
-    static final String FORWARD_REQUEST_URI = "javax.servlet.forward.request_uri";
+    static final String FORWARD_REQUEST_URI = "jakarta.servlet.forward.request_uri";
 
     /**
      * The name of the request attribute that should be set by the container
@@ -56,7 +56,7 @@ public interface RequestDispatcher {
      *
      * @since Servlet 3.0
      */
-    static final String FORWARD_CONTEXT_PATH = "javax.servlet.forward.context_path";
+    static final String FORWARD_CONTEXT_PATH = "jakarta.servlet.forward.context_path";
 
     /**
      * The name of the request attribute that should be set by the container
@@ -67,7 +67,7 @@ public interface RequestDispatcher {
      *
      * @since Servlet 4.0
      */
-    static final String FORWARD_MAPPING = "javax.servlet.forward.mapping";
+    static final String FORWARD_MAPPING = "jakarta.servlet.forward.mapping";
 
     /**
      * The name of the request attribute that should be set by the container
@@ -78,7 +78,7 @@ public interface RequestDispatcher {
      *
      * @since Servlet 3.0
      */
-    static final String FORWARD_PATH_INFO = "javax.servlet.forward.path_info";
+    static final String FORWARD_PATH_INFO = "jakarta.servlet.forward.path_info";
 
     /**
      * The name of the request attribute that should be set by the container
@@ -89,7 +89,7 @@ public interface RequestDispatcher {
      *
      * @since Servlet 3.0
      */
-    static final String FORWARD_SERVLET_PATH = "javax.servlet.forward.servlet_path";
+    static final String FORWARD_SERVLET_PATH = "jakarta.servlet.forward.servlet_path";
 
     /**
      * The name of the request attribute that should be set by the container
@@ -100,7 +100,7 @@ public interface RequestDispatcher {
      *
      * @since Servlet 3.0
      */
-    static final String FORWARD_QUERY_STRING = "javax.servlet.forward.query_string";
+    static final String FORWARD_QUERY_STRING = "jakarta.servlet.forward.query_string";
 
     /**
      * The name of the request attribute that should be set by the container
@@ -112,7 +112,7 @@ public interface RequestDispatcher {
      *
      * @since Servlet 3.0
      */
-    static final String INCLUDE_REQUEST_URI = "javax.servlet.include.request_uri";
+    static final String INCLUDE_REQUEST_URI = "jakarta.servlet.include.request_uri";
 
     /**
      * The name of the request attribute that should be set by the container
@@ -124,7 +124,7 @@ public interface RequestDispatcher {
      *
      * @since Servlet 3.0
      */
-    static final String INCLUDE_CONTEXT_PATH = "javax.servlet.include.context_path";
+    static final String INCLUDE_CONTEXT_PATH = "jakarta.servlet.include.context_path";
 
     /**
      * The name of the request attribute that should be set by the container
@@ -136,7 +136,7 @@ public interface RequestDispatcher {
      *
      * @since Servlet 3.0
      */
-    static final String INCLUDE_PATH_INFO = "javax.servlet.include.path_info";
+    static final String INCLUDE_PATH_INFO = "jakarta.servlet.include.path_info";
 
     /**
      * The name of the request attribute that should be set by the container
@@ -148,7 +148,7 @@ public interface RequestDispatcher {
      *
      * @since Servlet 4.0
      */
-    static final String INCLUDE_MAPPING = "javax.servlet.include.mapping";
+    static final String INCLUDE_MAPPING = "jakarta.servlet.include.mapping";
 
     /**
      * The name of the request attribute that should be set by the container
@@ -160,7 +160,7 @@ public interface RequestDispatcher {
      *
      * @since Servlet 3.0
      */
-    static final String INCLUDE_SERVLET_PATH = "javax.servlet.include.servlet_path";
+    static final String INCLUDE_SERVLET_PATH = "jakarta.servlet.include.servlet_path";
 
     /**
      * The name of the request attribute that should be set by the container
@@ -172,7 +172,7 @@ public interface RequestDispatcher {
      *
      * @since Servlet 3.0
      */
-    static final String INCLUDE_QUERY_STRING = "javax.servlet.include.query_string";
+    static final String INCLUDE_QUERY_STRING = "jakarta.servlet.include.query_string";
 
     /**
      * The name of the request attribute that should be set by the container
@@ -182,7 +182,7 @@ public interface RequestDispatcher {
      *
      * @since Servlet 3.0
      */
-    public static final String ERROR_EXCEPTION = "javax.servlet.error.exception";
+    public static final String ERROR_EXCEPTION = "jakarta.servlet.error.exception";
 
     /**
      * The name of the request attribute that should be set by the container
@@ -192,7 +192,7 @@ public interface RequestDispatcher {
      *
      * @since Servlet 3.0
      */
-    public static final String ERROR_EXCEPTION_TYPE = "javax.servlet.error.exception_type";
+    public static final String ERROR_EXCEPTION_TYPE = "jakarta.servlet.error.exception_type";
 
     /**
      * The name of the request attribute that should be set by the container
@@ -202,7 +202,7 @@ public interface RequestDispatcher {
      *
      * @since Servlet 3.0
      */
-    public static final String ERROR_MESSAGE = "javax.servlet.error.message";
+    public static final String ERROR_MESSAGE = "jakarta.servlet.error.message";
 
     /**
      * The name of the request attribute that should be set by the container
@@ -212,7 +212,7 @@ public interface RequestDispatcher {
      *
      * @since Servlet 3.0
      */
-    public static final String ERROR_REQUEST_URI = "javax.servlet.error.request_uri";
+    public static final String ERROR_REQUEST_URI = "jakarta.servlet.error.request_uri";
 
     /**
      * The name of the request attribute that should be set by the container
@@ -222,7 +222,7 @@ public interface RequestDispatcher {
      *
      * @since Servlet 3.0
      */
-    public static final String ERROR_SERVLET_NAME = "javax.servlet.error.servlet_name";
+    public static final String ERROR_SERVLET_NAME = "jakarta.servlet.error.servlet_name";
 
     /**
      * The name of the request attribute that should be set by the container
@@ -232,7 +232,7 @@ public interface RequestDispatcher {
      *
      * @since Servlet 3.0
      */
-    public static final String ERROR_STATUS_CODE = "javax.servlet.error.status_code";
+    public static final String ERROR_STATUS_CODE = "jakarta.servlet.error.status_code";
 
     /**
      * Forwards a request from a servlet to another resource (servlet, JSP file,
diff --git a/java/javax/servlet/Servlet.java b/java/jakarta/servlet/Servlet.java
similarity index 97%
rename from java/javax/servlet/Servlet.java
rename to java/jakarta/servlet/Servlet.java
index 73d30bb..2b7d247 100644
--- a/java/javax/servlet/Servlet.java
+++ b/java/jakarta/servlet/Servlet.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package javax.servlet;
+package jakarta.servlet;
 
 import java.io.IOException;
 
@@ -29,8 +29,8 @@ import java.io.IOException;
  *
  * <p>
  * To implement this interface, you can write a generic servlet that extends
- * <code>javax.servlet.GenericServlet</code> or an HTTP servlet that extends
- * <code>javax.servlet.http.HttpServlet</code>.
+ * <code>jakarta.servlet.GenericServlet</code> or an HTTP servlet that extends
+ * <code>jakarta.servlet.http.HttpServlet</code>.
  *
  * <p>
  * This interface defines methods to initialize a servlet, to service requests,
@@ -52,7 +52,7 @@ import java.io.IOException;
  * version, and copyright.
  *
  * @see GenericServlet
- * @see javax.servlet.http.HttpServlet
+ * @see jakarta.servlet.http.HttpServlet
  */
 public interface Servlet {
 
diff --git a/java/javax/servlet/ServletConfig.java b/java/jakarta/servlet/ServletConfig.java
similarity index 99%
rename from java/javax/servlet/ServletConfig.java
rename to java/jakarta/servlet/ServletConfig.java
index be61656..a8cdfc3 100644
--- a/java/javax/servlet/ServletConfig.java
+++ b/java/jakarta/servlet/ServletConfig.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet;
+package jakarta.servlet;
 
 import java.util.Enumeration;
 
diff --git a/java/javax/servlet/ServletContainerInitializer.java b/java/jakarta/servlet/ServletContainerInitializer.java
similarity index 88%
rename from java/javax/servlet/ServletContainerInitializer.java
rename to java/jakarta/servlet/ServletContainerInitializer.java
index 3dace91..94e4b04 100644
--- a/java/javax/servlet/ServletContainerInitializer.java
+++ b/java/jakarta/servlet/ServletContainerInitializer.java
@@ -14,13 +14,13 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
-package javax.servlet;
+package jakarta.servlet;
 
 import java.util.Set;
 
 /**
  * ServletContainerInitializers (SCIs) are registered via an entry in the
- * file META-INF/services/javax.servlet.ServletContainerInitializer that must be
+ * file META-INF/services/jakarta.servlet.ServletContainerInitializer that must be
  * included in the JAR file that contains the SCI implementation.
  * <p>
  * SCI processing is performed regardless of the setting of metadata-complete.
@@ -30,7 +30,7 @@ import java.util.Set;
  * absolute ordering may be defined.
  * <p>
  * SCIs register an interest in annotations (class, method or field) and/or
- * types via the {@link javax.servlet.annotation.HandlesTypes} annotation which
+ * types via the {@link jakarta.servlet.annotation.HandlesTypes} annotation which
  * is added to the class.
  *
  * @since Servlet 3.0
@@ -40,7 +40,7 @@ public interface ServletContainerInitializer {
     /**
      * Receives notification during startup of a web application of the classes
      * within the web application that matched the criteria defined via the
-     * {@link javax.servlet.annotation.HandlesTypes} annotation.
+     * {@link jakarta.servlet.annotation.HandlesTypes} annotation.
      *
      * @param c     The (possibly null) set of classes that met the specified
      *              criteria
diff --git a/java/javax/servlet/ServletContext.java b/java/jakarta/servlet/ServletContext.java
similarity index 93%
rename from java/javax/servlet/ServletContext.java
rename to java/jakarta/servlet/ServletContext.java
index 6083566..95191f9 100644
--- a/java/javax/servlet/ServletContext.java
+++ b/java/jakarta/servlet/ServletContext.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet;
+package jakarta.servlet;
 
 import java.io.InputStream;
 import java.net.MalformedURLException;
@@ -24,7 +24,7 @@ import java.util.EventListener;
 import java.util.Map;
 import java.util.Set;
 
-import javax.servlet.descriptor.JspConfigDescriptor;
+import jakarta.servlet.descriptor.JspConfigDescriptor;
 
 /**
  * Defines a set of methods that a servlet uses to communicate with its servlet
@@ -51,12 +51,12 @@ import javax.servlet.descriptor.JspConfigDescriptor;
  */
 public interface ServletContext {
 
-    public static final String TEMPDIR = "javax.servlet.context.tempdir";
+    public static final String TEMPDIR = "jakarta.servlet.context.tempdir";
 
     /**
      * @since Servlet 3.0
      */
-    public static final String ORDERED_LIBS = "javax.servlet.context.orderedLibs";
+    public static final String ORDERED_LIBS = "jakarta.servlet.context.orderedLibs";
 
     /**
      * Return the main path associated with this context.
@@ -114,7 +114,7 @@ public interface ServletContext {
      *    {@link ServletContextListener#contextInitialized(ServletContextEvent)}
      *    method of a {@link ServletContextListener} that was not defined in a
      *    web.xml file, a web-fragment.xml file nor annotated with
-     *    {@link javax.servlet.annotation.WebListener}. For example, a
+     *    {@link jakarta.servlet.annotation.WebListener}. For example, a
      *    {@link ServletContextListener} defined in a TLD would not be able to
      *    use this method.
      *
@@ -128,7 +128,7 @@ public interface ServletContext {
      *    {@link ServletContextListener#contextInitialized(ServletContextEvent)}
      *    method of a {@link ServletContextListener} that was not defined in a
      *    web.xml file, a web-fragment.xml file nor annotated with
-     *    {@link javax.servlet.annotation.WebListener}. For example, a
+     *    {@link jakarta.servlet.annotation.WebListener}. For example, a
      *    {@link ServletContextListener} defined in a TLD would not be able to
      *    use this method.
      * @since Servlet 3.0 TODO SERVLET3 - Add comments
@@ -464,7 +464,7 @@ public interface ServletContext {
      *    {@link ServletContextListener#contextInitialized(ServletContextEvent)}
      *    method of a {@link ServletContextListener} that was not defined in a
      *    web.xml file, a web-fragment.xml file nor annotated with
-     *    {@link javax.servlet.annotation.WebListener}. For example, a
+     *    {@link jakarta.servlet.annotation.WebListener}. For example, a
      *    {@link ServletContextListener} defined in a TLD would not be able to
      *    use this method.
      * @throws NullPointerException If the provided parameter name is
@@ -566,7 +566,7 @@ public interface ServletContext {
      *    {@link ServletContextListener#contextInitialized(ServletContextEvent)}
      *    method of a {@link ServletContextListener} that was not defined in a
      *    web.xml file, a web-fragment.xml file nor annotated with
-     *    {@link javax.servlet.annotation.WebListener}. For example, a
+     *    {@link jakarta.servlet.annotation.WebListener}. For example, a
      *    {@link ServletContextListener} defined in a TLD would not be able to
      *    use this method.
      * @since Servlet 3.0
@@ -584,7 +584,7 @@ public interface ServletContext {
      *    {@link ServletContextListener#contextInitialized(ServletContextEvent)}
      *    method of a {@link ServletContextListener} that was not defined in a
      *    web.xml file, a web-fragment.xml file nor annotated with
-     *    {@link javax.servlet.annotation.WebListener}. For example, a
+     *    {@link jakarta.servlet.annotation.WebListener}. For example, a
      *    {@link ServletContextListener} defined in a TLD would not be able to
      *    use this method.
      * @since Servlet 3.0
@@ -596,7 +596,7 @@ public interface ServletContext {
      * @param   servletName  Name of servlet to add
      * @param   servletClass Class of servlet to add
      * @return  <code>null</code> if the servlet has already been fully defined,
-     *          else a {@link javax.servlet.ServletRegistration.Dynamic} object
+     *          else a {@link jakarta.servlet.ServletRegistration.Dynamic} object
      *          that can be used to further configure the servlet
      * @throws IllegalStateException
      *             If the context has already been initialised
@@ -604,7 +604,7 @@ public interface ServletContext {
      *    {@link ServletContextListener#contextInitialized(ServletContextEvent)}
      *    method of a {@link ServletContextListener} that was not defined in a
      *    web.xml file, a web-fragment.xml file nor annotated with
-     *    {@link javax.servlet.annotation.WebListener}. For example, a
+     *    {@link jakarta.servlet.annotation.WebListener}. For example, a
      *    {@link ServletContextListener} defined in a TLD would not be able to
      *    use this method.
      * @since Servlet 3.0
@@ -619,7 +619,7 @@ public interface ServletContext {
      * @param jspFile   The path, relative to the web application root, for the
      *                  JSP file to be used for this servlet
      *
-     * @return  a {@link javax.servlet.ServletRegistration.Dynamic} object
+     * @return  a {@link jakarta.servlet.ServletRegistration.Dynamic} object
      *          that can be used to further configure the servlet
      *
      * @since Servlet 4.0
@@ -636,7 +636,7 @@ public interface ServletContext {
      *    {@link ServletContextListener#contextInitialized(ServletContextEvent)}
      *    method of a {@link ServletContextListener} that was not defined in a
      *    web.xml file, a web-fragment.xml file nor annotated with
-     *    {@link javax.servlet.annotation.WebListener}. For example, a
+     *    {@link jakarta.servlet.annotation.WebListener}. For example, a
      *    {@link ServletContextListener} defined in a TLD would not be able to
      *    use this method.
      * @since Servlet 3.0
@@ -657,7 +657,7 @@ public interface ServletContext {
      *    {@link ServletContextListener#contextInitialized(ServletContextEvent)}
      *    method of a {@link ServletContextListener} that was not defined in a
      *    web.xml file, a web-fragment.xml file nor annotated with
-     *    {@link javax.servlet.annotation.WebListener}. For example, a
+     *    {@link jakarta.servlet.annotation.WebListener}. For example, a
      *    {@link ServletContextListener} defined in a TLD would not be able to
      *    use this method.
      *
@@ -672,7 +672,7 @@ public interface ServletContext {
      *    {@link ServletContextListener#contextInitialized(ServletContextEvent)}
      *    method of a {@link ServletContextListener} that was not defined in a
      *    web.xml file, a web-fragment.xml file nor annotated with
-     *    {@link javax.servlet.annotation.WebListener}. For example, a
+     *    {@link jakarta.servlet.annotation.WebListener}. For example, a
      *    {@link ServletContextListener} defined in a TLD would not be able to
      *    use this method.
      * @since Servlet 3.0
@@ -684,13 +684,13 @@ public interface ServletContext {
      * @param   filterName  Name of filter to add
      * @param   className Name of filter class
      * @return  <code>null</code> if the filter has already been fully defined,
-     *          else a {@link javax.servlet.FilterRegistration.Dynamic} object
+     *          else a {@link jakarta.servlet.FilterRegistration.Dynamic} object
      *          that can be used to further configure the filter
      * @throws UnsupportedOperationException    If called from a
      *    {@link ServletContextListener#contextInitialized(ServletContextEvent)}
      *    method of a {@link ServletContextListener} that was not defined in a
      *    web.xml file, a web-fragment.xml file nor annotated with
-     *    {@link javax.servlet.annotation.WebListener}. For example, a
+     *    {@link jakarta.servlet.annotation.WebListener}. For example, a
      *    {@link ServletContextListener} defined in a TLD would not be able to
      *    use this method.
      * @throws IllegalStateException
@@ -704,13 +704,13 @@ public interface ServletContext {
      * @param   filterName  Name of filter to add
      * @param   filter      Filter to add
      * @return  <code>null</code> if the filter has already been fully defined,
-     *          else a {@link javax.servlet.FilterRegistration.Dynamic} object
+     *          else a {@link jakarta.servlet.FilterRegistration.Dynamic} object
      *          that can be used to further configure the filter
      * @throws UnsupportedOperationException    If called from a
      *    {@link ServletContextListener#contextInitialized(ServletContextEvent)}
      *    method of a {@link ServletContextListener} that was not defined in a
      *    web.xml file, a web-fragment.xml file nor annotated with
-     *    {@link javax.servlet.annotation.WebListener}. For example, a
+     *    {@link jakarta.servlet.annotation.WebListener}. For example, a
      *    {@link ServletContextListener} defined in a TLD would not be able to
      *    use this method.
      * @throws IllegalStateException
@@ -724,13 +724,13 @@ public interface ServletContext {
      * @param   filterName  Name of filter to add
      * @param   filterClass Class of filter to add
      * @return  <code>null</code> if the filter has already been fully defined,
-     *          else a {@link javax.servlet.FilterRegistration.Dynamic} object
+     *          else a {@link jakarta.servlet.FilterRegistration.Dynamic} object
      *          that can be used to further configure the filter
      * @throws UnsupportedOperationException    If called from a
      *    {@link ServletContextListener#contextInitialized(ServletContextEvent)}
      *    method of a {@link ServletContextListener} that was not defined in a
      *    web.xml file, a web-fragment.xml file nor annotated with
-     *    {@link javax.servlet.annotation.WebListener}. For example, a
+     *    {@link jakarta.servlet.annotation.WebListener}. For example, a
      *    {@link ServletContextListener} defined in a TLD would not be able to
      *    use this method.
      * @throws IllegalStateException
@@ -749,7 +749,7 @@ public interface ServletContext {
      *    {@link ServletContextListener#contextInitialized(ServletContextEvent)}
      *    method of a {@link ServletContextListener} that was not defined in a
      *    web.xml file, a web-fragment.xml file nor annotated with
-     *    {@link javax.servlet.annotation.WebListener}. For example, a
+     *    {@link jakarta.servlet.annotation.WebListener}. For example, a
      *    {@link ServletContextListener} defined in a TLD would not be able to
      *    use this method.
      * @throws ServletException TODO
@@ -765,7 +765,7 @@ public interface ServletContext {
      *    {@link ServletContextListener#contextInitialized(ServletContextEvent)}
      *    method of a {@link ServletContextListener} that was not defined in a
      *    web.xml file, a web-fragment.xml file nor annotated with
-     *    {@link javax.servlet.annotation.WebListener}. For example, a
+     *    {@link jakarta.servlet.annotation.WebListener}. For example, a
      *    {@link ServletContextListener} defined in a TLD would not be able to
      *    use this method.
      * @since Servlet 3.0
@@ -778,7 +778,7 @@ public interface ServletContext {
      *    {@link ServletContextListener#contextInitialized(ServletContextEvent)}
      *    method of a {@link ServletContextListener} that was not defined in a
      *    web.xml file, a web-fragment.xml file nor annotated with
-     *    {@link javax.servlet.annotation.WebListener}. For example, a
+     *    {@link jakarta.servlet.annotation.WebListener}. For example, a
      *    {@link ServletContextListener} defined in a TLD would not be able to
      *    use this method.
      * @since Servlet 3.0 TODO SERVLET3 - Add comments
@@ -791,7 +791,7 @@ public interface ServletContext {
      *    {@link ServletContextListener#contextInitialized(ServletContextEvent)}
      *    method of a {@link ServletContextListener} that was not defined in a
      *    web.xml file, a web-fragment.xml file nor annotated with
-     *    {@link javax.servlet.annotation.WebListener}. For example, a
+     *    {@link jakarta.servlet.annotation.WebListener}. For example, a
      *    {@link ServletContextListener} defined in a TLD would not be able to
      *    use this method.
      * @since Servlet 3.0 TODO SERVLET3 - Add comments
@@ -812,7 +812,7 @@ public interface ServletContext {
      *    {@link ServletContextListener#contextInitialized(ServletContextEvent)}
      *    method of a {@link ServletContextListener} that was not defined in a
      *    web.xml file, a web-fragment.xml file nor annotated with
-     *    {@link javax.servlet.annotation.WebListener}. For example, a
+     *    {@link jakarta.servlet.annotation.WebListener}. For example, a
      *    {@link ServletContextListener} defined in a TLD would not be able to
      *    use this method.
      * @since Servlet 3.0
@@ -834,7 +834,7 @@ public interface ServletContext {
      *    {@link ServletContextListener#contextInitialized(ServletContextEvent)}
      *    method of a {@link ServletContextListener} that was not defined in a
      *    web.xml file, a web-fragment.xml file nor annotated with
-     *    {@link javax.servlet.annotation.WebListener}. For example, a
+     *    {@link jakarta.servlet.annotation.WebListener}. For example, a
      *    {@link ServletContextListener} defined in a TLD would not be able to
      *    use this method.
      * @since Servlet 3.0
@@ -850,7 +850,7 @@ public interface ServletContext {
      *    {@link ServletContextListener#contextInitialized(ServletContextEvent)}
      *    method of a {@link ServletContextListener} that was not defined in a
      *    web.xml file, a web-fragment.xml file nor annotated with
-     *    {@link javax.servlet.annotation.WebListener}. For example, a
+     *    {@link jakarta.servlet.annotation.WebListener}. For example, a
      *    {@link ServletContextListener} defined in a TLD would not be able to
      *    use this method.
      * @since Servlet 3.0
@@ -864,7 +864,7 @@ public interface ServletContext {
      *    {@link ServletContextListener#contextInitialized(ServletContextEvent)}
      *    method of a {@link ServletContextListener} that was not defined in a
      *    web.xml file, a web-fragment.xml file nor annotated with
-     *    {@link javax.servlet.annotation.WebListener}. For example, a
+     *    {@link jakarta.servlet.annotation.WebListener}. For example, a
      *    {@link ServletContextListener} defined in a TLD would not be able to
      *    use this method.
      * @since Servlet 3.0
@@ -879,7 +879,7 @@ public interface ServletContext {
      *    {@link ServletContextListener#contextInitialized(ServletContextEvent)}
      *    method of a {@link ServletContextListener} that was not defined in a
      *    web.xml file, a web-fragment.xml file nor annotated with
-     *    {@link javax.servlet.annotation.WebListener}. For example, a
+     *    {@link jakarta.servlet.annotation.WebListener}. For example, a
      *    {@link ServletContextListener} defined in a TLD would not be able to
      *    use this method.
      * @since Servlet 3.0
@@ -893,7 +893,7 @@ public interface ServletContext {
      *    {@link ServletContextListener#contextInitialized(ServletContextEvent)}
      *    method of a {@link ServletContextListener} that was not defined in a
      *    web.xml file, a web-fragment.xml file nor annotated with
-     *    {@link javax.servlet.annotation.WebListener}. For example, a
+     *    {@link jakarta.servlet.annotation.WebListener}. For example, a
      *    {@link ServletContextListener} defined in a TLD would not be able to
      *    use this method.
      * @since Servlet 3.0
@@ -910,7 +910,7 @@ public interface ServletContext {
      *    {@link ServletContextListener#contextInitialized(ServletContextEvent)}
      *    method of a {@link ServletContextListener} that was not defined in a
      *    web.xml file, a web-fragment.xml file nor annotated with
-     *    {@link javax.servlet.annotation.WebListener}. For example, a
+     *    {@link jakarta.servlet.annotation.WebListener}. For example, a
      *    {@link ServletContextListener} defined in a TLD would not be able to
      *    use this method.
      * @since Servlet 3.0
@@ -924,7 +924,7 @@ public interface ServletContext {
      *    {@link ServletContextListener#contextInitialized(ServletContextEvent)}
      *    method of a {@link ServletContextListener} that was not defined in a
      *    web.xml file, a web-fragment.xml file nor annotated with
-     *    {@link javax.servlet.annotation.WebListener}. For example, a
+     *    {@link jakarta.servlet.annotation.WebListener}. For example, a
      *    {@link ServletContextListener} defined in a TLD would not be able to
      *    use this method.
      * @since Servlet 3.0 TODO SERVLET3 - Add comments
@@ -940,7 +940,7 @@ public interface ServletContext {
      *    {@link ServletContextListener#contextInitialized(ServletContextEvent)}
      *    method of a {@link ServletContextListener} that was not defined in a
      *    web.xml file, a web-fragment.xml file nor annotated with
-     *    {@link javax.servlet.annotation.WebListener}. For example, a
+     *    {@link jakarta.servlet.annotation.WebListener}. For example, a
      *    {@link ServletContextListener} defined in a TLD would not be able to
      *    use this method.
      * @throws SecurityException if access to the class loader is prevented by a
@@ -956,7 +956,7 @@ public interface ServletContext {
      *    {@link ServletContextListener#contextInitialized(ServletContextEvent)}
      *    method of a {@link ServletContextListener} that was not defined in a
      *    web.xml file, a web-fragment.xml file nor annotated with
-     *    {@link javax.servlet.annotation.WebListener}. For example, a
+     *    {@link jakarta.servlet.annotation.WebListener}. For example, a
      *    {@link ServletContextListener} defined in a TLD would not be able to
      *    use this method.
      * @throws IllegalArgumentException If the list of roleNames is null or
@@ -986,7 +986,7 @@ public interface ServletContext {
      *    {@link ServletContextListener#contextInitialized(ServletContextEvent)}
      *    method of a {@link ServletContextListener} that was not defined in a
      *    web.xml file, a web-fragment.xml file nor annotated with
-     *    {@link javax.servlet.annotation.WebListener}. For example, a
+     *    {@link jakarta.servlet.annotation.WebListener}. For example, a
      *    {@link ServletContextListener} defined in a TLD would not be able to
      *    use this method.
      *
@@ -1004,7 +1004,7 @@ public interface ServletContext {
      *    {@link ServletContextListener#contextInitialized(ServletContextEvent)}
      *    method of a {@link ServletContextListener} that was not defined in a
      *    web.xml file, a web-fragment.xml file nor annotated with
-     *    {@link javax.servlet.annotation.WebListener}. For example, a
+     *    {@link jakarta.servlet.annotation.WebListener}. For example, a
      *    {@link ServletContextListener} defined in a TLD would not be able to
      *    use this method.
      * @throws IllegalStateException If the ServletContext has already been
@@ -1024,7 +1024,7 @@ public interface ServletContext {
      *    {@link ServletContextListener#contextInitialized(ServletContextEvent)}
      *    method of a {@link ServletContextListener} that was not defined in a
      *    web.xml file, a web-fragment.xml file nor annotated with
-     *    {@link javax.servlet.annotation.WebListener}. For example, a
+     *    {@link jakarta.servlet.annotation.WebListener}. For example, a
      *    {@link ServletContextListener} defined in a TLD would not be able to
      *    use this method.
      *
@@ -1043,7 +1043,7 @@ public interface ServletContext {
      *    {@link ServletContextListener#contextInitialized(ServletContextEvent)}
      *    method of a {@link ServletContextListener} that was not defined in a
      *    web.xml file, a web-fragment.xml file nor annotated with
-     *    {@link javax.servlet.annotation.WebListener}. For example, a
+     *    {@link jakarta.servlet.annotation.WebListener}. For example, a
      *    {@link ServletContextListener} defined in a TLD would not be able to
      *    use this method.
      * @throws IllegalStateException If the ServletContext has already been
@@ -1063,7 +1063,7 @@ public interface ServletContext {
      *    {@link ServletContextListener#contextInitialized(ServletContextEvent)}
      *    method of a {@link ServletContextListener} that was not defined in a
      *    web.xml file, a web-fragment.xml file nor annotated with
-     *    {@link javax.servlet.annotation.WebListener}. For example, a
+     *    {@link jakarta.servlet.annotation.WebListener}. For example, a
      *    {@link ServletContextListener} defined in a TLD would not be able to
      *    use this method.
      *
@@ -1082,7 +1082,7 @@ public interface ServletContext {
      *    {@link ServletContextListener#contextInitialized(ServletContextEvent)}
      *    method of a {@link ServletContextListener} that was not defined in a
      *    web.xml file, a web-fragment.xml file nor annotated with
-     *    {@link javax.servlet.annotation.WebListener}. For example, a
+     *    {@link jakarta.servlet.annotation.WebListener}. For example, a
      *    {@link ServletContextListener} defined in a TLD would not be able to
      *    use this method.
      * @throws IllegalStateException If the ServletContext has already been
diff --git a/java/javax/servlet/ServletContextAttributeEvent.java b/java/jakarta/servlet/ServletContextAttributeEvent.java
similarity index 98%
rename from java/javax/servlet/ServletContextAttributeEvent.java
rename to java/jakarta/servlet/ServletContextAttributeEvent.java
index 9373b81..edbb266 100644
--- a/java/javax/servlet/ServletContextAttributeEvent.java
+++ b/java/jakarta/servlet/ServletContextAttributeEvent.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet;
+package jakarta.servlet;
 
 /**
  * This is the event class for notifications about changes to the attributes of
diff --git a/java/javax/servlet/ServletContextAttributeListener.java b/java/jakarta/servlet/ServletContextAttributeListener.java
similarity index 98%
rename from java/javax/servlet/ServletContextAttributeListener.java
rename to java/jakarta/servlet/ServletContextAttributeListener.java
index 61ef615..ced5a7b 100644
--- a/java/javax/servlet/ServletContextAttributeListener.java
+++ b/java/jakarta/servlet/ServletContextAttributeListener.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet;
+package jakarta.servlet;
 
 import java.util.EventListener;
 
diff --git a/java/javax/servlet/ServletContextEvent.java b/java/jakarta/servlet/ServletContextEvent.java
similarity index 98%
rename from java/javax/servlet/ServletContextEvent.java
rename to java/jakarta/servlet/ServletContextEvent.java
index 92a9120..fe53f16 100644
--- a/java/javax/servlet/ServletContextEvent.java
+++ b/java/jakarta/servlet/ServletContextEvent.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet;
+package jakarta.servlet;
 
 /**
  * This is the event class for notifications about changes to the servlet
diff --git a/java/javax/servlet/ServletContextListener.java b/java/jakarta/servlet/ServletContextListener.java
similarity index 98%
rename from java/javax/servlet/ServletContextListener.java
rename to java/jakarta/servlet/ServletContextListener.java
index 7f926b4..3468e8e 100644
--- a/java/javax/servlet/ServletContextListener.java
+++ b/java/jakarta/servlet/ServletContextListener.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet;
+package jakarta.servlet;
 
 import java.util.EventListener;
 
diff --git a/java/javax/servlet/ServletException.java b/java/jakarta/servlet/ServletException.java
similarity index 99%
rename from java/javax/servlet/ServletException.java
rename to java/jakarta/servlet/ServletException.java
index 96e3e5c..dcbe563 100644
--- a/java/javax/servlet/ServletException.java
+++ b/java/jakarta/servlet/ServletException.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet;
+package jakarta.servlet;
 
 /**
  * Defines a general exception a servlet can throw when it encounters
diff --git a/java/javax/servlet/ServletInputStream.java b/java/jakarta/servlet/ServletInputStream.java
similarity index 99%
rename from java/javax/servlet/ServletInputStream.java
rename to java/jakarta/servlet/ServletInputStream.java
index 4e5139e..0c8280c 100644
--- a/java/javax/servlet/ServletInputStream.java
+++ b/java/jakarta/servlet/ServletInputStream.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet;
+package jakarta.servlet;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/java/javax/servlet/ServletOutputStream.java b/java/jakarta/servlet/ServletOutputStream.java
similarity index 98%
rename from java/javax/servlet/ServletOutputStream.java
rename to java/jakarta/servlet/ServletOutputStream.java
index bf40d97..d788b08 100644
--- a/java/javax/servlet/ServletOutputStream.java
+++ b/java/jakarta/servlet/ServletOutputStream.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet;
+package jakarta.servlet;
 
 import java.io.CharConversionException;
 import java.io.IOException;
@@ -35,7 +35,7 @@ import java.util.ResourceBundle;
  */
 public abstract class ServletOutputStream extends OutputStream {
 
-    private static final String LSTRING_FILE = "javax.servlet.LocalStrings";
+    private static final String LSTRING_FILE = "jakarta.servlet.LocalStrings";
     private static final ResourceBundle lStrings = ResourceBundle.getBundle(LSTRING_FILE);
 
     /**
@@ -305,5 +305,5 @@ public abstract class ServletOutputStream extends OutputStream {
      *
      * @since Servlet 3.1
      */
-    public abstract void setWriteListener(javax.servlet.WriteListener listener);
+    public abstract void setWriteListener(jakarta.servlet.WriteListener listener);
 }
diff --git a/java/javax/servlet/ServletRegistration.java b/java/jakarta/servlet/ServletRegistration.java
similarity index 98%
rename from java/javax/servlet/ServletRegistration.java
rename to java/jakarta/servlet/ServletRegistration.java
index 44be9d2..5169f68 100644
--- a/java/javax/servlet/ServletRegistration.java
+++ b/java/jakarta/servlet/ServletRegistration.java
@@ -14,7 +14,7 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
-package javax.servlet;
+package jakarta.servlet;
 
 import java.util.Collection;
 import java.util.Set;
diff --git a/java/javax/servlet/ServletRequest.java b/java/jakarta/servlet/ServletRequest.java
similarity index 99%
rename from java/javax/servlet/ServletRequest.java
rename to java/jakarta/servlet/ServletRequest.java
index 68e00d3..1d0bbdd 100644
--- a/java/javax/servlet/ServletRequest.java
+++ b/java/jakarta/servlet/ServletRequest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet;
+package jakarta.servlet;
 
 import java.io.BufferedReader;
 import java.io.IOException;
@@ -31,9 +31,9 @@ import java.util.Map;
  * and values, attributes, and an input stream. Interfaces that extend
  * <code>ServletRequest</code> can provide additional protocol-specific data
  * (for example, HTTP data is provided by
- * {@link javax.servlet.http.HttpServletRequest}.
+ * {@link jakarta.servlet.http.HttpServletRequest}.
  *
- * @see javax.servlet.http.HttpServletRequest
+ * @see jakarta.servlet.http.HttpServletRequest
  */
 public interface ServletRequest {
 
@@ -44,7 +44,7 @@ public interface ServletRequest {
      * Attributes can be set two ways. The servlet container may set attributes
      * to make available custom information about a request. For example, for
      * requests made using HTTPS, the attribute
-     * <code>javax.servlet.request.X509Certificate</code> can be used to
+     * <code>jakarta.servlet.request.X509Certificate</code> can be used to
      * retrieve information on the certificate of the client. Attributes can
      * also be set programmatically using {@link ServletRequest#setAttribute}.
      * This allows information to be embedded into a request before a
diff --git a/java/javax/servlet/ServletRequestAttributeEvent.java b/java/jakarta/servlet/ServletRequestAttributeEvent.java
similarity index 99%
rename from java/javax/servlet/ServletRequestAttributeEvent.java
rename to java/jakarta/servlet/ServletRequestAttributeEvent.java
index 9b25184..abbdc31 100644
--- a/java/javax/servlet/ServletRequestAttributeEvent.java
+++ b/java/jakarta/servlet/ServletRequestAttributeEvent.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet;
+package jakarta.servlet;
 
 /**
  * This is the event class for notifications of changes to the attributes of the
diff --git a/java/javax/servlet/ServletRequestAttributeListener.java b/java/jakarta/servlet/ServletRequestAttributeListener.java
similarity index 98%
rename from java/javax/servlet/ServletRequestAttributeListener.java
rename to java/jakarta/servlet/ServletRequestAttributeListener.java
index b310c67..5b6b00e 100644
--- a/java/javax/servlet/ServletRequestAttributeListener.java
+++ b/java/jakarta/servlet/ServletRequestAttributeListener.java
@@ -14,7 +14,7 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
-package javax.servlet;
+package jakarta.servlet;
 
 import java.util.EventListener;
 
diff --git a/java/javax/servlet/ServletRequestEvent.java b/java/jakarta/servlet/ServletRequestEvent.java
similarity index 98%
rename from java/javax/servlet/ServletRequestEvent.java
rename to java/jakarta/servlet/ServletRequestEvent.java
index 6d95e92..0005ee2 100644
--- a/java/javax/servlet/ServletRequestEvent.java
+++ b/java/jakarta/servlet/ServletRequestEvent.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet;
+package jakarta.servlet;
 
 /**
  * Events of this kind indicate lifecycle events for a ServletRequest. The
diff --git a/java/javax/servlet/ServletRequestListener.java b/java/jakarta/servlet/ServletRequestListener.java
similarity index 98%
rename from java/javax/servlet/ServletRequestListener.java
rename to java/jakarta/servlet/ServletRequestListener.java
index 86c1ae1..8818f45 100644
--- a/java/javax/servlet/ServletRequestListener.java
+++ b/java/jakarta/servlet/ServletRequestListener.java
@@ -14,7 +14,7 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
-package javax.servlet;
+package jakarta.servlet;
 
 import java.util.EventListener;
 
diff --git a/java/javax/servlet/ServletRequestWrapper.java b/java/jakarta/servlet/ServletRequestWrapper.java
similarity index 98%
rename from java/javax/servlet/ServletRequestWrapper.java
rename to java/jakarta/servlet/ServletRequestWrapper.java
index 53029fa..67ec408 100644
--- a/java/javax/servlet/ServletRequestWrapper.java
+++ b/java/jakarta/servlet/ServletRequestWrapper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet;
+package jakarta.servlet;
 
 import java.io.BufferedReader;
 import java.io.IOException;
@@ -30,10 +30,10 @@ import java.util.ResourceBundle;
  * through to the wrapped request object.
  *
  * @since Servlet 2.3
- * @see javax.servlet.ServletRequest
+ * @see jakarta.servlet.ServletRequest
  */
 public class ServletRequestWrapper implements ServletRequest {
-    private static final String LSTRING_FILE = "javax.servlet.LocalStrings";
+    private static final String LSTRING_FILE = "jakarta.servlet.LocalStrings";
     private static final ResourceBundle lStrings =
         ResourceBundle.getBundle(LSTRING_FILE);
 
diff --git a/java/javax/servlet/ServletResponse.java b/java/jakarta/servlet/ServletResponse.java
similarity index 99%
rename from java/javax/servlet/ServletResponse.java
rename to java/jakarta/servlet/ServletResponse.java
index a3948aa..e1cdd26 100644
--- a/java/javax/servlet/ServletResponse.java
+++ b/java/jakarta/servlet/ServletResponse.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet;
+package jakarta.servlet;
 
 import java.io.IOException;
 import java.io.PrintWriter;
diff --git a/java/javax/servlet/ServletResponseWrapper.java b/java/jakarta/servlet/ServletResponseWrapper.java
similarity index 98%
rename from java/javax/servlet/ServletResponseWrapper.java
rename to java/jakarta/servlet/ServletResponseWrapper.java
index 0d3fb1e..449dea9 100644
--- a/java/javax/servlet/ServletResponseWrapper.java
+++ b/java/jakarta/servlet/ServletResponseWrapper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet;
+package jakarta.servlet;
 
 import java.io.IOException;
 import java.io.PrintWriter;
@@ -28,10 +28,10 @@ import java.util.ResourceBundle;
  * calling through to the wrapped response object.
  *
  * @since v 2.3
- * @see javax.servlet.ServletResponse
+ * @see jakarta.servlet.ServletResponse
  */
 public class ServletResponseWrapper implements ServletResponse {
-    private static final String LSTRING_FILE = "javax.servlet.LocalStrings";
+    private static final String LSTRING_FILE = "jakarta.servlet.LocalStrings";
     private static final ResourceBundle lStrings =
         ResourceBundle.getBundle(LSTRING_FILE);
 
diff --git a/java/javax/servlet/ServletSecurityElement.java b/java/jakarta/servlet/ServletSecurityElement.java
similarity index 97%
rename from java/javax/servlet/ServletSecurityElement.java
rename to java/jakarta/servlet/ServletSecurityElement.java
index 199779e..2b820a3 100644
--- a/java/javax/servlet/ServletSecurityElement.java
+++ b/java/jakarta/servlet/ServletSecurityElement.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet;
+package jakarta.servlet;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -23,8 +23,8 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 
-import javax.servlet.annotation.HttpMethodConstraint;
-import javax.servlet.annotation.ServletSecurity;
+import jakarta.servlet.annotation.HttpMethodConstraint;
+import jakarta.servlet.annotation.ServletSecurity;
 
 /**
  *
diff --git a/java/javax/servlet/SessionCookieConfig.java b/java/jakarta/servlet/SessionCookieConfig.java
similarity index 99%
rename from java/javax/servlet/SessionCookieConfig.java
rename to java/jakarta/servlet/SessionCookieConfig.java
index 564a4ed..6c683a7 100644
--- a/java/javax/servlet/SessionCookieConfig.java
+++ b/java/jakarta/servlet/SessionCookieConfig.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet;
+package jakarta.servlet;
 
 /**
  * Configures the session cookies used by the web application associated with
diff --git a/java/javax/servlet/SessionTrackingMode.java b/java/jakarta/servlet/SessionTrackingMode.java
similarity index 97%
rename from java/javax/servlet/SessionTrackingMode.java
rename to java/jakarta/servlet/SessionTrackingMode.java
index c59fd0c..0ca8684 100644
--- a/java/javax/servlet/SessionTrackingMode.java
+++ b/java/jakarta/servlet/SessionTrackingMode.java
@@ -14,7 +14,7 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
-package javax.servlet;
+package jakarta.servlet;
 
 /**
  * @since Servlet 3.0
diff --git a/java/javax/servlet/SingleThreadModel.java b/java/jakarta/servlet/SingleThreadModel.java
similarity index 98%
rename from java/javax/servlet/SingleThreadModel.java
rename to java/jakarta/servlet/SingleThreadModel.java
index fa9732d..26e8caa 100644
--- a/java/javax/servlet/SingleThreadModel.java
+++ b/java/jakarta/servlet/SingleThreadModel.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet;
+package jakarta.servlet;
 
 /**
  * Ensures that servlets handle only one request at a time. This interface has
diff --git a/java/javax/servlet/UnavailableException.java b/java/jakarta/servlet/UnavailableException.java
similarity index 99%
rename from java/javax/servlet/UnavailableException.java
rename to java/jakarta/servlet/UnavailableException.java
index 6f13f55..c5af76d 100644
--- a/java/javax/servlet/UnavailableException.java
+++ b/java/jakarta/servlet/UnavailableException.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package javax.servlet;
+package jakarta.servlet;
 
 /**
  * Defines an exception that a servlet or filter throws to indicate that it is
diff --git a/java/javax/servlet/WriteListener.java b/java/jakarta/servlet/WriteListener.java
similarity index 98%
rename from java/javax/servlet/WriteListener.java
rename to java/jakarta/servlet/WriteListener.java
index 2ce42ee..6052e21 100644
--- a/java/javax/servlet/WriteListener.java
+++ b/java/jakarta/servlet/WriteListener.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet;
+package jakarta.servlet;
 
 import java.io.IOException;
 
diff --git a/java/javax/servlet/annotation/HandlesTypes.java b/java/jakarta/servlet/annotation/HandlesTypes.java
similarity index 92%
rename from java/javax/servlet/annotation/HandlesTypes.java
rename to java/jakarta/servlet/annotation/HandlesTypes.java
index 66f8dff..e795f73 100644
--- a/java/javax/servlet/annotation/HandlesTypes.java
+++ b/java/jakarta/servlet/annotation/HandlesTypes.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet.annotation;
+package jakarta.servlet.annotation;
 
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;
@@ -23,7 +23,7 @@ import java.lang.annotation.Target;
 
 /**
  * This annotation is used to declare an array of application classes which are
- * passed to a {@link javax.servlet.ServletContainerInitializer}.
+ * passed to a {@link jakarta.servlet.ServletContainerInitializer}.
  *
  * @since Servlet 3.0
  */
diff --git a/java/javax/servlet/annotation/HttpConstraint.java b/java/jakarta/servlet/annotation/HttpConstraint.java
similarity index 88%
rename from java/javax/servlet/annotation/HttpConstraint.java
rename to java/jakarta/servlet/annotation/HttpConstraint.java
index eb4ff09..289a9be 100644
--- a/java/javax/servlet/annotation/HttpConstraint.java
+++ b/java/jakarta/servlet/annotation/HttpConstraint.java
@@ -14,20 +14,20 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet.annotation;
+package jakarta.servlet.annotation;
 
 import java.lang.annotation.Documented;
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 
-import javax.servlet.annotation.ServletSecurity.EmptyRoleSemantic;
-import javax.servlet.annotation.ServletSecurity.TransportGuarantee;
+import jakarta.servlet.annotation.ServletSecurity.EmptyRoleSemantic;
+import jakarta.servlet.annotation.ServletSecurity.TransportGuarantee;
 
 /**
  * This annotation represents the security constraints that are applied to all
  * requests with HTTP protocol method types that are not otherwise represented
- * by a corresponding {@link javax.servlet.annotation.HttpMethodConstraint} in a
- * {@link javax.servlet.annotation.ServletSecurity} annotation.
+ * by a corresponding {@link jakarta.servlet.annotation.HttpMethodConstraint} in a
+ * {@link jakarta.servlet.annotation.ServletSecurity} annotation.
  *
  * @since Servlet 3.0
  */
diff --git a/java/javax/servlet/annotation/HttpMethodConstraint.java b/java/jakarta/servlet/annotation/HttpMethodConstraint.java
similarity index 91%
rename from java/javax/servlet/annotation/HttpMethodConstraint.java
rename to java/jakarta/servlet/annotation/HttpMethodConstraint.java
index e8455ec..a700543 100644
--- a/java/javax/servlet/annotation/HttpMethodConstraint.java
+++ b/java/jakarta/servlet/annotation/HttpMethodConstraint.java
@@ -14,19 +14,19 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet.annotation;
+package jakarta.servlet.annotation;
 
 import java.lang.annotation.Documented;
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 
-import javax.servlet.annotation.ServletSecurity.EmptyRoleSemantic;
-import javax.servlet.annotation.ServletSecurity.TransportGuarantee;
+import jakarta.servlet.annotation.ServletSecurity.EmptyRoleSemantic;
+import jakarta.servlet.annotation.ServletSecurity.TransportGuarantee;
 
 /**
  * Specific security constraints can be applied to different types of request,
  * differentiated by the HTTP protocol method type by using this annotation
- * inside the {@link javax.servlet.annotation.ServletSecurity} annotation.
+ * inside the {@link jakarta.servlet.annotation.ServletSecurity} annotation.
  *
  * @since Servlet 3.0
  *
diff --git a/java/javax/servlet/annotation/MultipartConfig.java b/java/jakarta/servlet/annotation/MultipartConfig.java
similarity index 86%
rename from java/javax/servlet/annotation/MultipartConfig.java
rename to java/jakarta/servlet/annotation/MultipartConfig.java
index 70e0dcc..4cafff3 100644
--- a/java/javax/servlet/annotation/MultipartConfig.java
+++ b/java/jakarta/servlet/annotation/MultipartConfig.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet.annotation;
+package jakarta.servlet.annotation;
 
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;
@@ -22,16 +22,16 @@ import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
 
 /**
- * This annotation is used to indicate that the {@link javax.servlet.Servlet} on
+ * This annotation is used to indicate that the {@link jakarta.servlet.Servlet} on
  * which it is declared expects requests to made using the {@code
  * multipart/form-data} MIME type. <br>
  * <br>
  *
- * {@link javax.servlet.http.Part} components of a given {@code
+ * {@link jakarta.servlet.http.Part} components of a given {@code
  * multipart/form-data} request are retrieved by a Servlet annotated with
  * {@code MultipartConfig} by calling
- * {@link javax.servlet.http.HttpServletRequest#getPart} or
- * {@link javax.servlet.http.HttpServletRequest#getParts}.<br>
+ * {@link jakarta.servlet.http.HttpServletRequest#getPart} or
+ * {@link jakarta.servlet.http.HttpServletRequest#getParts}.<br>
  * <br>
  *
  * E.g. <code>@WebServlet("/upload")}</code><br>
diff --git a/java/javax/servlet/annotation/ServletSecurity.java b/java/jakarta/servlet/annotation/ServletSecurity.java
similarity index 95%
rename from java/javax/servlet/annotation/ServletSecurity.java
rename to java/jakarta/servlet/annotation/ServletSecurity.java
index 356fa0b..7231d72 100644
--- a/java/javax/servlet/annotation/ServletSecurity.java
+++ b/java/jakarta/servlet/annotation/ServletSecurity.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet.annotation;
+package jakarta.servlet.annotation;
 
 import java.lang.annotation.Documented;
 import java.lang.annotation.ElementType;
@@ -24,7 +24,7 @@ import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
 
 /**
- * Declare this annotation on a {@link javax.servlet.Servlet} implementation
+ * Declare this annotation on a {@link jakarta.servlet.Servlet} implementation
  * class to enforce security constraints on HTTP protocol requests.<br>
  * The container applies constraints to the URL patterns mapped to each Servlet
  * which declares this annotation.<br>
diff --git a/java/javax/servlet/annotation/WebFilter.java b/java/jakarta/servlet/annotation/WebFilter.java
similarity index 90%
rename from java/javax/servlet/annotation/WebFilter.java
rename to java/jakarta/servlet/annotation/WebFilter.java
index ddaa08a..f798177 100644
--- a/java/javax/servlet/annotation/WebFilter.java
+++ b/java/jakarta/servlet/annotation/WebFilter.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet.annotation;
+package jakarta.servlet.annotation;
 
 import java.lang.annotation.Documented;
 import java.lang.annotation.ElementType;
@@ -22,16 +22,16 @@ import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
 
-import javax.servlet.DispatcherType;
+import jakarta.servlet.DispatcherType;
 
 /**
- * The annotation used to declare a Servlet {@link javax.servlet.Filter}. <br>
+ * The annotation used to declare a Servlet {@link jakarta.servlet.Filter}. <br>
  * <br>
  *
  * This annotation will be processed by the container during deployment, the
  * Filter class in which it is found will be created as per the configuration
- * and applied to the URL patterns, {@link javax.servlet.Servlet}s and
- * {@link javax.servlet.DispatcherType}s.<br>
+ * and applied to the URL patterns, {@link jakarta.servlet.Servlet}s and
+ * {@link jakarta.servlet.DispatcherType}s.<br>
  * <br>
  *
  * If the name attribute is not defined, the fully qualified name of the class
@@ -47,7 +47,7 @@ import javax.servlet.DispatcherType;
  * should be used.<br>
  * <br>
  *
- * The annotated class MUST implement {@link javax.servlet.Filter}.
+ * The annotated class MUST implement {@link jakarta.servlet.Filter}.
  *
  * E.g.
  *
diff --git a/java/javax/servlet/annotation/WebInitParam.java b/java/jakarta/servlet/annotation/WebInitParam.java
similarity index 88%
rename from java/javax/servlet/annotation/WebInitParam.java
rename to java/jakarta/servlet/annotation/WebInitParam.java
index fe6c784..a2a6a7b 100644
--- a/java/javax/servlet/annotation/WebInitParam.java
+++ b/java/jakarta/servlet/annotation/WebInitParam.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet.annotation;
+package jakarta.servlet.annotation;
 
 import java.lang.annotation.Documented;
 import java.lang.annotation.ElementType;
@@ -24,9 +24,9 @@ import java.lang.annotation.Target;
 
 /**
  * The annotation used to declare an initialization parameter on a
- * {@link javax.servlet.Servlet} or {@link javax.servlet.Filter}, within a
- * {@link javax.servlet.annotation.WebFilter} or
- * {@link javax.servlet.annotation.WebServlet} annotation.<br>
+ * {@link jakarta.servlet.Servlet} or {@link jakarta.servlet.Filter}, within a
+ * {@link jakarta.servlet.annotation.WebFilter} or
+ * {@link jakarta.servlet.annotation.WebServlet} annotation.<br>
  * <br>
  *
  * E.g.
diff --git a/java/javax/servlet/annotation/WebListener.java b/java/jakarta/servlet/annotation/WebListener.java
similarity index 78%
rename from java/javax/servlet/annotation/WebListener.java
rename to java/jakarta/servlet/annotation/WebListener.java
index 6ca1e7e..d345b19 100644
--- a/java/javax/servlet/annotation/WebListener.java
+++ b/java/jakarta/servlet/annotation/WebListener.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet.annotation;
+package jakarta.servlet.annotation;
 
 import java.lang.annotation.Documented;
 import java.lang.annotation.ElementType;
@@ -28,13 +28,13 @@ import java.lang.annotation.Target;
  * <br>
  *
  * The class annotated MUST implement one, (or more), of the following
- * interfaces: {@link javax.servlet.http.HttpSessionAttributeListener},
- * {@link javax.servlet.http.HttpSessionListener},
- * {@link javax.servlet.ServletContextAttributeListener},
- * {@link javax.servlet.ServletContextListener},
- * {@link javax.servlet.ServletRequestAttributeListener},
- * {@link javax.servlet.ServletRequestListener} or
- * {@link javax.servlet.http.HttpSessionIdListener}
+ * interfaces: {@link jakarta.servlet.http.HttpSessionAttributeListener},
+ * {@link jakarta.servlet.http.HttpSessionListener},
+ * {@link jakarta.servlet.ServletContextAttributeListener},
+ * {@link jakarta.servlet.ServletContextListener},
+ * {@link jakarta.servlet.ServletRequestAttributeListener},
+ * {@link jakarta.servlet.ServletRequestListener} or
+ * {@link jakarta.servlet.http.HttpSessionIdListener}
  * <br>
  *
  * E.g. <code>@WebListener</code><br>
diff --git a/java/javax/servlet/annotation/WebServlet.java b/java/jakarta/servlet/annotation/WebServlet.java
similarity index 96%
rename from java/javax/servlet/annotation/WebServlet.java
rename to java/jakarta/servlet/annotation/WebServlet.java
index 29d0b32..6ce3133 100644
--- a/java/javax/servlet/annotation/WebServlet.java
+++ b/java/jakarta/servlet/annotation/WebServlet.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet.annotation;
+package jakarta.servlet.annotation;
 
 import java.lang.annotation.Documented;
 import java.lang.annotation.ElementType;
@@ -24,7 +24,7 @@ import java.lang.annotation.Target;
 
 /**
  * This annotation is used to declare the configuration of a
- * {@link javax.servlet.Servlet}. <br>
+ * {@link jakarta.servlet.Servlet}. <br>
  *
  * If the name attribute is not defined, the fully qualified name of the class
  * is used.<br>
@@ -40,7 +40,7 @@ import java.lang.annotation.Target;
  * <br>
  *
  * The class on which this annotation is declared MUST extend
- * {@link javax.servlet.http.HttpServlet}. <br>
+ * {@link jakarta.servlet.http.HttpServlet}. <br>
  * <br>
  *
  * E.g. <code>@WebServlet("/path")}<br>
diff --git a/java/javax/servlet/descriptor/JspConfigDescriptor.java b/java/jakarta/servlet/descriptor/JspConfigDescriptor.java
similarity index 96%
rename from java/javax/servlet/descriptor/JspConfigDescriptor.java
rename to java/jakarta/servlet/descriptor/JspConfigDescriptor.java
index 27b3cc7..12d0c01 100644
--- a/java/javax/servlet/descriptor/JspConfigDescriptor.java
+++ b/java/jakarta/servlet/descriptor/JspConfigDescriptor.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet.descriptor;
+package jakarta.servlet.descriptor;
 
 import java.util.Collection;
 
diff --git a/java/javax/servlet/descriptor/JspPropertyGroupDescriptor.java b/java/jakarta/servlet/descriptor/JspPropertyGroupDescriptor.java
similarity index 97%
rename from java/javax/servlet/descriptor/JspPropertyGroupDescriptor.java
rename to java/jakarta/servlet/descriptor/JspPropertyGroupDescriptor.java
index ddee69b..94d974d 100644
--- a/java/javax/servlet/descriptor/JspPropertyGroupDescriptor.java
+++ b/java/jakarta/servlet/descriptor/JspPropertyGroupDescriptor.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet.descriptor;
+package jakarta.servlet.descriptor;
 
 import java.util.Collection;
 
diff --git a/java/javax/servlet/descriptor/TaglibDescriptor.java b/java/jakarta/servlet/descriptor/TaglibDescriptor.java
similarity index 96%
rename from java/javax/servlet/descriptor/TaglibDescriptor.java
rename to java/jakarta/servlet/descriptor/TaglibDescriptor.java
index b2e8e98..e4e82a4 100644
--- a/java/javax/servlet/descriptor/TaglibDescriptor.java
+++ b/java/jakarta/servlet/descriptor/TaglibDescriptor.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet.descriptor;
+package jakarta.servlet.descriptor;
 
 /**
  * @since Servlet 3.0
diff --git a/java/javax/servlet/http/Cookie.java b/java/jakarta/servlet/http/Cookie.java
similarity index 99%
rename from java/javax/servlet/http/Cookie.java
rename to java/jakarta/servlet/http/Cookie.java
index 1ee31d4..f0ea2f2 100644
--- a/java/javax/servlet/http/Cookie.java
+++ b/java/jakarta/servlet/http/Cookie.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet.http;
+package jakarta.servlet.http;
 
 import java.io.Serializable;
 import java.security.AccessController;
@@ -431,7 +431,7 @@ public class Cookie implements Cloneable, Serializable {
 
 
 class CookieNameValidator {
-    private static final String LSTRING_FILE = "javax.servlet.http.LocalStrings";
+    private static final String LSTRING_FILE = "jakarta.servlet.http.LocalStrings";
     protected static final ResourceBundle lStrings = ResourceBundle.getBundle(LSTRING_FILE);
 
     protected final BitSet allowed;
diff --git a/java/javax/servlet/http/HttpFilter.java b/java/jakarta/servlet/http/HttpFilter.java
similarity index 94%
rename from java/javax/servlet/http/HttpFilter.java
rename to java/jakarta/servlet/http/HttpFilter.java
index 8622aeb..2cc08df 100644
--- a/java/javax/servlet/http/HttpFilter.java
+++ b/java/jakarta/servlet/http/HttpFilter.java
@@ -14,15 +14,15 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet.http;
+package jakarta.servlet.http;
 
 import java.io.IOException;
 
-import javax.servlet.FilterChain;
-import javax.servlet.GenericFilter;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.GenericFilter;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
 
 public abstract class HttpFilter extends GenericFilter {
 
diff --git a/java/javax/servlet/http/HttpServlet.java b/java/jakarta/servlet/http/HttpServlet.java
similarity index 97%
rename from java/javax/servlet/http/HttpServlet.java
rename to java/jakarta/servlet/http/HttpServlet.java
index aedbee6..fff8468 100644
--- a/java/javax/servlet/http/HttpServlet.java
+++ b/java/jakarta/servlet/http/HttpServlet.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet.http;
+package jakarta.servlet.http;
 
 import java.io.IOException;
 import java.io.OutputStreamWriter;
@@ -26,12 +26,12 @@ import java.text.MessageFormat;
 import java.util.Enumeration;
 import java.util.ResourceBundle;
 
-import javax.servlet.DispatcherType;
-import javax.servlet.GenericServlet;
-import javax.servlet.ServletException;
-import javax.servlet.ServletOutputStream;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
+import jakarta.servlet.DispatcherType;
+import jakarta.servlet.GenericServlet;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletOutputStream;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
 
 
 /**
@@ -88,7 +88,7 @@ public abstract class HttpServlet extends GenericServlet {
     private static final String HEADER_LASTMOD = "Last-Modified";
 
     private static final String LSTRING_FILE =
-        "javax.servlet.http.LocalStrings";
+        "jakarta.servlet.http.LocalStrings";
     private static final ResourceBundle lStrings =
         ResourceBundle.getBundle(LSTRING_FILE);
 
@@ -123,7 +123,7 @@ public abstract class HttpServlet extends GenericServlet {
      * before the response body.
      *
      * <p>Where possible, set the Content-Length header (with the
-     * {@link javax.servlet.ServletResponse#setContentLength} method),
+     * {@link jakarta.servlet.ServletResponse#setContentLength} method),
      * to allow the servlet container to use a persistent connection
      * to return its response to the client, improving performance.
      * The content length is automatically set if the entire response fits
@@ -163,7 +163,7 @@ public abstract class HttpServlet extends GenericServlet {
      * @exception ServletException  if the request for the GET
      *                                  could not be handled
      *
-     * @see javax.servlet.ServletResponse#setContentType
+     * @see jakarta.servlet.ServletResponse#setContentType
      */
     protected void doGet(HttpServletRequest req, HttpServletResponse resp)
         throws ServletException, IOException
@@ -269,7 +269,7 @@ public abstract class HttpServlet extends GenericServlet {
      * response body.
      *
      * <p>Where possible, set the Content-Length header (with the
-     * {@link javax.servlet.ServletResponse#setContentLength} method),
+     * {@link jakarta.servlet.ServletResponse#setContentLength} method),
      * to allow the servlet container to use a persistent connection
      * to return its response to the client, improving performance.
      * The content length is automatically set if the entire response fits
@@ -302,8 +302,8 @@ public abstract class HttpServlet extends GenericServlet {
      * @exception ServletException  if the request for the POST
      *                                  could not be handled
      *
-     * @see javax.servlet.ServletOutputStream
-     * @see javax.servlet.ServletResponse#setContentType
+     * @see jakarta.servlet.ServletOutputStream
+     * @see jakarta.servlet.ServletResponse#setContentType
      */
     protected void doPost(HttpServletRequest req, HttpServletResponse resp)
         throws ServletException, IOException {
@@ -423,7 +423,7 @@ public abstract class HttpServlet extends GenericServlet {
 
     private static Method[] getAllDeclaredMethods(Class<?> c) {
 
-        if (c.equals(javax.servlet.http.HttpServlet.class)) {
+        if (c.equals(jakarta.servlet.http.HttpServlet.class)) {
             return null;
         }
 
@@ -601,7 +601,7 @@ public abstract class HttpServlet extends GenericServlet {
      * <code>service</code> method and dispatches
      * them to the <code>do</code><i>Method</i> methods defined in
      * this class. This method is an HTTP-specific version of the
-     * {@link javax.servlet.Servlet#service} method. There's no
+     * {@link jakarta.servlet.Servlet#service} method. There's no
      * need to override this method.
      *
      * @param req   the {@link HttpServletRequest} object that
@@ -619,7 +619,7 @@ public abstract class HttpServlet extends GenericServlet {
      * @exception ServletException  if the HTTP request
      *                                  cannot be handled
      *
-     * @see javax.servlet.Servlet#service
+     * @see jakarta.servlet.Servlet#service
      */
     protected void service(HttpServletRequest req, HttpServletResponse resp)
         throws ServletException, IOException {
@@ -723,7 +723,7 @@ public abstract class HttpServlet extends GenericServlet {
      * @exception ServletException  if the HTTP request cannot
      *                                  be handled
      *
-     * @see javax.servlet.Servlet#service
+     * @see jakarta.servlet.Servlet#service
      */
     @Override
     public void service(ServletRequest req, ServletResponse res)
@@ -843,7 +843,7 @@ class NoBodyResponse extends HttpServletResponseWrapper {
 class NoBodyOutputStream extends ServletOutputStream {
 
     private static final String LSTRING_FILE =
-        "javax.servlet.http.LocalStrings";
+        "jakarta.servlet.http.LocalStrings";
     private static final ResourceBundle lStrings =
         ResourceBundle.getBundle(LSTRING_FILE);
 
@@ -895,7 +895,7 @@ class NoBodyOutputStream extends ServletOutputStream {
     }
 
     @Override
-    public void setWriteListener(javax.servlet.WriteListener listener) {
+    public void setWriteListener(jakarta.servlet.WriteListener listener) {
         // TODO SERVLET 3.1
     }
 
diff --git a/java/javax/servlet/http/HttpServletMapping.java b/java/jakarta/servlet/http/HttpServletMapping.java
similarity index 91%
rename from java/javax/servlet/http/HttpServletMapping.java
rename to java/jakarta/servlet/http/HttpServletMapping.java
index 3d8bd92..1b1e54d 100644
--- a/java/javax/servlet/http/HttpServletMapping.java
+++ b/java/jakarta/servlet/http/HttpServletMapping.java
@@ -14,9 +14,9 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
-package javax.servlet.http;
+package jakarta.servlet.http;
 
-import javax.servlet.annotation.WebServlet;
+import jakarta.servlet.annotation.WebServlet;
 
 /**
  * Represents how the request from which this object was obtained was mapped to
@@ -40,7 +40,7 @@ public interface HttpServletMapping {
     /**
      * @return The name of the servlet (as specified in web.xml,
      *         {@link WebServlet#name()},
-     *         {@link javax.servlet.ServletContext#addServlet(String, Class)} or
+     *         {@link jakarta.servlet.ServletContext#addServlet(String, Class)} or
      *         one of the other <code>addServlet()</code> methods) that the
      *         request was mapped to.
      */
diff --git a/java/javax/servlet/http/HttpServletRequest.java b/java/jakarta/servlet/http/HttpServletRequest.java
similarity index 99%
rename from java/javax/servlet/http/HttpServletRequest.java
rename to java/jakarta/servlet/http/HttpServletRequest.java
index 872b9b8..3f7272f 100644
--- a/java/javax/servlet/http/HttpServletRequest.java
+++ b/java/jakarta/servlet/http/HttpServletRequest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package javax.servlet.http;
+package jakarta.servlet.http;
 
 import java.io.IOException;
 import java.util.Collection;
@@ -23,11 +23,11 @@ import java.util.Collections;
 import java.util.Enumeration;
 import java.util.Map;
 
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
 
 /**
- * Extends the {@link javax.servlet.ServletRequest} interface to provide request
+ * Extends the {@link jakarta.servlet.ServletRequest} interface to provide request
  * information for HTTP servlets.
  * <p>
  * The servlet container creates an <code>HttpServletRequest</code> object and
diff --git a/java/javax/servlet/http/HttpServletRequestWrapper.java b/java/jakarta/servlet/http/HttpServletRequestWrapper.java
similarity index 98%
rename from java/javax/servlet/http/HttpServletRequestWrapper.java
rename to java/jakarta/servlet/http/HttpServletRequestWrapper.java
index 085e9a5..12f54c1 100644
--- a/java/javax/servlet/http/HttpServletRequestWrapper.java
+++ b/java/jakarta/servlet/http/HttpServletRequestWrapper.java
@@ -14,15 +14,15 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet.http;
+package jakarta.servlet.http;
 
 import java.io.IOException;
 import java.util.Collection;
 import java.util.Enumeration;
 import java.util.Map;
 
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequestWrapper;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequestWrapper;
 
 /**
  * Provides a convenient implementation of the HttpServletRequest interface that
@@ -30,7 +30,7 @@ import javax.servlet.ServletRequestWrapper;
  * This class implements the Wrapper or Decorator pattern. Methods default to
  * calling through to the wrapped request object.
  *
- * @see javax.servlet.http.HttpServletRequest
+ * @see jakarta.servlet.http.HttpServletRequest
  * @since v 2.3
  */
 public class HttpServletRequestWrapper extends ServletRequestWrapper implements
diff --git a/java/javax/servlet/http/HttpServletResponse.java b/java/jakarta/servlet/http/HttpServletResponse.java
similarity index 99%
rename from java/javax/servlet/http/HttpServletResponse.java
rename to java/jakarta/servlet/http/HttpServletResponse.java
index a108654..4fb5538 100644
--- a/java/javax/servlet/http/HttpServletResponse.java
+++ b/java/jakarta/servlet/http/HttpServletResponse.java
@@ -14,14 +14,14 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet.http;
+package jakarta.servlet.http;
 
 import java.io.IOException;
 import java.util.Collection;
 import java.util.Map;
 import java.util.function.Supplier;
 
-import javax.servlet.ServletResponse;
+import jakarta.servlet.ServletResponse;
 
 /**
  * Extends the {@link ServletResponse} interface to provide HTTP-specific
@@ -31,7 +31,7 @@ import javax.servlet.ServletResponse;
  * The servlet container creates an <code>HttpServletResponse</code> object and
  * passes it as an argument to the servlet's service methods (<code>doGet</code>, <code>doPost</code>, etc).
  *
- * @see javax.servlet.ServletResponse
+ * @see jakarta.servlet.ServletResponse
  */
 public interface HttpServletResponse extends ServletResponse {
 
diff --git a/java/javax/servlet/http/HttpServletResponseWrapper.java b/java/jakarta/servlet/http/HttpServletResponseWrapper.java
similarity index 98%
rename from java/javax/servlet/http/HttpServletResponseWrapper.java
rename to java/jakarta/servlet/http/HttpServletResponseWrapper.java
index 7d312d9..582a667 100644
--- a/java/javax/servlet/http/HttpServletResponseWrapper.java
+++ b/java/jakarta/servlet/http/HttpServletResponseWrapper.java
@@ -14,14 +14,14 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet.http;
+package jakarta.servlet.http;
 
 import java.io.IOException;
 import java.util.Collection;
 import java.util.Map;
 import java.util.function.Supplier;
 
-import javax.servlet.ServletResponseWrapper;
+import jakarta.servlet.ServletResponseWrapper;
 
 /**
  * Provides a convenient implementation of the HttpServletResponse interface
@@ -30,7 +30,7 @@ import javax.servlet.ServletResponseWrapper;
  * default to calling through to the wrapped response object.
  *
  * @since v 2.3
- * @see javax.servlet.http.HttpServletResponse
+ * @see jakarta.servlet.http.HttpServletResponse
  */
 public class HttpServletResponseWrapper extends ServletResponseWrapper
         implements HttpServletResponse {
diff --git a/java/javax/servlet/http/HttpSession.java b/java/jakarta/servlet/http/HttpSession.java
similarity index 99%
rename from java/javax/servlet/http/HttpSession.java
rename to java/jakarta/servlet/http/HttpSession.java
index 8501d2e..9b03f0d 100644
--- a/java/javax/servlet/http/HttpSession.java
+++ b/java/jakarta/servlet/http/HttpSession.java
@@ -14,11 +14,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet.http;
+package jakarta.servlet.http;
 
 import java.util.Enumeration;
 
-import javax.servlet.ServletContext;
+import jakarta.servlet.ServletContext;
 
 /**
  * Provides a way to identify a user across more than one page request or visit
diff --git a/java/javax/servlet/http/HttpSessionActivationListener.java b/java/jakarta/servlet/http/HttpSessionActivationListener.java
similarity index 98%
rename from java/javax/servlet/http/HttpSessionActivationListener.java
rename to java/jakarta/servlet/http/HttpSessionActivationListener.java
index 1c13b4c..61cf840 100644
--- a/java/javax/servlet/http/HttpSessionActivationListener.java
+++ b/java/jakarta/servlet/http/HttpSessionActivationListener.java
@@ -14,7 +14,7 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
-package javax.servlet.http;
+package jakarta.servlet.http;
 
 import java.util.EventListener;
 
diff --git a/java/javax/servlet/http/HttpSessionAttributeListener.java b/java/jakarta/servlet/http/HttpSessionAttributeListener.java
similarity index 98%
rename from java/javax/servlet/http/HttpSessionAttributeListener.java
rename to java/jakarta/servlet/http/HttpSessionAttributeListener.java
index 4f2f456..d386c66 100644
--- a/java/javax/servlet/http/HttpSessionAttributeListener.java
+++ b/java/jakarta/servlet/http/HttpSessionAttributeListener.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet.http;
+package jakarta.servlet.http;
 
 import java.util.EventListener;
 
diff --git a/java/javax/servlet/http/HttpSessionBindingEvent.java b/java/jakarta/servlet/http/HttpSessionBindingEvent.java
similarity index 99%
rename from java/javax/servlet/http/HttpSessionBindingEvent.java
rename to java/jakarta/servlet/http/HttpSessionBindingEvent.java
index 70138c7..37720ed 100644
--- a/java/javax/servlet/http/HttpSessionBindingEvent.java
+++ b/java/jakarta/servlet/http/HttpSessionBindingEvent.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package javax.servlet.http;
+package jakarta.servlet.http;
 
 /**
  * Events of this type are either sent to an object that implements
diff --git a/java/javax/servlet/http/HttpSessionBindingListener.java b/java/jakarta/servlet/http/HttpSessionBindingListener.java
similarity index 98%
rename from java/javax/servlet/http/HttpSessionBindingListener.java
rename to java/jakarta/servlet/http/HttpSessionBindingListener.java
index 2e6a80c..daa6905 100644
--- a/java/javax/servlet/http/HttpSessionBindingListener.java
+++ b/java/jakarta/servlet/http/HttpSessionBindingListener.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package javax.servlet.http;
+package jakarta.servlet.http;
 
 import java.util.EventListener;
 
diff --git a/java/javax/servlet/http/HttpSessionContext.java b/java/jakarta/servlet/http/HttpSessionContext.java
similarity index 98%
rename from java/javax/servlet/http/HttpSessionContext.java
rename to java/jakarta/servlet/http/HttpSessionContext.java
index b78ea1d..275d17d 100644
--- a/java/javax/servlet/http/HttpSessionContext.java
+++ b/java/jakarta/servlet/http/HttpSessionContext.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package javax.servlet.http;
+package jakarta.servlet.http;
 
 import java.util.Enumeration;
 
diff --git a/java/javax/servlet/http/HttpSessionEvent.java b/java/jakarta/servlet/http/HttpSessionEvent.java
similarity index 98%
rename from java/javax/servlet/http/HttpSessionEvent.java
rename to java/jakarta/servlet/http/HttpSessionEvent.java
index 3a6ffcf..1ee7c8d 100644
--- a/java/javax/servlet/http/HttpSessionEvent.java
+++ b/java/jakarta/servlet/http/HttpSessionEvent.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet.http;
+package jakarta.servlet.http;
 
 /**
  * This is the class representing event notifications for changes to sessions
diff --git a/java/javax/servlet/http/HttpSessionIdListener.java b/java/jakarta/servlet/http/HttpSessionIdListener.java
similarity index 89%
rename from java/javax/servlet/http/HttpSessionIdListener.java
rename to java/jakarta/servlet/http/HttpSessionIdListener.java
index 0c3c0c2..4636103 100644
--- a/java/javax/servlet/http/HttpSessionIdListener.java
+++ b/java/jakarta/servlet/http/HttpSessionIdListener.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet.http;
+package jakarta.servlet.http;
 
 import java.util.EventListener;
 
@@ -22,8 +22,8 @@ import java.util.EventListener;
  * Implementations of this interface are notified when an {@link HttpSession}'s
  * ID changes. To receive notification events, the implementation class must be
  * configured in the deployment descriptor for the web application, annotated
- * with {@link javax.servlet.annotation.WebListener} or registered by calling an
- * addListener method on the {@link javax.servlet.ServletContext}.
+ * with {@link jakarta.servlet.annotation.WebListener} or registered by calling an
+ * addListener method on the {@link jakarta.servlet.ServletContext}.
  *
  * @see HttpSessionEvent
  * @see HttpServletRequest#changeSessionId()
diff --git a/java/javax/servlet/http/HttpSessionListener.java b/java/jakarta/servlet/http/HttpSessionListener.java
similarity index 98%
rename from java/javax/servlet/http/HttpSessionListener.java
rename to java/jakarta/servlet/http/HttpSessionListener.java
index 7941f37..181d328 100644
--- a/java/javax/servlet/http/HttpSessionListener.java
+++ b/java/jakarta/servlet/http/HttpSessionListener.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet.http;
+package jakarta.servlet.http;
 
 import java.util.EventListener;
 
diff --git a/java/javax/servlet/http/HttpUpgradeHandler.java b/java/jakarta/servlet/http/HttpUpgradeHandler.java
similarity index 98%
rename from java/javax/servlet/http/HttpUpgradeHandler.java
rename to java/jakarta/servlet/http/HttpUpgradeHandler.java
index 095200c..b1b152b 100644
--- a/java/javax/servlet/http/HttpUpgradeHandler.java
+++ b/java/jakarta/servlet/http/HttpUpgradeHandler.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet.http;
+package jakarta.servlet.http;
 
 /**
  * Interface between the HTTP upgrade process and the new protocol.
diff --git a/java/javax/servlet/http/HttpUtils.java b/java/jakarta/servlet/http/HttpUtils.java
similarity index 98%
rename from java/javax/servlet/http/HttpUtils.java
rename to java/jakarta/servlet/http/HttpUtils.java
index 4356af1..17acf86 100644
--- a/java/javax/servlet/http/HttpUtils.java
+++ b/java/jakarta/servlet/http/HttpUtils.java
@@ -15,7 +15,7 @@
 * limitations under the License.
 */
 
-package javax.servlet.http;
+package jakarta.servlet.http;
 
 import java.io.IOException;
 import java.util.Arrays;
@@ -23,7 +23,7 @@ import java.util.Hashtable;
 import java.util.ResourceBundle;
 import java.util.StringTokenizer;
 
-import javax.servlet.ServletInputStream;
+import jakarta.servlet.ServletInputStream;
 
 /**
  * @deprecated            As of Java(tm) Servlet API 2.3.
@@ -35,7 +35,7 @@ import javax.servlet.ServletInputStream;
 public class HttpUtils {
 
     private static final String LSTRING_FILE =
-        "javax.servlet.http.LocalStrings";
+        "jakarta.servlet.http.LocalStrings";
     private static final ResourceBundle lStrings =
         ResourceBundle.getBundle(LSTRING_FILE);
 
diff --git a/java/javax/servlet/http/LocalStrings.properties b/java/jakarta/servlet/http/LocalStrings.properties
similarity index 100%
rename from java/javax/servlet/http/LocalStrings.properties
rename to java/jakarta/servlet/http/LocalStrings.properties
diff --git a/java/javax/servlet/http/LocalStrings_de.properties b/java/jakarta/servlet/http/LocalStrings_de.properties
similarity index 100%
rename from java/javax/servlet/http/LocalStrings_de.properties
rename to java/jakarta/servlet/http/LocalStrings_de.properties
diff --git a/java/javax/servlet/http/LocalStrings_es.properties b/java/jakarta/servlet/http/LocalStrings_es.properties
similarity index 100%
rename from java/javax/servlet/http/LocalStrings_es.properties
rename to java/jakarta/servlet/http/LocalStrings_es.properties
diff --git a/java/javax/servlet/http/LocalStrings_fr.properties b/java/jakarta/servlet/http/LocalStrings_fr.properties
similarity index 100%
rename from java/javax/servlet/http/LocalStrings_fr.properties
rename to java/jakarta/servlet/http/LocalStrings_fr.properties
diff --git a/java/javax/servlet/http/LocalStrings_ja.properties b/java/jakarta/servlet/http/LocalStrings_ja.properties
similarity index 100%
rename from java/javax/servlet/http/LocalStrings_ja.properties
rename to java/jakarta/servlet/http/LocalStrings_ja.properties
diff --git a/java/javax/servlet/http/LocalStrings_ko.properties b/java/jakarta/servlet/http/LocalStrings_ko.properties
similarity index 100%
rename from java/javax/servlet/http/LocalStrings_ko.properties
rename to java/jakarta/servlet/http/LocalStrings_ko.properties
diff --git a/java/javax/servlet/http/LocalStrings_zh_CN.properties b/java/jakarta/servlet/http/LocalStrings_zh_CN.properties
similarity index 100%
rename from java/javax/servlet/http/LocalStrings_zh_CN.properties
rename to java/jakarta/servlet/http/LocalStrings_zh_CN.properties
diff --git a/java/javax/servlet/http/MappingMatch.java b/java/jakarta/servlet/http/MappingMatch.java
similarity index 97%
rename from java/javax/servlet/http/MappingMatch.java
rename to java/jakarta/servlet/http/MappingMatch.java
index 97d2d66..1bf4992 100644
--- a/java/javax/servlet/http/MappingMatch.java
+++ b/java/jakarta/servlet/http/MappingMatch.java
@@ -14,7 +14,7 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
-package javax.servlet.http;
+package jakarta.servlet.http;
 
 /**
  * Represents the ways that a request can be mapped to a servlet
diff --git a/java/javax/servlet/http/Part.java b/java/jakarta/servlet/http/Part.java
similarity index 97%
rename from java/javax/servlet/http/Part.java
rename to java/jakarta/servlet/http/Part.java
index 5326054..bd4ad86 100644
--- a/java/javax/servlet/http/Part.java
+++ b/java/jakarta/servlet/http/Part.java
@@ -14,7 +14,7 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
-package javax.servlet.http;
+package jakarta.servlet.http;
 
 import java.io.IOException;
 import java.io.InputStream;
@@ -87,7 +87,7 @@ public interface Part {
      *
      * @param fileName  The location into which the uploaded part should be
      *                  stored. Relative locations are relative to {@link
-     *                  javax.servlet.MultipartConfigElement#getLocation()}
+     *                  jakarta.servlet.MultipartConfigElement#getLocation()}
      *
      * @throws IOException if an I/O occurs while attempting to write the part
      */
diff --git a/java/javax/servlet/http/PushBuilder.java b/java/jakarta/servlet/http/PushBuilder.java
similarity index 99%
rename from java/javax/servlet/http/PushBuilder.java
rename to java/jakarta/servlet/http/PushBuilder.java
index a0f3e67..166737d 100644
--- a/java/javax/servlet/http/PushBuilder.java
+++ b/java/jakarta/servlet/http/PushBuilder.java
@@ -14,7 +14,7 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
-package javax.servlet.http;
+package jakarta.servlet.http;
 
 import java.util.Set;
 
diff --git a/java/javax/servlet/http/WebConnection.java b/java/jakarta/servlet/http/WebConnection.java
similarity index 93%
rename from java/javax/servlet/http/WebConnection.java
rename to java/jakarta/servlet/http/WebConnection.java
index a68a298..3a50c68 100644
--- a/java/javax/servlet/http/WebConnection.java
+++ b/java/jakarta/servlet/http/WebConnection.java
@@ -14,12 +14,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet.http;
+package jakarta.servlet.http;
 
 import java.io.IOException;
 
-import javax.servlet.ServletInputStream;
-import javax.servlet.ServletOutputStream;
+import jakarta.servlet.ServletInputStream;
+import jakarta.servlet.ServletOutputStream;
 
 /**
  * The interface used by an {@link HttpUpgradeHandler} to interact with an upgraded
diff --git a/java/javax/servlet/http/package.html b/java/jakarta/servlet/http/package.html
similarity index 93%
rename from java/javax/servlet/http/package.html
rename to java/jakarta/servlet/http/package.html
index 08e6692..b418dc8 100644
--- a/java/javax/servlet/http/package.html
+++ b/java/jakarta/servlet/http/package.html
@@ -20,7 +20,7 @@
 </HEAD>
 <BODY BGCOLOR="white">
 
-The javax.servlet.http package contains a number of classes and interfaces
+The jakarta.servlet.http package contains a number of classes and interfaces
 that describe and define the contracts between a servlet class
 running under the HTTP protocol and the runtime environment provided
 for an instance of such a class by a conforming servlet container.
diff --git a/java/javax/servlet/jsp/ErrorData.java b/java/jakarta/servlet/jsp/ErrorData.java
similarity index 98%
rename from java/javax/servlet/jsp/ErrorData.java
rename to java/jakarta/servlet/jsp/ErrorData.java
index 45615fc..44f73cb 100644
--- a/java/javax/servlet/jsp/ErrorData.java
+++ b/java/jakarta/servlet/jsp/ErrorData.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet.jsp;
+package jakarta.servlet.jsp;
 
 /**
  * Contains information about an error, for error pages. The information
diff --git a/java/javax/servlet/jsp/HttpJspPage.java b/java/jakarta/servlet/jsp/HttpJspPage.java
similarity index 93%
rename from java/javax/servlet/jsp/HttpJspPage.java
rename to java/jakarta/servlet/jsp/HttpJspPage.java
index 1ee74d2..558574b 100644
--- a/java/javax/servlet/jsp/HttpJspPage.java
+++ b/java/jakarta/servlet/jsp/HttpJspPage.java
@@ -15,13 +15,13 @@
 * limitations under the License.
 */
 
-package javax.servlet.jsp;
+package jakarta.servlet.jsp;
 
 import java.io.IOException;
 
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
 /**
  * The HttpJspPage interface describes the interaction that a JSP Page
diff --git a/java/javax/servlet/jsp/JspApplicationContext.java b/java/jakarta/servlet/jsp/JspApplicationContext.java
similarity index 98%
rename from java/javax/servlet/jsp/JspApplicationContext.java
rename to java/jakarta/servlet/jsp/JspApplicationContext.java
index a998f32..2cfaa4e 100644
--- a/java/javax/servlet/jsp/JspApplicationContext.java
+++ b/java/jakarta/servlet/jsp/JspApplicationContext.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet.jsp;
+package jakarta.servlet.jsp;
 
 import jakarta.el.ELContextListener;
 import jakarta.el.ELResolver;
diff --git a/java/javax/servlet/jsp/JspContext.java b/java/jakarta/servlet/jsp/JspContext.java
similarity index 98%
rename from java/javax/servlet/jsp/JspContext.java
rename to java/jakarta/servlet/jsp/JspContext.java
index e9d4964..855417b 100644
--- a/java/javax/servlet/jsp/JspContext.java
+++ b/java/jakarta/servlet/jsp/JspContext.java
@@ -14,7 +14,7 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
-package javax.servlet.jsp;
+package jakarta.servlet.jsp;
 
 import java.util.Enumeration;
 
@@ -225,7 +225,7 @@ public abstract class JspContext {
      *             JspApplicationContext.getExpressionFactory()
      */
     @SuppressWarnings("dep-ann") // TCK signature test fails with annotation
-    public abstract javax.servlet.jsp.el.ExpressionEvaluator getExpressionEvaluator();
+    public abstract jakarta.servlet.jsp.el.ExpressionEvaluator getExpressionEvaluator();
 
 
     public abstract ELContext getELContext();
@@ -243,7 +243,7 @@ public abstract class JspContext {
      *             jspContext.getELContext().getELResolver()
      */
     @SuppressWarnings("dep-ann") // TCK signature test fails with annotation
-    public abstract javax.servlet.jsp.el.VariableResolver getVariableResolver();
+    public abstract jakarta.servlet.jsp.el.VariableResolver getVariableResolver();
 
     /**
      * Return a new JspWriter object that sends output to the
diff --git a/java/javax/servlet/jsp/JspEngineInfo.java b/java/jakarta/servlet/jsp/JspEngineInfo.java
similarity index 98%
rename from java/javax/servlet/jsp/JspEngineInfo.java
rename to java/jakarta/servlet/jsp/JspEngineInfo.java
index e369b48..805919c 100644
--- a/java/javax/servlet/jsp/JspEngineInfo.java
+++ b/java/jakarta/servlet/jsp/JspEngineInfo.java
@@ -14,7 +14,7 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
-package javax.servlet.jsp;
+package jakarta.servlet.jsp;
 
 /**
  * The JspEngineInfo is an abstract class that provides information on the
diff --git a/java/javax/servlet/jsp/JspException.java b/java/jakarta/servlet/jsp/JspException.java
similarity index 99%
rename from java/javax/servlet/jsp/JspException.java
rename to java/jakarta/servlet/jsp/JspException.java
index 67671f5..4e7accc 100644
--- a/java/javax/servlet/jsp/JspException.java
+++ b/java/jakarta/servlet/jsp/JspException.java
@@ -14,7 +14,7 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
-package javax.servlet.jsp;
+package jakarta.servlet.jsp;
 
 /**
  * A generic exception known to the JSP engine; uncaught
diff --git a/java/javax/servlet/jsp/JspFactory.java b/java/jakarta/servlet/jsp/JspFactory.java
similarity index 94%
rename from java/javax/servlet/jsp/JspFactory.java
rename to java/jakarta/servlet/jsp/JspFactory.java
index 6ebf094..11ec45f 100644
--- a/java/javax/servlet/jsp/JspFactory.java
+++ b/java/jakarta/servlet/jsp/JspFactory.java
@@ -14,12 +14,12 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
-package javax.servlet.jsp;
+package jakarta.servlet.jsp;
 
-import javax.servlet.Servlet;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
+import jakarta.servlet.Servlet;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
 
 /**
  * <p>
@@ -78,7 +78,7 @@ public abstract class JspFactory {
     /**
      * <p>
      * obtains an instance of an implementation dependent
-     * javax.servlet.jsp.PageContext abstract class for the calling Servlet
+     * jakarta.servlet.jsp.PageContext abstract class for the calling Servlet
      * and currently pending request and response.
      * </p>
      *
@@ -110,7 +110,7 @@ public abstract class JspFactory {
      *
      * @return the page context
      *
-     * @see javax.servlet.jsp.PageContext
+     * @see jakarta.servlet.jsp.PageContext
      */
 
     public abstract PageContext getPageContext(Servlet servlet,
diff --git a/java/javax/servlet/jsp/JspPage.java b/java/jakarta/servlet/jsp/JspPage.java
similarity index 98%
rename from java/javax/servlet/jsp/JspPage.java
rename to java/jakarta/servlet/jsp/JspPage.java
index ddeb9a9..81b8766 100644
--- a/java/javax/servlet/jsp/JspPage.java
+++ b/java/jakarta/servlet/jsp/JspPage.java
@@ -14,9 +14,9 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
-package javax.servlet.jsp;
+package jakarta.servlet.jsp;
 
-import javax.servlet.Servlet;
+import jakarta.servlet.Servlet;
 
 /**
  * The JspPage interface describes the generic interaction that a JSP Page
diff --git a/java/javax/servlet/jsp/JspTagException.java b/java/jakarta/servlet/jsp/JspTagException.java
similarity index 99%
rename from java/javax/servlet/jsp/JspTagException.java
rename to java/jakarta/servlet/jsp/JspTagException.java
index ce554b6..1e6f642 100644
--- a/java/javax/servlet/jsp/JspTagException.java
+++ b/java/jakarta/servlet/jsp/JspTagException.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet.jsp;
+package jakarta.servlet.jsp;
 
 /**
  * Exception to be used by a Tag Handler to indicate some unrecoverable error.
diff --git a/java/javax/servlet/jsp/JspWriter.java b/java/jakarta/servlet/jsp/JspWriter.java
similarity index 99%
rename from java/javax/servlet/jsp/JspWriter.java
rename to java/jakarta/servlet/jsp/JspWriter.java
index 9d0be8b..5eafd56 100644
--- a/java/javax/servlet/jsp/JspWriter.java
+++ b/java/jakarta/servlet/jsp/JspWriter.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package javax.servlet.jsp;
+package jakarta.servlet.jsp;
 
 import java.io.IOException;
 
diff --git a/java/javax/servlet/jsp/PageContext.java b/java/jakarta/servlet/jsp/PageContext.java
similarity index 94%
rename from java/javax/servlet/jsp/PageContext.java
rename to java/jakarta/servlet/jsp/PageContext.java
index 598b4f0..d9ba3f4 100644
--- a/java/javax/servlet/jsp/PageContext.java
+++ b/java/jakarta/servlet/jsp/PageContext.java
@@ -15,19 +15,19 @@
 * limitations under the License.
 */
 
-package javax.servlet.jsp;
+package jakarta.servlet.jsp;
 
 import java.io.IOException;
 
-import javax.servlet.RequestDispatcher;
-import javax.servlet.Servlet;
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpSession;
-import javax.servlet.jsp.tagext.BodyContent;
+import jakarta.servlet.RequestDispatcher;
+import jakarta.servlet.Servlet;
+import jakarta.servlet.ServletConfig;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.HttpSession;
+import jakarta.servlet.jsp.tagext.BodyContent;
 
 /**
  * <p>
@@ -137,55 +137,55 @@ public abstract class PageContext
      * Name used to store the Servlet in this PageContext's nametables.
      */
 
-    public static final String PAGE = "javax.servlet.jsp.jspPage";
+    public static final String PAGE = "jakarta.servlet.jsp.jspPage";
 
     /**
      * Name used to store this PageContext in it's own name table.
      */
 
-    public static final String PAGECONTEXT = "javax.servlet.jsp.jspPageContext";
+    public static final String PAGECONTEXT = "jakarta.servlet.jsp.jspPageContext";
 
     /**
      * Name used to store ServletRequest in PageContext name table.
      */
 
-    public static final String REQUEST = "javax.servlet.jsp.jspRequest";
+    public static final String REQUEST = "jakarta.servlet.jsp.jspRequest";
 
     /**
      * Name used to store ServletResponse in PageContext name table.
      */
 
-    public static final String RESPONSE = "javax.servlet.jsp.jspResponse";
+    public static final String RESPONSE = "jakarta.servlet.jsp.jspResponse";
 
     /**
      * Name used to store ServletConfig in PageContext name table.
      */
 
-    public static final String CONFIG = "javax.servlet.jsp.jspConfig";
+    public static final String CONFIG = "jakarta.servlet.jsp.jspConfig";
 
     /**
      * Name used to store HttpSession in PageContext name table.
      */
 
-    public static final String SESSION = "javax.servlet.jsp.jspSession";
+    public static final String SESSION = "jakarta.servlet.jsp.jspSession";
     /**
      * Name used to store current JspWriter in PageContext name table.
      */
 
-    public static final String OUT = "javax.servlet.jsp.jspOut";
+    public static final String OUT = "jakarta.servlet.jsp.jspOut";
 
     /**
      * Name used to store ServletContext in PageContext name table.
      */
 
-    public static final String APPLICATION = "javax.servlet.jsp.jspApplication";
+    public static final String APPLICATION = "jakarta.servlet.jsp.jspApplication";
 
     /**
      * Name used to store uncaught exception in ServletRequest attribute
      * list and PageContext name table.
      */
 
-    public static final String EXCEPTION = "javax.servlet.jsp.jspException";
+    public static final String EXCEPTION = "jakarta.servlet.jsp.jspException";
 
     /**
      * <p>
@@ -254,7 +254,7 @@ public abstract class PageContext
 
     /**
      * The current value of the page object (In a Servlet environment,
-     * this is an instance of javax.servlet.Servlet).
+     * this is an instance of jakarta.servlet.Servlet).
      *
      * @return the Page implementation class instance associated
      *     with this PageContext
diff --git a/java/javax/servlet/jsp/SkipPageException.java b/java/jakarta/servlet/jsp/SkipPageException.java
similarity index 93%
rename from java/javax/servlet/jsp/SkipPageException.java
rename to java/jakarta/servlet/jsp/SkipPageException.java
index 2098c9b..d3b89cb 100644
--- a/java/javax/servlet/jsp/SkipPageException.java
+++ b/java/jakarta/servlet/jsp/SkipPageException.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet.jsp;
+package jakarta.servlet.jsp;
 
 /**
  * Exception to indicate the calling page must cease evaluation. Thrown by a
@@ -27,9 +27,9 @@ package javax.servlet.jsp;
  * undefined. The exception is intended to be thrown inside SimpleTag handlers
  * and in JSP fragments.
  *
- * @see javax.servlet.jsp.tagext.SimpleTag#doTag
- * @see javax.servlet.jsp.tagext.JspFragment#invoke
- * @see javax.servlet.jsp.tagext.Tag#doEndTag
+ * @see jakarta.servlet.jsp.tagext.SimpleTag#doTag
+ * @see jakarta.servlet.jsp.tagext.JspFragment#invoke
+ * @see jakarta.servlet.jsp.tagext.Tag#doEndTag
  * @since 2.0
  */
 public class SkipPageException extends JspException {
diff --git a/java/javax/servlet/jsp/el/ELException.java b/java/jakarta/servlet/jsp/el/ELException.java
similarity index 98%
rename from java/javax/servlet/jsp/el/ELException.java
rename to java/jakarta/servlet/jsp/el/ELException.java
index 2facb9b..0149507 100644
--- a/java/javax/servlet/jsp/el/ELException.java
+++ b/java/jakarta/servlet/jsp/el/ELException.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package javax.servlet.jsp.el;
+package jakarta.servlet.jsp.el;
 
 /**
  * Represents any of the exception conditions that arise during the operation
diff --git a/java/javax/servlet/jsp/el/ELParseException.java b/java/jakarta/servlet/jsp/el/ELParseException.java
similarity index 98%
rename from java/javax/servlet/jsp/el/ELParseException.java
rename to java/jakarta/servlet/jsp/el/ELParseException.java
index 6eeaf34..43678eb 100644
--- a/java/javax/servlet/jsp/el/ELParseException.java
+++ b/java/jakarta/servlet/jsp/el/ELParseException.java
@@ -15,7 +15,7 @@
 * limitations under the License.
 */
 
-package javax.servlet.jsp.el;
+package jakarta.servlet.jsp.el;
 
 
 /**
diff --git a/java/javax/servlet/jsp/el/Expression.java b/java/jakarta/servlet/jsp/el/Expression.java
similarity index 98%
rename from java/javax/servlet/jsp/el/Expression.java
rename to java/jakarta/servlet/jsp/el/Expression.java
index 203f408..ffe3c58 100644
--- a/java/javax/servlet/jsp/el/Expression.java
+++ b/java/jakarta/servlet/jsp/el/Expression.java
@@ -16,7 +16,7 @@
 */
 
 
-package javax.servlet.jsp.el;
+package jakarta.servlet.jsp.el;
 
 
 /**
diff --git a/java/javax/servlet/jsp/el/ExpressionEvaluator.java b/java/jakarta/servlet/jsp/el/ExpressionEvaluator.java
similarity index 99%
rename from java/javax/servlet/jsp/el/ExpressionEvaluator.java
rename to java/jakarta/servlet/jsp/el/ExpressionEvaluator.java
index 32d81bf..7c4e6e8 100644
--- a/java/javax/servlet/jsp/el/ExpressionEvaluator.java
+++ b/java/jakarta/servlet/jsp/el/ExpressionEvaluator.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package javax.servlet.jsp.el;
+package jakarta.servlet.jsp.el;
 
 /**
  * <p>
diff --git a/java/javax/servlet/jsp/el/FunctionMapper.java b/java/jakarta/servlet/jsp/el/FunctionMapper.java
similarity index 98%
rename from java/javax/servlet/jsp/el/FunctionMapper.java
rename to java/jakarta/servlet/jsp/el/FunctionMapper.java
index a7a983f..1242e54 100644
--- a/java/javax/servlet/jsp/el/FunctionMapper.java
+++ b/java/jakarta/servlet/jsp/el/FunctionMapper.java
@@ -15,7 +15,7 @@
 * limitations under the License.
 */
 
-package javax.servlet.jsp.el;
+package jakarta.servlet.jsp.el;
 
 /**
  * <p>The interface to a map between EL function names and methods.</p>
diff --git a/java/javax/servlet/jsp/el/ImplicitObjectELResolver.java b/java/jakarta/servlet/jsp/el/ImplicitObjectELResolver.java
similarity index 98%
rename from java/javax/servlet/jsp/el/ImplicitObjectELResolver.java
rename to java/jakarta/servlet/jsp/el/ImplicitObjectELResolver.java
index 6806a59..e749c40 100644
--- a/java/javax/servlet/jsp/el/ImplicitObjectELResolver.java
+++ b/java/jakarta/servlet/jsp/el/ImplicitObjectELResolver.java
@@ -15,7 +15,7 @@
 * limitations under the License.
 */
 
-package javax.servlet.jsp.el;
+package jakarta.servlet.jsp.el;
 
 import java.beans.FeatureDescriptor;
 import java.util.AbstractMap;
@@ -30,15 +30,14 @@ import java.util.Objects;
 import java.util.Set;
 import java.util.Vector;
 
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
-import javax.servlet.jsp.JspContext;
-import javax.servlet.jsp.PageContext;
-
 import jakarta.el.ELContext;
 import jakarta.el.ELResolver;
 import jakarta.el.PropertyNotWritableException;
+import jakarta.servlet.http.Cookie;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpSession;
+import jakarta.servlet.jsp.JspContext;
+import jakarta.servlet.jsp.PageContext;
 
 /**
  *
diff --git a/java/javax/servlet/jsp/el/ScopedAttributeELResolver.java b/java/jakarta/servlet/jsp/el/ScopedAttributeELResolver.java
similarity index 98%
rename from java/javax/servlet/jsp/el/ScopedAttributeELResolver.java
rename to java/jakarta/servlet/jsp/el/ScopedAttributeELResolver.java
index 4674937..10fdd0a 100644
--- a/java/javax/servlet/jsp/el/ScopedAttributeELResolver.java
+++ b/java/jakarta/servlet/jsp/el/ScopedAttributeELResolver.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet.jsp.el;
+package jakarta.servlet.jsp.el;
 
 import java.beans.FeatureDescriptor;
 import java.util.ArrayList;
@@ -23,13 +23,12 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Objects;
 
-import javax.servlet.jsp.JspContext;
-import javax.servlet.jsp.PageContext;
-
 import jakarta.el.ELClass;
 import jakarta.el.ELContext;
 import jakarta.el.ELResolver;
 import jakarta.el.ImportHandler;
+import jakarta.servlet.jsp.JspContext;
+import jakarta.servlet.jsp.PageContext;
 
 /**
 *
diff --git a/java/javax/servlet/jsp/el/VariableResolver.java b/java/jakarta/servlet/jsp/el/VariableResolver.java
similarity index 98%
rename from java/javax/servlet/jsp/el/VariableResolver.java
rename to java/jakarta/servlet/jsp/el/VariableResolver.java
index b659d3c..d7352b2 100644
--- a/java/javax/servlet/jsp/el/VariableResolver.java
+++ b/java/jakarta/servlet/jsp/el/VariableResolver.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet.jsp.el;
+package jakarta.servlet.jsp.el;
 
 /**
  * <p>
diff --git a/java/javax/servlet/jsp/el/package.html b/java/jakarta/servlet/jsp/el/package.html
similarity index 100%
rename from java/javax/servlet/jsp/el/package.html
rename to java/jakarta/servlet/jsp/el/package.html
diff --git a/java/javax/servlet/jsp/package.html b/java/jakarta/servlet/jsp/package.html
similarity index 94%
rename from java/javax/servlet/jsp/package.html
rename to java/jakarta/servlet/jsp/package.html
index ea458fc..104fac6 100644
--- a/java/javax/servlet/jsp/package.html
+++ b/java/jakarta/servlet/jsp/package.html
@@ -21,7 +21,7 @@
 <body bgcolor="white">
 Classes and interfaces for the Core JSP 2.0 API.
 <p>
-The javax.servlet.jsp package contains a number of classes and
+The jakarta.servlet.jsp package contains a number of classes and
 interfaces that describe and define the contracts between a JSP page
 implementation class and the runtime environment provided for an
 instance of such a class by a conforming JSP container.
diff --git a/java/javax/servlet/jsp/resources/jspxml.dtd b/java/jakarta/servlet/jsp/resources/jspxml.dtd
similarity index 100%
rename from java/javax/servlet/jsp/resources/jspxml.dtd
rename to java/jakarta/servlet/jsp/resources/jspxml.dtd
diff --git a/java/javax/servlet/jsp/resources/jspxml.xsd b/java/jakarta/servlet/jsp/resources/jspxml.xsd
similarity index 100%
rename from java/javax/servlet/jsp/resources/jspxml.xsd
rename to java/jakarta/servlet/jsp/resources/jspxml.xsd
diff --git a/java/javax/servlet/jsp/tagext/BodyContent.java b/java/jakarta/servlet/jsp/tagext/BodyContent.java
similarity index 98%
rename from java/javax/servlet/jsp/tagext/BodyContent.java
rename to java/jakarta/servlet/jsp/tagext/BodyContent.java
index 92c23e2..08c4345 100644
--- a/java/javax/servlet/jsp/tagext/BodyContent.java
+++ b/java/jakarta/servlet/jsp/tagext/BodyContent.java
@@ -14,13 +14,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet.jsp.tagext;
+package jakarta.servlet.jsp.tagext;
 
 import java.io.IOException;
 import java.io.Reader;
 import java.io.Writer;
 
-import javax.servlet.jsp.JspWriter;
+import jakarta.servlet.jsp.JspWriter;
 
 /**
  * An encapsulation of the evaluation of the body of an action so it is
diff --git a/java/javax/servlet/jsp/tagext/BodyTag.java b/java/jakarta/servlet/jsp/tagext/BodyTag.java
similarity index 98%
rename from java/javax/servlet/jsp/tagext/BodyTag.java
rename to java/jakarta/servlet/jsp/tagext/BodyTag.java
index a9fe835..4a6ade5 100644
--- a/java/javax/servlet/jsp/tagext/BodyTag.java
+++ b/java/jakarta/servlet/jsp/tagext/BodyTag.java
@@ -14,9 +14,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet.jsp.tagext;
+package jakarta.servlet.jsp.tagext;
 
-import javax.servlet.jsp.JspException;
+import jakarta.servlet.jsp.JspException;
 
 
 /**
diff --git a/java/javax/servlet/jsp/tagext/BodyTagSupport.java b/java/jakarta/servlet/jsp/tagext/BodyTagSupport.java
similarity index 97%
rename from java/javax/servlet/jsp/tagext/BodyTagSupport.java
rename to java/jakarta/servlet/jsp/tagext/BodyTagSupport.java
index ba2dfd3..2c66743 100644
--- a/java/javax/servlet/jsp/tagext/BodyTagSupport.java
+++ b/java/jakarta/servlet/jsp/tagext/BodyTagSupport.java
@@ -14,10 +14,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet.jsp.tagext;
+package jakarta.servlet.jsp.tagext;
 
-import javax.servlet.jsp.JspException;
-import javax.servlet.jsp.JspWriter;
+import jakarta.servlet.jsp.JspException;
+import jakarta.servlet.jsp.JspWriter;
 
 /**
  * A base class for defining tag handlers implementing BodyTag.
diff --git a/java/javax/servlet/jsp/tagext/DynamicAttributes.java b/java/jakarta/servlet/jsp/tagext/DynamicAttributes.java
similarity index 96%
rename from java/javax/servlet/jsp/tagext/DynamicAttributes.java
rename to java/jakarta/servlet/jsp/tagext/DynamicAttributes.java
index 4ddefad..b5d7976 100644
--- a/java/javax/servlet/jsp/tagext/DynamicAttributes.java
+++ b/java/jakarta/servlet/jsp/tagext/DynamicAttributes.java
@@ -14,9 +14,9 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
-package javax.servlet.jsp.tagext;
+package jakarta.servlet.jsp.tagext;
 
-import javax.servlet.jsp.JspException;
+import jakarta.servlet.jsp.JspException;
 
 /**
  * For a tag to declare that it accepts dynamic attributes, it must implement
diff --git a/java/javax/servlet/jsp/tagext/FunctionInfo.java b/java/jakarta/servlet/jsp/tagext/FunctionInfo.java
similarity index 98%
rename from java/javax/servlet/jsp/tagext/FunctionInfo.java
rename to java/jakarta/servlet/jsp/tagext/FunctionInfo.java
index 9df9c64..acc7b00 100644
--- a/java/javax/servlet/jsp/tagext/FunctionInfo.java
+++ b/java/jakarta/servlet/jsp/tagext/FunctionInfo.java
@@ -15,7 +15,7 @@
 * limitations under the License.
 */
 
-package javax.servlet.jsp.tagext;
+package jakarta.servlet.jsp.tagext;
 
 /**
  * Information for a function in a Tag Library.
diff --git a/java/javax/servlet/jsp/tagext/IterationTag.java b/java/jakarta/servlet/jsp/tagext/IterationTag.java
similarity index 98%
rename from java/javax/servlet/jsp/tagext/IterationTag.java
rename to java/jakarta/servlet/jsp/tagext/IterationTag.java
index 9443e23..2f089ab 100644
--- a/java/javax/servlet/jsp/tagext/IterationTag.java
+++ b/java/jakarta/servlet/jsp/tagext/IterationTag.java
@@ -15,9 +15,9 @@
 * limitations under the License.
 */
 
-package javax.servlet.jsp.tagext;
+package jakarta.servlet.jsp.tagext;
 
-import javax.servlet.jsp.JspException;
+import jakarta.servlet.jsp.JspException;
 
 
 /**
diff --git a/java/javax/servlet/jsp/tagext/JspFragment.java b/java/jakarta/servlet/jsp/tagext/JspFragment.java
similarity index 92%
rename from java/javax/servlet/jsp/tagext/JspFragment.java
rename to java/jakarta/servlet/jsp/tagext/JspFragment.java
index 90a45b3..4397b70 100644
--- a/java/javax/servlet/jsp/tagext/JspFragment.java
+++ b/java/jakarta/servlet/jsp/tagext/JspFragment.java
@@ -15,13 +15,13 @@
 * limitations under the License.
 */
 
-package javax.servlet.jsp.tagext;
+package jakarta.servlet.jsp.tagext;
 
 import java.io.IOException;
 import java.io.Writer;
 
-import javax.servlet.jsp.JspContext;
-import javax.servlet.jsp.JspException;
+import jakarta.servlet.jsp.JspContext;
+import jakarta.servlet.jsp.JspException;
 
 /**
  * Encapsulates a portion of JSP code in an object that
@@ -62,9 +62,9 @@ public abstract class JspFragment {
      *
      * @param out The Writer to output the fragment to, or null if
      *     output should be sent to JspContext.getOut().
-     * @throws javax.servlet.jsp.JspException Thrown if an error occurred
+     * @throws jakarta.servlet.jsp.JspException Thrown if an error occurred
      *     while invoking this fragment.
-     * @throws javax.servlet.jsp.SkipPageException Thrown if the page
+     * @throws jakarta.servlet.jsp.SkipPageException Thrown if the page
      *     that (either directly or indirectly) invoked the tag handler that
      *     invoked this fragment is to cease evaluation.  The container
      *     must throw this exception if a Classic Tag Handler returned
diff --git a/java/javax/servlet/jsp/tagext/JspIdConsumer.java b/java/jakarta/servlet/jsp/tagext/JspIdConsumer.java
similarity index 96%
rename from java/javax/servlet/jsp/tagext/JspIdConsumer.java
rename to java/jakarta/servlet/jsp/tagext/JspIdConsumer.java
index f3d49bf..43a9f53 100644
--- a/java/javax/servlet/jsp/tagext/JspIdConsumer.java
+++ b/java/jakarta/servlet/jsp/tagext/JspIdConsumer.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet.jsp.tagext;
+package jakarta.servlet.jsp.tagext;
 
 public interface JspIdConsumer {
     public void setJspId(String jspId);
diff --git a/java/javax/servlet/jsp/tagext/JspTag.java b/java/jakarta/servlet/jsp/tagext/JspTag.java
similarity index 96%
rename from java/javax/servlet/jsp/tagext/JspTag.java
rename to java/jakarta/servlet/jsp/tagext/JspTag.java
index 2be75fd..6ecb05e 100644
--- a/java/javax/servlet/jsp/tagext/JspTag.java
+++ b/java/jakarta/servlet/jsp/tagext/JspTag.java
@@ -14,7 +14,7 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
-package javax.servlet.jsp.tagext;
+package jakarta.servlet.jsp.tagext;
 
 /**
  * Serves as a base class for Tag and SimpleTag.
diff --git a/java/javax/servlet/jsp/tagext/PageData.java b/java/jakarta/servlet/jsp/tagext/PageData.java
similarity index 97%
rename from java/javax/servlet/jsp/tagext/PageData.java
rename to java/jakarta/servlet/jsp/tagext/PageData.java
index 737d394..9720d8a 100644
--- a/java/javax/servlet/jsp/tagext/PageData.java
+++ b/java/jakarta/servlet/jsp/tagext/PageData.java
@@ -16,7 +16,7 @@
 */
 
 
-package javax.servlet.jsp.tagext;
+package jakarta.servlet.jsp.tagext;
 
 import java.io.InputStream;
 
diff --git a/java/javax/servlet/jsp/tagext/SimpleTag.java b/java/jakarta/servlet/jsp/tagext/SimpleTag.java
similarity index 95%
rename from java/javax/servlet/jsp/tagext/SimpleTag.java
rename to java/jakarta/servlet/jsp/tagext/SimpleTag.java
index 48a5ac7..72ca095 100644
--- a/java/javax/servlet/jsp/tagext/SimpleTag.java
+++ b/java/jakarta/servlet/jsp/tagext/SimpleTag.java
@@ -14,9 +14,9 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
-package javax.servlet.jsp.tagext;
+package jakarta.servlet.jsp.tagext;
 
-import javax.servlet.jsp.JspContext;
+import jakarta.servlet.jsp.JspContext;
 
 /**
  * Interface for defining Simple Tag Handlers.
@@ -82,9 +82,9 @@ public interface SimpleTag extends JspTag {
      * variables (defined by the associated tag file, TagExtraInfo, or TLD)
      * after the invocation of doTag().
      *
-     * @throws javax.servlet.jsp.JspException If an error occurred
+     * @throws jakarta.servlet.jsp.JspException If an error occurred
      *     while processing this tag.
-     * @throws javax.servlet.jsp.SkipPageException If the page that
+     * @throws jakarta.servlet.jsp.SkipPageException If the page that
      *     (either directly or indirectly) invoked this tag is to
      *     cease evaluation.  A Simple Tag Handler generated from a
      *     tag file must throw this exception if an invoked Classic
@@ -95,7 +95,7 @@ public interface SimpleTag extends JspTag {
      *     output stream.
      */
     public void doTag()
-        throws javax.servlet.jsp.JspException, java.io.IOException;
+        throws jakarta.servlet.jsp.JspException, java.io.IOException;
 
     /**
      * Sets the parent of this tag, for collaboration purposes.
diff --git a/java/javax/servlet/jsp/tagext/SimpleTagSupport.java b/java/jakarta/servlet/jsp/tagext/SimpleTagSupport.java
similarity index 97%
rename from java/javax/servlet/jsp/tagext/SimpleTagSupport.java
rename to java/jakarta/servlet/jsp/tagext/SimpleTagSupport.java
index 9d9c88f..8e5681d 100644
--- a/java/javax/servlet/jsp/tagext/SimpleTagSupport.java
+++ b/java/jakarta/servlet/jsp/tagext/SimpleTagSupport.java
@@ -14,12 +14,12 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
-package javax.servlet.jsp.tagext;
+package jakarta.servlet.jsp.tagext;
 
 import java.io.IOException;
 
-import javax.servlet.jsp.JspContext;
-import javax.servlet.jsp.JspException;
+import jakarta.servlet.jsp.JspContext;
+import jakarta.servlet.jsp.JspException;
 
 /**
  * A base class for defining tag handlers implementing SimpleTag.
@@ -55,7 +55,7 @@ public class SimpleTagSupport implements SimpleTag {
      *
      * @throws JspException Subclasses can throw JspException to indicate
      *     an error occurred while processing this tag.
-     * @throws javax.servlet.jsp.SkipPageException If the page that
+     * @throws jakarta.servlet.jsp.SkipPageException If the page that
      *     (either directly or indirectly) invoked this tag is to
      *     cease evaluation.  A Simple Tag Handler generated from a
      *     tag file must throw this exception if an invoked Classic
diff --git a/java/javax/servlet/jsp/tagext/Tag.java b/java/jakarta/servlet/jsp/tagext/Tag.java
similarity index 98%
rename from java/javax/servlet/jsp/tagext/Tag.java
rename to java/jakarta/servlet/jsp/tagext/Tag.java
index 6bfce7e..fb39b3b 100644
--- a/java/javax/servlet/jsp/tagext/Tag.java
+++ b/java/jakarta/servlet/jsp/tagext/Tag.java
@@ -15,10 +15,10 @@
 * limitations under the License.
 */
 
-package javax.servlet.jsp.tagext;
+package jakarta.servlet.jsp.tagext;
 
-import javax.servlet.jsp.JspException;
-import javax.servlet.jsp.PageContext;
+import jakarta.servlet.jsp.JspException;
+import jakarta.servlet.jsp.PageContext;
 
 
 /**
diff --git a/java/javax/servlet/jsp/tagext/TagAdapter.java b/java/jakarta/servlet/jsp/tagext/TagAdapter.java
similarity index 97%
rename from java/javax/servlet/jsp/tagext/TagAdapter.java
rename to java/jakarta/servlet/jsp/tagext/TagAdapter.java
index aedc16d..eeaf78f 100644
--- a/java/javax/servlet/jsp/tagext/TagAdapter.java
+++ b/java/jakarta/servlet/jsp/tagext/TagAdapter.java
@@ -14,10 +14,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet.jsp.tagext;
+package jakarta.servlet.jsp.tagext;
 
-import javax.servlet.jsp.JspException;
-import javax.servlet.jsp.PageContext;
+import jakarta.servlet.jsp.JspException;
+import jakarta.servlet.jsp.PageContext;
 
 /**
  * Wraps any SimpleTag and exposes it using a Tag interface. This is used to
diff --git a/java/javax/servlet/jsp/tagext/TagAttributeInfo.java b/java/jakarta/servlet/jsp/tagext/TagAttributeInfo.java
similarity index 99%
rename from java/javax/servlet/jsp/tagext/TagAttributeInfo.java
rename to java/jakarta/servlet/jsp/tagext/TagAttributeInfo.java
index d2ff2f0..2f54db4 100644
--- a/java/javax/servlet/jsp/tagext/TagAttributeInfo.java
+++ b/java/jakarta/servlet/jsp/tagext/TagAttributeInfo.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package javax.servlet.jsp.tagext;
+package jakarta.servlet.jsp.tagext;
 
 /**
  * Information on the attributes of a Tag, available at translation time. This
diff --git a/java/javax/servlet/jsp/tagext/TagData.java b/java/jakarta/servlet/jsp/tagext/TagData.java
similarity index 99%
rename from java/javax/servlet/jsp/tagext/TagData.java
rename to java/jakarta/servlet/jsp/tagext/TagData.java
index 3df36f0..a53e2c3 100644
--- a/java/javax/servlet/jsp/tagext/TagData.java
+++ b/java/jakarta/servlet/jsp/tagext/TagData.java
@@ -15,7 +15,7 @@
 * limitations under the License.
 */
 
-package javax.servlet.jsp.tagext;
+package jakarta.servlet.jsp.tagext;
 
 import java.util.Hashtable;
 
diff --git a/java/javax/servlet/jsp/tagext/TagExtraInfo.java b/java/jakarta/servlet/jsp/tagext/TagExtraInfo.java
similarity index 99%
rename from java/javax/servlet/jsp/tagext/TagExtraInfo.java
rename to java/jakarta/servlet/jsp/tagext/TagExtraInfo.java
index 1fff9f2..44c6bc4 100644
--- a/java/javax/servlet/jsp/tagext/TagExtraInfo.java
+++ b/java/jakarta/servlet/jsp/tagext/TagExtraInfo.java
@@ -16,7 +16,7 @@
 */
 
 
-package javax.servlet.jsp.tagext;
+package jakarta.servlet.jsp.tagext;
 
 /**
  * Optional class provided by the tag library author to describe additional
diff --git a/java/javax/servlet/jsp/tagext/TagFileInfo.java b/java/jakarta/servlet/jsp/tagext/TagFileInfo.java
similarity index 98%
rename from java/javax/servlet/jsp/tagext/TagFileInfo.java
rename to java/jakarta/servlet/jsp/tagext/TagFileInfo.java
index dfa15f6..c82bfff 100644
--- a/java/javax/servlet/jsp/tagext/TagFileInfo.java
+++ b/java/jakarta/servlet/jsp/tagext/TagFileInfo.java
@@ -16,7 +16,7 @@
 */
 
 
-package javax.servlet.jsp.tagext;
+package jakarta.servlet.jsp.tagext;
 
 /**
  * Tag information for a tag file in a Tag Library;
diff --git a/java/javax/servlet/jsp/tagext/TagInfo.java b/java/jakarta/servlet/jsp/tagext/TagInfo.java
similarity index 99%
rename from java/javax/servlet/jsp/tagext/TagInfo.java
rename to java/jakarta/servlet/jsp/tagext/TagInfo.java
index 6183cf7..dcc234d 100644
--- a/java/javax/servlet/jsp/tagext/TagInfo.java
+++ b/java/jakarta/servlet/jsp/tagext/TagInfo.java
@@ -16,7 +16,7 @@
 */
 
 
-package javax.servlet.jsp.tagext;
+package jakarta.servlet.jsp.tagext;
 
 /**
  * Tag information for a tag in a Tag Library;
diff --git a/java/javax/servlet/jsp/tagext/TagLibraryInfo.java b/java/jakarta/servlet/jsp/tagext/TagLibraryInfo.java
similarity index 98%
rename from java/javax/servlet/jsp/tagext/TagLibraryInfo.java
rename to java/jakarta/servlet/jsp/tagext/TagLibraryInfo.java
index 79eb9c2..64dba90 100644
--- a/java/javax/servlet/jsp/tagext/TagLibraryInfo.java
+++ b/java/jakarta/servlet/jsp/tagext/TagLibraryInfo.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet.jsp.tagext;
+package jakarta.servlet.jsp.tagext;
 
 
 /**
@@ -96,7 +96,7 @@ public abstract class TagLibraryInfo {
      * A string describing the required version of the JSP container.
      *
      * @return the (minimal) required version of the JSP container.
-     * @see javax.servlet.jsp.JspEngineInfo
+     * @see jakarta.servlet.jsp.JspEngineInfo
      */
     public String getRequiredVersion() {
         return jspversion;
@@ -223,7 +223,7 @@ public abstract class TagLibraryInfo {
      *         TagLibraryInfo.
      * @since 2.1
      */
-    public abstract javax.servlet.jsp.tagext.TagLibraryInfo[] getTagLibraryInfos();
+    public abstract jakarta.servlet.jsp.tagext.TagLibraryInfo[] getTagLibraryInfos();
 
     // Protected fields
 
diff --git a/java/javax/servlet/jsp/tagext/TagLibraryValidator.java b/java/jakarta/servlet/jsp/tagext/TagLibraryValidator.java
similarity index 99%
rename from java/javax/servlet/jsp/tagext/TagLibraryValidator.java
rename to java/jakarta/servlet/jsp/tagext/TagLibraryValidator.java
index 0ed8d14..09ec17d 100644
--- a/java/javax/servlet/jsp/tagext/TagLibraryValidator.java
+++ b/java/jakarta/servlet/jsp/tagext/TagLibraryValidator.java
@@ -15,7 +15,7 @@
 * limitations under the License.
 */
 
-package javax.servlet.jsp.tagext;
+package jakarta.servlet.jsp.tagext;
 
 import java.util.Map;
 
diff --git a/java/javax/servlet/jsp/tagext/TagSupport.java b/java/jakarta/servlet/jsp/tagext/TagSupport.java
similarity index 98%
rename from java/javax/servlet/jsp/tagext/TagSupport.java
rename to java/jakarta/servlet/jsp/tagext/TagSupport.java
index ebad48d..6652822 100644
--- a/java/javax/servlet/jsp/tagext/TagSupport.java
+++ b/java/jakarta/servlet/jsp/tagext/TagSupport.java
@@ -14,14 +14,14 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
-package javax.servlet.jsp.tagext;
+package jakarta.servlet.jsp.tagext;
 
 import java.io.Serializable;
 import java.util.Enumeration;
 import java.util.Hashtable;
 
-import javax.servlet.jsp.JspException;
-import javax.servlet.jsp.PageContext;
+import jakarta.servlet.jsp.JspException;
+import jakarta.servlet.jsp.PageContext;
 
 /**
  * A base class for defining new tag handlers implementing Tag.
diff --git a/java/javax/servlet/jsp/tagext/TagVariableInfo.java b/java/jakarta/servlet/jsp/tagext/TagVariableInfo.java
similarity index 98%
rename from java/javax/servlet/jsp/tagext/TagVariableInfo.java
rename to java/jakarta/servlet/jsp/tagext/TagVariableInfo.java
index 70ac7bf..5d0a44e 100644
--- a/java/javax/servlet/jsp/tagext/TagVariableInfo.java
+++ b/java/jakarta/servlet/jsp/tagext/TagVariableInfo.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet.jsp.tagext;
+package jakarta.servlet.jsp.tagext;
 
 /**
  * Variable information for a tag in a Tag Library; This class is instantiated
diff --git a/java/javax/servlet/jsp/tagext/TryCatchFinally.java b/java/jakarta/servlet/jsp/tagext/TryCatchFinally.java
similarity index 98%
rename from java/javax/servlet/jsp/tagext/TryCatchFinally.java
rename to java/jakarta/servlet/jsp/tagext/TryCatchFinally.java
index 46b0d4e..8c22f8a 100644
--- a/java/javax/servlet/jsp/tagext/TryCatchFinally.java
+++ b/java/jakarta/servlet/jsp/tagext/TryCatchFinally.java
@@ -16,7 +16,7 @@
 */
 
 
-package javax.servlet.jsp.tagext;
+package jakarta.servlet.jsp.tagext;
 
 
 
diff --git a/java/javax/servlet/jsp/tagext/ValidationMessage.java b/java/jakarta/servlet/jsp/tagext/ValidationMessage.java
similarity index 98%
rename from java/javax/servlet/jsp/tagext/ValidationMessage.java
rename to java/jakarta/servlet/jsp/tagext/ValidationMessage.java
index 4c0b34c..3d0ce82 100644
--- a/java/javax/servlet/jsp/tagext/ValidationMessage.java
+++ b/java/jakarta/servlet/jsp/tagext/ValidationMessage.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet.jsp.tagext;
+package jakarta.servlet.jsp.tagext;
 
 /**
  * A validation message from either TagLibraryValidator or TagExtraInfo.
diff --git a/java/javax/servlet/jsp/tagext/VariableInfo.java b/java/jakarta/servlet/jsp/tagext/VariableInfo.java
similarity index 99%
rename from java/javax/servlet/jsp/tagext/VariableInfo.java
rename to java/jakarta/servlet/jsp/tagext/VariableInfo.java
index 2d0cdcd..0f50086 100644
--- a/java/javax/servlet/jsp/tagext/VariableInfo.java
+++ b/java/jakarta/servlet/jsp/tagext/VariableInfo.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.servlet.jsp.tagext;
+package jakarta.servlet.jsp.tagext;
 
 /**
  * Information on the scripting variables that are created/modified by a tag (at
diff --git a/java/javax/servlet/jsp/tagext/doc-files/BodyTagProtocol.gif b/java/jakarta/servlet/jsp/tagext/doc-files/BodyTagProtocol.gif
similarity index 100%
rename from java/javax/servlet/jsp/tagext/doc-files/BodyTagProtocol.gif
rename to java/jakarta/servlet/jsp/tagext/doc-files/BodyTagProtocol.gif
diff --git a/java/javax/servlet/jsp/tagext/doc-files/IterationTagProtocol.gif b/java/jakarta/servlet/jsp/tagext/doc-files/IterationTagProtocol.gif
similarity index 100%
rename from java/javax/servlet/jsp/tagext/doc-files/IterationTagProtocol.gif
rename to java/jakarta/servlet/jsp/tagext/doc-files/IterationTagProtocol.gif
diff --git a/java/javax/servlet/jsp/tagext/doc-files/TagProtocol.gif b/java/jakarta/servlet/jsp/tagext/doc-files/TagProtocol.gif
similarity index 100%
rename from java/javax/servlet/jsp/tagext/doc-files/TagProtocol.gif
rename to java/jakarta/servlet/jsp/tagext/doc-files/TagProtocol.gif
diff --git a/java/javax/servlet/jsp/tagext/doc-files/VariableInfo-1.gif b/java/jakarta/servlet/jsp/tagext/doc-files/VariableInfo-1.gif
similarity index 100%
rename from java/javax/servlet/jsp/tagext/doc-files/VariableInfo-1.gif
rename to java/jakarta/servlet/jsp/tagext/doc-files/VariableInfo-1.gif
diff --git a/java/javax/servlet/jsp/tagext/package.html b/java/jakarta/servlet/jsp/tagext/package.html
similarity index 100%
rename from java/javax/servlet/jsp/tagext/package.html
rename to java/jakarta/servlet/jsp/tagext/package.html
diff --git a/java/javax/servlet/package.html b/java/jakarta/servlet/package.html
similarity index 93%
rename from java/javax/servlet/package.html
rename to java/jakarta/servlet/package.html
index 7336be6..b08e998 100644
--- a/java/javax/servlet/package.html
+++ b/java/jakarta/servlet/package.html
@@ -20,7 +20,7 @@
 </HEAD>
 <BODY BGCOLOR="white">
 
-The javax.servlet package contains a number of classes and interfaces that
+The jakarta.servlet package contains a number of classes and interfaces that
 describe and define the contracts between a servlet class and the
 runtime environment provided for an instance of such a class by a
 conforming servlet container.
diff --git a/java/javax/servlet/resources/XMLSchema.dtd b/java/jakarta/servlet/resources/XMLSchema.dtd
similarity index 100%
rename from java/javax/servlet/resources/XMLSchema.dtd
rename to java/jakarta/servlet/resources/XMLSchema.dtd
diff --git a/java/javax/servlet/resources/datatypes.dtd b/java/jakarta/servlet/resources/datatypes.dtd
similarity index 100%
rename from java/javax/servlet/resources/datatypes.dtd
rename to java/jakarta/servlet/resources/datatypes.dtd
diff --git a/java/javax/servlet/resources/j2ee_1_4.xsd b/java/jakarta/servlet/resources/j2ee_1_4.xsd
similarity index 100%
rename from java/javax/servlet/resources/j2ee_1_4.xsd
rename to java/jakarta/servlet/resources/j2ee_1_4.xsd
diff --git a/java/javax/servlet/resources/j2ee_web_services_1_1.xsd b/java/jakarta/servlet/resources/j2ee_web_services_1_1.xsd
similarity index 100%
rename from java/javax/servlet/resources/j2ee_web_services_1_1.xsd
rename to java/jakarta/servlet/resources/j2ee_web_services_1_1.xsd
diff --git a/java/javax/servlet/resources/j2ee_web_services_client_1_1.xsd b/java/jakarta/servlet/resources/j2ee_web_services_client_1_1.xsd
similarity index 100%
rename from java/javax/servlet/resources/j2ee_web_services_client_1_1.xsd
rename to java/jakarta/servlet/resources/j2ee_web_services_client_1_1.xsd
diff --git a/java/javax/servlet/resources/javaee_5.xsd b/java/jakarta/servlet/resources/javaee_5.xsd
similarity index 100%
rename from java/javax/servlet/resources/javaee_5.xsd
rename to java/jakarta/servlet/resources/javaee_5.xsd
diff --git a/java/javax/servlet/resources/javaee_6.xsd b/java/jakarta/servlet/resources/javaee_6.xsd
similarity index 100%
rename from java/javax/servlet/resources/javaee_6.xsd
rename to java/jakarta/servlet/resources/javaee_6.xsd
diff --git a/java/javax/servlet/resources/javaee_7.xsd b/java/jakarta/servlet/resources/javaee_7.xsd
similarity index 100%
rename from java/javax/servlet/resources/javaee_7.xsd
rename to java/jakarta/servlet/resources/javaee_7.xsd
diff --git a/java/javax/servlet/resources/javaee_8.xsd b/java/jakarta/servlet/resources/javaee_8.xsd
similarity index 100%
rename from java/javax/servlet/resources/javaee_8.xsd
rename to java/jakarta/servlet/resources/javaee_8.xsd
diff --git a/java/javax/servlet/resources/javaee_web_services_1_2.xsd b/java/jakarta/servlet/resources/javaee_web_services_1_2.xsd
similarity index 100%
rename from java/javax/servlet/resources/javaee_web_services_1_2.xsd
rename to java/jakarta/servlet/resources/javaee_web_services_1_2.xsd
diff --git a/java/javax/servlet/resources/javaee_web_services_1_3.xsd b/java/jakarta/servlet/resources/javaee_web_services_1_3.xsd
similarity index 100%
rename from java/javax/servlet/resources/javaee_web_services_1_3.xsd
rename to java/jakarta/servlet/resources/javaee_web_services_1_3.xsd
diff --git a/java/javax/servlet/resources/javaee_web_services_1_4.xsd b/java/jakarta/servlet/resources/javaee_web_services_1_4.xsd
similarity index 100%
rename from java/javax/servlet/resources/javaee_web_services_1_4.xsd
rename to java/jakarta/servlet/resources/javaee_web_services_1_4.xsd
diff --git a/java/javax/servlet/resources/javaee_web_services_client_1_2.xsd b/java/jakarta/servlet/resources/javaee_web_services_client_1_2.xsd
similarity index 100%
rename from java/javax/servlet/resources/javaee_web_services_client_1_2.xsd
rename to java/jakarta/servlet/resources/javaee_web_services_client_1_2.xsd
diff --git a/java/javax/servlet/resources/javaee_web_services_client_1_3.xsd b/java/jakarta/servlet/resources/javaee_web_services_client_1_3.xsd
similarity index 100%
rename from java/javax/servlet/resources/javaee_web_services_client_1_3.xsd
rename to java/jakarta/servlet/resources/javaee_web_services_client_1_3.xsd
diff --git a/java/javax/servlet/resources/javaee_web_services_client_1_4.xsd b/java/jakarta/servlet/resources/javaee_web_services_client_1_4.xsd
similarity index 100%
rename from java/javax/servlet/resources/javaee_web_services_client_1_4.xsd
rename to java/jakarta/servlet/resources/javaee_web_services_client_1_4.xsd
diff --git a/java/javax/servlet/resources/jsp_2_0.xsd b/java/jakarta/servlet/resources/jsp_2_0.xsd
similarity index 100%
rename from java/javax/servlet/resources/jsp_2_0.xsd
rename to java/jakarta/servlet/resources/jsp_2_0.xsd
diff --git a/java/javax/servlet/resources/jsp_2_1.xsd b/java/jakarta/servlet/resources/jsp_2_1.xsd
similarity index 100%
rename from java/javax/servlet/resources/jsp_2_1.xsd
rename to java/jakarta/servlet/resources/jsp_2_1.xsd
diff --git a/java/javax/servlet/resources/jsp_2_2.xsd b/java/jakarta/servlet/resources/jsp_2_2.xsd
similarity index 100%
rename from java/javax/servlet/resources/jsp_2_2.xsd
rename to java/jakarta/servlet/resources/jsp_2_2.xsd
diff --git a/java/javax/servlet/resources/jsp_2_3.xsd b/java/jakarta/servlet/resources/jsp_2_3.xsd
similarity index 100%
rename from java/javax/servlet/resources/jsp_2_3.xsd
rename to java/jakarta/servlet/resources/jsp_2_3.xsd
diff --git a/java/javax/servlet/resources/web-app_2_2.dtd b/java/jakarta/servlet/resources/web-app_2_2.dtd
similarity index 100%
rename from java/javax/servlet/resources/web-app_2_2.dtd
rename to java/jakarta/servlet/resources/web-app_2_2.dtd
diff --git a/java/javax/servlet/resources/web-app_2_3.dtd b/java/jakarta/servlet/resources/web-app_2_3.dtd
similarity index 100%
rename from java/javax/servlet/resources/web-app_2_3.dtd
rename to java/jakarta/servlet/resources/web-app_2_3.dtd
diff --git a/java/javax/servlet/resources/web-app_2_4.xsd b/java/jakarta/servlet/resources/web-app_2_4.xsd
similarity index 100%
rename from java/javax/servlet/resources/web-app_2_4.xsd
rename to java/jakarta/servlet/resources/web-app_2_4.xsd
diff --git a/java/javax/servlet/resources/web-app_2_5.xsd b/java/jakarta/servlet/resources/web-app_2_5.xsd
similarity index 100%
rename from java/javax/servlet/resources/web-app_2_5.xsd
rename to java/jakarta/servlet/resources/web-app_2_5.xsd
diff --git a/java/javax/servlet/resources/web-app_3_0.xsd b/java/jakarta/servlet/resources/web-app_3_0.xsd
similarity index 100%
rename from java/javax/servlet/resources/web-app_3_0.xsd
rename to java/jakarta/servlet/resources/web-app_3_0.xsd
diff --git a/java/javax/servlet/resources/web-app_3_1.xsd b/java/jakarta/servlet/resources/web-app_3_1.xsd
similarity index 100%
rename from java/javax/servlet/resources/web-app_3_1.xsd
rename to java/jakarta/servlet/resources/web-app_3_1.xsd
diff --git a/java/javax/servlet/resources/web-app_4_0.xsd b/java/jakarta/servlet/resources/web-app_4_0.xsd
similarity index 100%
rename from java/javax/servlet/resources/web-app_4_0.xsd
rename to java/jakarta/servlet/resources/web-app_4_0.xsd
diff --git a/java/javax/servlet/resources/web-common_3_0.xsd b/java/jakarta/servlet/resources/web-common_3_0.xsd
similarity index 100%
rename from java/javax/servlet/resources/web-common_3_0.xsd
rename to java/jakarta/servlet/resources/web-common_3_0.xsd
diff --git a/java/javax/servlet/resources/web-common_3_1.xsd b/java/jakarta/servlet/resources/web-common_3_1.xsd
similarity index 100%
rename from java/javax/servlet/resources/web-common_3_1.xsd
rename to java/jakarta/servlet/resources/web-common_3_1.xsd
diff --git a/java/javax/servlet/resources/web-common_4_0.xsd b/java/jakarta/servlet/resources/web-common_4_0.xsd
similarity index 100%
rename from java/javax/servlet/resources/web-common_4_0.xsd
rename to java/jakarta/servlet/resources/web-common_4_0.xsd
diff --git a/java/javax/servlet/resources/web-fragment_3_0.xsd b/java/jakarta/servlet/resources/web-fragment_3_0.xsd
similarity index 100%
rename from java/javax/servlet/resources/web-fragment_3_0.xsd
rename to java/jakarta/servlet/resources/web-fragment_3_0.xsd
diff --git a/java/javax/servlet/resources/web-fragment_3_1.xsd b/java/jakarta/servlet/resources/web-fragment_3_1.xsd
similarity index 100%
rename from java/javax/servlet/resources/web-fragment_3_1.xsd
rename to java/jakarta/servlet/resources/web-fragment_3_1.xsd
diff --git a/java/javax/servlet/resources/web-fragment_4_0.xsd b/java/jakarta/servlet/resources/web-fragment_4_0.xsd
similarity index 100%
rename from java/javax/servlet/resources/web-fragment_4_0.xsd
rename to java/jakarta/servlet/resources/web-fragment_4_0.xsd
diff --git a/java/javax/servlet/resources/web-jsptaglibrary_1_1.dtd b/java/jakarta/servlet/resources/web-jsptaglibrary_1_1.dtd
similarity index 100%
rename from java/javax/servlet/resources/web-jsptaglibrary_1_1.dtd
rename to java/jakarta/servlet/resources/web-jsptaglibrary_1_1.dtd
diff --git a/java/javax/servlet/resources/web-jsptaglibrary_1_2.dtd b/java/jakarta/servlet/resources/web-jsptaglibrary_1_2.dtd
similarity index 100%
rename from java/javax/servlet/resources/web-jsptaglibrary_1_2.dtd
rename to java/jakarta/servlet/resources/web-jsptaglibrary_1_2.dtd
diff --git a/java/javax/servlet/resources/web-jsptaglibrary_2_0.xsd b/java/jakarta/servlet/resources/web-jsptaglibrary_2_0.xsd
similarity index 100%
rename from java/javax/servlet/resources/web-jsptaglibrary_2_0.xsd
rename to java/jakarta/servlet/resources/web-jsptaglibrary_2_0.xsd
diff --git a/java/javax/servlet/resources/web-jsptaglibrary_2_1.xsd b/java/jakarta/servlet/resources/web-jsptaglibrary_2_1.xsd
similarity index 100%
rename from java/javax/servlet/resources/web-jsptaglibrary_2_1.xsd
rename to java/jakarta/servlet/resources/web-jsptaglibrary_2_1.xsd
diff --git a/java/javax/servlet/resources/xml.xsd b/java/jakarta/servlet/resources/xml.xsd
similarity index 100%
rename from java/javax/servlet/resources/xml.xsd
rename to java/jakarta/servlet/resources/xml.xsd
diff --git a/java/javax/websocket/server/HandshakeRequest.java b/java/javax/websocket/server/HandshakeRequest.java
index f2e3327..b42ca8d 100644
--- a/java/javax/websocket/server/HandshakeRequest.java
+++ b/java/javax/websocket/server/HandshakeRequest.java
@@ -42,7 +42,7 @@ public interface HandshakeRequest {
     /**
      * Get the HTTP Session object associated with this request. Object is used
      * to avoid a direct dependency on the Servlet API.
-     * @return The javax.servlet.http.HttpSession object associated with this
+     * @return The jakarta.servlet.http.HttpSession object associated with this
      *         request, if any.
      */
     Object getHttpSession();
diff --git a/java/org/apache/catalina/AsyncDispatcher.java b/java/org/apache/catalina/AsyncDispatcher.java
index 5a1d8f6..52d3373 100644
--- a/java/org/apache/catalina/AsyncDispatcher.java
+++ b/java/org/apache/catalina/AsyncDispatcher.java
@@ -18,9 +18,9 @@ package org.apache.catalina;
 
 import java.io.IOException;
 
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
 
 public interface AsyncDispatcher {
 
diff --git a/java/org/apache/catalina/Authenticator.java b/java/org/apache/catalina/Authenticator.java
index 4e4c4fa..d33b7b8 100644
--- a/java/org/apache/catalina/Authenticator.java
+++ b/java/org/apache/catalina/Authenticator.java
@@ -18,8 +18,8 @@ package org.apache.catalina;
 
 import java.io.IOException;
 
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.apache.catalina.connector.Request;
 
diff --git a/java/org/apache/catalina/Context.java b/java/org/apache/catalina/Context.java
index 3e647dc..a41f2a0 100644
--- a/java/org/apache/catalina/Context.java
+++ b/java/org/apache/catalina/Context.java
@@ -21,12 +21,12 @@ import java.util.Locale;
 import java.util.Map;
 import java.util.Set;
 
-import javax.servlet.ServletContainerInitializer;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletRegistration;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletSecurityElement;
-import javax.servlet.descriptor.JspConfigDescriptor;
+import jakarta.servlet.ServletContainerInitializer;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.ServletRegistration;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletSecurityElement;
+import jakarta.servlet.descriptor.JspConfigDescriptor;
 
 import org.apache.catalina.deploy.NamingResourcesImpl;
 import org.apache.tomcat.ContextBind;
@@ -1187,7 +1187,7 @@ public interface Context extends Container, ContextBind {
 
 
     /**
-     * Notify all {@link javax.servlet.ServletRequestListener}s that a request
+     * Notify all {@link jakarta.servlet.ServletRequestListener}s that a request
      * has started.
      *
      * @param request The request object that will be passed to the listener
@@ -1197,7 +1197,7 @@ public interface Context extends Container, ContextBind {
     public boolean fireRequestInitEvent(ServletRequest request);
 
     /**
-     * Notify all {@link javax.servlet.ServletRequestListener}s that a request
+     * Notify all {@link jakarta.servlet.ServletRequestListener}s that a request
      * has ended.
      *
      * @param request The request object that will be passed to the listener
@@ -1432,7 +1432,7 @@ public interface Context extends Container, ContextBind {
 
     /**
      * Notification that Servlet security has been dynamically set in a
-     * {@link javax.servlet.ServletRegistration.Dynamic}
+     * {@link jakarta.servlet.ServletRegistration.Dynamic}
      * @param registration Servlet security was modified for
      * @param servletSecurityElement new security constraints for this Servlet
      * @return urls currently mapped to this registration that are already
@@ -1778,7 +1778,7 @@ public interface Context extends Container, ContextBind {
 
     /**
      * Controls whether HTTP 1.1 and later location headers generated by a call
-     * to {@link javax.servlet.http.HttpServletResponse#sendRedirect(String)}
+     * to {@link jakarta.servlet.http.HttpServletResponse#sendRedirect(String)}
      * will use relative or absolute redirects.
      * <p>
      * Relative redirects are more efficient but may not work with reverse
@@ -1798,7 +1798,7 @@ public interface Context extends Container, ContextBind {
 
     /**
      * Will HTTP 1.1 and later location headers generated by a call to
-     * {@link javax.servlet.http.HttpServletResponse#sendRedirect(String)} use
+     * {@link jakarta.servlet.http.HttpServletResponse#sendRedirect(String)} use
      * relative or absolute redirects.
      *
      * @return {@code true} if relative redirects will be used {@code false} if
@@ -1860,7 +1860,7 @@ public interface Context extends Container, ContextBind {
 
     /**
      * Configure if, when returning a context path from {@link
-     * javax.servlet.http.HttpServletRequest#getContextPath()}, the return value
+     * jakarta.servlet.http.HttpServletRequest#getContextPath()}, the return value
      * is allowed to contain multiple leading '/' characters.
      *
      * @param allowMultipleLeadingForwardSlashInPath The new value for the flag
@@ -1870,7 +1870,7 @@ public interface Context extends Container, ContextBind {
 
     /**
      * When returning a context path from {@link
-     * javax.servlet.http.HttpServletRequest#getContextPath()}, is it allowed to
+     * jakarta.servlet.http.HttpServletRequest#getContextPath()}, is it allowed to
      * contain multiple leading '/' characters?
      *
      * @return <code>true</code> if multiple leading '/' characters are allowed,
diff --git a/java/org/apache/catalina/Globals.java b/java/org/apache/catalina/Globals.java
index b25ee32..70ef0cd 100644
--- a/java/org/apache/catalina/Globals.java
+++ b/java/org/apache/catalina/Globals.java
@@ -37,7 +37,7 @@ public final class Globals {
      * if any.
      */
     public static final String CERTIFICATES_ATTR =
-        "javax.servlet.request.X509Certificate";
+        "jakarta.servlet.request.X509Certificate";
 
 
     /**
@@ -46,7 +46,7 @@ public final class Globals {
      * java.lang.String).
      */
     public static final String CIPHER_SUITE_ATTR =
-        "javax.servlet.request.cipher_suite";
+        "jakarta.servlet.request.cipher_suite";
 
 
     /**
@@ -85,7 +85,7 @@ public final class Globals {
      * this SSL connection (as an object of type java.lang.Integer).
      */
     public static final String KEY_SIZE_ATTR =
-        "javax.servlet.request.key_size";
+        "jakarta.servlet.request.key_size";
 
 
     /**
@@ -93,7 +93,7 @@ public final class Globals {
      * for this SSL connection (as an object of type java.lang.String).
      */
     public static final String SSL_SESSION_ID_ATTR =
-        "javax.servlet.request.ssl_session_id";
+        "jakarta.servlet.request.ssl_session_id";
 
 
     /**
@@ -101,7 +101,7 @@ public final class Globals {
      * This one is a Tomcat extension to the Servlet spec.
      */
     public static final String SSL_SESSION_MGR_ATTR =
-        "javax.servlet.request.ssl_session_mgr";
+        "jakarta.servlet.request.ssl_session_mgr";
 
 
     /**
diff --git a/java/org/apache/catalina/Manager.java b/java/org/apache/catalina/Manager.java
index 86b47e5..d633551 100644
--- a/java/org/apache/catalina/Manager.java
+++ b/java/org/apache/catalina/Manager.java
@@ -389,10 +389,10 @@ public interface Manager {
     /**
      * When an attribute that is already present in the session is added again
      * under the same name and the attribute implements {@link
-     * javax.servlet.http.HttpSessionBindingListener}, should
-     * {@link javax.servlet.http.HttpSessionBindingListener#valueUnbound(javax.servlet.http.HttpSessionBindingEvent)}
+     * jakarta.servlet.http.HttpSessionBindingListener}, should
+     * {@link jakarta.servlet.http.HttpSessionBindingListener#valueUnbound(jakarta.servlet.http.HttpSessionBindingEvent)}
      * be called followed by
-     * {@link javax.servlet.http.HttpSessionBindingListener#valueBound(javax.servlet.http.HttpSessionBindingEvent)}?
+     * {@link jakarta.servlet.http.HttpSessionBindingListener#valueBound(jakarta.servlet.http.HttpSessionBindingEvent)}?
      * <p>
      * The default value is {@code false}.
      *
@@ -406,12 +406,12 @@ public interface Manager {
 
     /**
      * Configure if
-     * {@link javax.servlet.http.HttpSessionBindingListener#valueUnbound(javax.servlet.http.HttpSessionBindingEvent)}
+     * {@link jakarta.servlet.http.HttpSessionBindingListener#valueUnbound(jakarta.servlet.http.HttpSessionBindingEvent)}
      * be called followed by
-     * {@link javax.servlet.http.HttpSessionBindingListener#valueBound(javax.servlet.http.HttpSessionBindingEvent)}
+     * {@link jakarta.servlet.http.HttpSessionBindingListener#valueBound(jakarta.servlet.http.HttpSessionBindingEvent)}
      * when an attribute that is already present in the session is added again
      * under the same name and the attribute implements {@link
-     * javax.servlet.http.HttpSessionBindingListener}.
+     * jakarta.servlet.http.HttpSessionBindingListener}.
      *
      * @param notifyBindingListenerOnUnchangedValue {@code true} the listener
      *                                              will be called, {@code
@@ -424,9 +424,9 @@ public interface Manager {
     /**
      * When an attribute that is already present in the session is added again
      * under the same name and a {@link
-     * javax.servlet.http.HttpSessionAttributeListener} is configured for the
+     * jakarta.servlet.http.HttpSessionAttributeListener} is configured for the
      * session should
-     * {@link javax.servlet.http.HttpSessionAttributeListener#attributeReplaced(javax.servlet.http.HttpSessionBindingEvent)}
+     * {@link jakarta.servlet.http.HttpSessionAttributeListener#attributeReplaced(jakarta.servlet.http.HttpSessionBindingEvent)}
      * be called?
      * <p>
      * The default value is {@code true}.
@@ -441,10 +441,10 @@ public interface Manager {
 
     /**
      * Configure if
-     * {@link javax.servlet.http.HttpSessionAttributeListener#attributeReplaced(javax.servlet.http.HttpSessionBindingEvent)}
+     * {@link jakarta.servlet.http.HttpSessionAttributeListener#attributeReplaced(jakarta.servlet.http.HttpSessionBindingEvent)}
      * when an attribute that is already present in the session is added again
      * under the same name and a {@link
-     * javax.servlet.http.HttpSessionAttributeListener} is configured for the
+     * jakarta.servlet.http.HttpSessionAttributeListener} is configured for the
      * session.
      *
      * @param notifyAttributeListenerOnUnchangedValue {@code true} the listener
diff --git a/java/org/apache/catalina/Session.java b/java/org/apache/catalina/Session.java
index c9f74be..a883b61 100644
--- a/java/org/apache/catalina/Session.java
+++ b/java/org/apache/catalina/Session.java
@@ -22,7 +22,7 @@ package org.apache.catalina;
 import java.security.Principal;
 import java.util.Iterator;
 
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpSession;
 
 
 /**
diff --git a/java/org/apache/catalina/Valve.java b/java/org/apache/catalina/Valve.java
index 32ccade..699cc1e 100644
--- a/java/org/apache/catalina/Valve.java
+++ b/java/org/apache/catalina/Valve.java
@@ -18,7 +18,7 @@ package org.apache.catalina;
 
 import java.io.IOException;
 
-import javax.servlet.ServletException;
+import jakarta.servlet.ServletException;
 
 import org.apache.catalina.connector.Request;
 import org.apache.catalina.connector.Response;
diff --git a/java/org/apache/catalina/Wrapper.java b/java/org/apache/catalina/Wrapper.java
index 858f887..1d728dc 100644
--- a/java/org/apache/catalina/Wrapper.java
+++ b/java/org/apache/catalina/Wrapper.java
@@ -19,10 +19,10 @@
 package org.apache.catalina;
 
 
-import javax.servlet.MultipartConfigElement;
-import javax.servlet.Servlet;
-import javax.servlet.ServletException;
-import javax.servlet.UnavailableException;
+import jakarta.servlet.MultipartConfigElement;
+import jakarta.servlet.Servlet;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.UnavailableException;
 
 
 /**
diff --git a/java/org/apache/catalina/authenticator/AuthenticatorBase.java b/java/org/apache/catalina/authenticator/AuthenticatorBase.java
index b468fb1..4fc5d56 100644
--- a/java/org/apache/catalina/authenticator/AuthenticatorBase.java
+++ b/java/org/apache/catalina/authenticator/AuthenticatorBase.java
@@ -26,12 +26,6 @@ import java.util.Set;
 
 import javax.security.auth.Subject;
 import javax.security.auth.callback.CallbackHandler;
-import javax.servlet.DispatcherType;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
 
 import jakarta.security.auth.message.AuthException;
 import jakarta.security.auth.message.AuthStatus;
@@ -41,6 +35,12 @@ import jakarta.security.auth.message.config.AuthConfigProvider;
 import jakarta.security.auth.message.config.RegistrationListener;
 import jakarta.security.auth.message.config.ServerAuthConfig;
 import jakarta.security.auth.message.config.ServerAuthContext;
+import jakarta.servlet.DispatcherType;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.Cookie;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.apache.catalina.Authenticator;
 import org.apache.catalina.Container;
@@ -851,7 +851,7 @@ public abstract class AuthenticatorBase extends ValveBase
 
     /**
      * Look for the X509 certificate chain in the Request under the key
-     * <code>javax.servlet.request.X509Certificate</code>. If not found, trigger
+     * <code>jakarta.servlet.request.X509Certificate</code>. If not found, trigger
      * extracting the certificate chain from the Coyote request.
      *
      * @param request
@@ -930,7 +930,7 @@ public abstract class AuthenticatorBase extends ValveBase
                 // cached and the Principal did not change.
                 @SuppressWarnings("rawtypes")// JASPIC API uses raw types
                 Map map = state.messageInfo.getMap();
-                if (map != null && map.containsKey("javax.servlet.http.registerSession")) {
+                if (map != null && map.containsKey("jakarta.servlet.http.registerSession")) {
                     register(request, response, principal, "JASPIC", null, null, true, true);
                 } else {
                     register(request, response, principal, "JASPIC", null, null);
diff --git a/java/org/apache/catalina/authenticator/BasicAuthenticator.java b/java/org/apache/catalina/authenticator/BasicAuthenticator.java
index b661e35..cd342d9 100644
--- a/java/org/apache/catalina/authenticator/BasicAuthenticator.java
+++ b/java/org/apache/catalina/authenticator/BasicAuthenticator.java
@@ -21,8 +21,8 @@ import java.nio.charset.Charset;
 import java.nio.charset.StandardCharsets;
 import java.security.Principal;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.apache.catalina.connector.Request;
 import org.apache.juli.logging.Log;
diff --git a/java/org/apache/catalina/authenticator/DigestAuthenticator.java b/java/org/apache/catalina/authenticator/DigestAuthenticator.java
index 3fa2679..ee926f7 100644
--- a/java/org/apache/catalina/authenticator/DigestAuthenticator.java
+++ b/java/org/apache/catalina/authenticator/DigestAuthenticator.java
@@ -23,8 +23,8 @@ import java.security.Principal;
 import java.util.LinkedHashMap;
 import java.util.Map;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.apache.catalina.LifecycleException;
 import org.apache.catalina.Realm;
diff --git a/java/org/apache/catalina/authenticator/FormAuthenticator.java b/java/org/apache/catalina/authenticator/FormAuthenticator.java
index 4a508f6..b04d40e 100644
--- a/java/org/apache/catalina/authenticator/FormAuthenticator.java
+++ b/java/org/apache/catalina/authenticator/FormAuthenticator.java
@@ -23,10 +23,10 @@ import java.util.Enumeration;
 import java.util.Iterator;
 import java.util.Locale;
 
-import javax.servlet.RequestDispatcher;
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.RequestDispatcher;
+import jakarta.servlet.http.Cookie;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.apache.catalina.Realm;
 import org.apache.catalina.Session;
diff --git a/java/org/apache/catalina/authenticator/NonLoginAuthenticator.java b/java/org/apache/catalina/authenticator/NonLoginAuthenticator.java
index da1449c..e49be71 100644
--- a/java/org/apache/catalina/authenticator/NonLoginAuthenticator.java
+++ b/java/org/apache/catalina/authenticator/NonLoginAuthenticator.java
@@ -18,7 +18,7 @@ package org.apache.catalina.authenticator;
 
 import java.io.IOException;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.apache.catalina.connector.Request;
 
diff --git a/java/org/apache/catalina/authenticator/SSLAuthenticator.java b/java/org/apache/catalina/authenticator/SSLAuthenticator.java
index 10a03cf..90142cc 100644
--- a/java/org/apache/catalina/authenticator/SSLAuthenticator.java
+++ b/java/org/apache/catalina/authenticator/SSLAuthenticator.java
@@ -20,8 +20,8 @@ import java.io.IOException;
 import java.security.Principal;
 import java.security.cert.X509Certificate;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.apache.catalina.connector.Request;
 
diff --git a/java/org/apache/catalina/authenticator/SavedRequest.java b/java/org/apache/catalina/authenticator/SavedRequest.java
index 4cf8c7c..8371578 100644
--- a/java/org/apache/catalina/authenticator/SavedRequest.java
+++ b/java/org/apache/catalina/authenticator/SavedRequest.java
@@ -27,7 +27,7 @@ import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 
-import javax.servlet.http.Cookie;
+import jakarta.servlet.http.Cookie;
 
 import org.apache.tomcat.util.buf.ByteChunk;
 
diff --git a/java/org/apache/catalina/authenticator/SingleSignOn.java b/java/org/apache/catalina/authenticator/SingleSignOn.java
index dad95d0..0233dd8 100644
--- a/java/org/apache/catalina/authenticator/SingleSignOn.java
+++ b/java/org/apache/catalina/authenticator/SingleSignOn.java
@@ -22,8 +22,8 @@ import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 
-import javax.servlet.ServletException;
-import javax.servlet.http.Cookie;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.Cookie;
 
 import org.apache.catalina.Container;
 import org.apache.catalina.Context;
diff --git a/java/org/apache/catalina/authenticator/SingleSignOnEntry.java b/java/org/apache/catalina/authenticator/SingleSignOnEntry.java
index 24984f9..f67e135 100644
--- a/java/org/apache/catalina/authenticator/SingleSignOnEntry.java
+++ b/java/org/apache/catalina/authenticator/SingleSignOnEntry.java
@@ -25,7 +25,7 @@ import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
 
 import org.apache.catalina.Session;
 
diff --git a/java/org/apache/catalina/authenticator/SpnegoAuthenticator.java b/java/org/apache/catalina/authenticator/SpnegoAuthenticator.java
index a8f8834..252d4f3 100644
--- a/java/org/apache/catalina/authenticator/SpnegoAuthenticator.java
+++ b/java/org/apache/catalina/authenticator/SpnegoAuthenticator.java
@@ -28,7 +28,8 @@ import java.util.regex.Pattern;
 import javax.security.auth.Subject;
 import javax.security.auth.login.LoginContext;
 import javax.security.auth.login.LoginException;
-import javax.servlet.http.HttpServletResponse;
+
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.apache.catalina.LifecycleException;
 import org.apache.catalina.Realm;
diff --git a/java/org/apache/catalina/authenticator/jaspic/MessageInfoImpl.java b/java/org/apache/catalina/authenticator/jaspic/MessageInfoImpl.java
index 9db7d1f..e2a465e 100644
--- a/java/org/apache/catalina/authenticator/jaspic/MessageInfoImpl.java
+++ b/java/org/apache/catalina/authenticator/jaspic/MessageInfoImpl.java
@@ -19,10 +19,9 @@ package org.apache.catalina.authenticator.jaspic;
 import java.util.HashMap;
 import java.util.Map;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
 import jakarta.security.auth.message.MessageInfo;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.apache.tomcat.util.res.StringManager;
 
diff --git a/java/org/apache/catalina/connector/CoyoteAdapter.java b/java/org/apache/catalina/connector/CoyoteAdapter.java
index 5955731..0db815b 100644
--- a/java/org/apache/catalina/connector/CoyoteAdapter.java
+++ b/java/org/apache/catalina/connector/CoyoteAdapter.java
@@ -22,12 +22,12 @@ import java.nio.charset.StandardCharsets;
 import java.util.EnumSet;
 import java.util.concurrent.atomic.AtomicBoolean;
 
-import javax.servlet.ReadListener;
-import javax.servlet.RequestDispatcher;
-import javax.servlet.ServletException;
-import javax.servlet.SessionTrackingMode;
-import javax.servlet.WriteListener;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.ReadListener;
+import jakarta.servlet.RequestDispatcher;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.SessionTrackingMode;
+import jakarta.servlet.WriteListener;
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.apache.catalina.Authenticator;
 import org.apache.catalina.Context;
diff --git a/java/org/apache/catalina/connector/CoyoteInputStream.java b/java/org/apache/catalina/connector/CoyoteInputStream.java
index c7ee2e9..2f6f221 100644
--- a/java/org/apache/catalina/connector/CoyoteInputStream.java
+++ b/java/org/apache/catalina/connector/CoyoteInputStream.java
@@ -22,8 +22,8 @@ import java.security.AccessController;
 import java.security.PrivilegedActionException;
 import java.security.PrivilegedExceptionAction;
 
-import javax.servlet.ReadListener;
-import javax.servlet.ServletInputStream;
+import jakarta.servlet.ReadListener;
+import jakarta.servlet.ServletInputStream;
 
 import org.apache.catalina.security.SecurityUtil;
 import org.apache.tomcat.util.res.StringManager;
diff --git a/java/org/apache/catalina/connector/CoyoteOutputStream.java b/java/org/apache/catalina/connector/CoyoteOutputStream.java
index cf27525..646f52c 100644
--- a/java/org/apache/catalina/connector/CoyoteOutputStream.java
+++ b/java/org/apache/catalina/connector/CoyoteOutputStream.java
@@ -19,8 +19,8 @@ package org.apache.catalina.connector;
 import java.io.IOException;
 import java.nio.ByteBuffer;
 
-import javax.servlet.ServletOutputStream;
-import javax.servlet.WriteListener;
+import jakarta.servlet.ServletOutputStream;
+import jakarta.servlet.WriteListener;
 
 import org.apache.tomcat.util.res.StringManager;
 
diff --git a/java/org/apache/catalina/connector/InputBuffer.java b/java/org/apache/catalina/connector/InputBuffer.java
index 4da5b22..d3afe7c 100644
--- a/java/org/apache/catalina/connector/InputBuffer.java
+++ b/java/org/apache/catalina/connector/InputBuffer.java
@@ -29,7 +29,7 @@ import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.atomic.AtomicBoolean;
 
-import javax.servlet.ReadListener;
+import jakarta.servlet.ReadListener;
 
 import org.apache.catalina.security.SecurityUtil;
 import org.apache.coyote.ActionCode;
diff --git a/java/org/apache/catalina/connector/OutputBuffer.java b/java/org/apache/catalina/connector/OutputBuffer.java
index 5fa8fc2..59939ef 100644
--- a/java/org/apache/catalina/connector/OutputBuffer.java
+++ b/java/org/apache/catalina/connector/OutputBuffer.java
@@ -28,8 +28,8 @@ import java.security.PrivilegedExceptionAction;
 import java.util.HashMap;
 import java.util.Map;
 
-import javax.servlet.WriteListener;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.WriteListener;
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.apache.catalina.Globals;
 import org.apache.coyote.ActionCode;
diff --git a/java/org/apache/catalina/connector/Request.java b/java/org/apache/catalina/connector/Request.java
index 841049a..6cb160f 100644
--- a/java/org/apache/catalina/connector/Request.java
+++ b/java/org/apache/catalina/connector/Request.java
@@ -43,28 +43,29 @@ import java.util.concurrent.atomic.AtomicBoolean;
 
 import javax.naming.NamingException;
 import javax.security.auth.Subject;
-import javax.servlet.AsyncContext;
-import javax.servlet.DispatcherType;
-import javax.servlet.FilterChain;
-import javax.servlet.MultipartConfigElement;
-import javax.servlet.RequestDispatcher;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-import javax.servlet.ServletInputStream;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletRequestAttributeEvent;
-import javax.servlet.ServletRequestAttributeListener;
-import javax.servlet.ServletResponse;
-import javax.servlet.SessionTrackingMode;
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletMapping;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletRequestWrapper;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
-import javax.servlet.http.HttpUpgradeHandler;
-import javax.servlet.http.Part;
-import javax.servlet.http.PushBuilder;
+
+import jakarta.servlet.AsyncContext;
+import jakarta.servlet.DispatcherType;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.MultipartConfigElement;
+import jakarta.servlet.RequestDispatcher;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletInputStream;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletRequestAttributeEvent;
+import jakarta.servlet.ServletRequestAttributeListener;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.SessionTrackingMode;
+import jakarta.servlet.http.Cookie;
+import jakarta.servlet.http.HttpServletMapping;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequestWrapper;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpUpgradeHandler;
+import jakarta.servlet.http.Part;
+import jakarta.servlet.http.PushBuilder;
 
 import org.apache.catalina.Container;
 import org.apache.catalina.Context;
diff --git a/java/org/apache/catalina/connector/RequestFacade.java b/java/org/apache/catalina/connector/RequestFacade.java
index 11ad088..78a889f 100644
--- a/java/org/apache/catalina/connector/RequestFacade.java
+++ b/java/org/apache/catalina/connector/RequestFacade.java
@@ -25,22 +25,22 @@ import java.util.Enumeration;
 import java.util.Locale;
 import java.util.Map;
 
-import javax.servlet.AsyncContext;
-import javax.servlet.DispatcherType;
-import javax.servlet.RequestDispatcher;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-import javax.servlet.ServletInputStream;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletMapping;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
-import javax.servlet.http.HttpUpgradeHandler;
-import javax.servlet.http.Part;
-import javax.servlet.http.PushBuilder;
+import jakarta.servlet.AsyncContext;
+import jakarta.servlet.DispatcherType;
+import jakarta.servlet.RequestDispatcher;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletInputStream;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.Cookie;
+import jakarta.servlet.http.HttpServletMapping;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpUpgradeHandler;
+import jakarta.servlet.http.Part;
+import jakarta.servlet.http.PushBuilder;
 
 import org.apache.catalina.Globals;
 import org.apache.catalina.security.SecurityUtil;
diff --git a/java/org/apache/catalina/connector/Response.java b/java/org/apache/catalina/connector/Response.java
index d06a46c..f038343 100644
--- a/java/org/apache/catalina/connector/Response.java
+++ b/java/org/apache/catalina/connector/Response.java
@@ -36,12 +36,12 @@ import java.util.Locale;
 import java.util.Map;
 import java.util.function.Supplier;
 
-import javax.servlet.ServletOutputStream;
-import javax.servlet.ServletResponse;
-import javax.servlet.SessionTrackingMode;
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpServletResponseWrapper;
+import jakarta.servlet.ServletOutputStream;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.SessionTrackingMode;
+import jakarta.servlet.http.Cookie;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponseWrapper;
 
 import org.apache.catalina.Context;
 import org.apache.catalina.Globals;
diff --git a/java/org/apache/catalina/connector/ResponseFacade.java b/java/org/apache/catalina/connector/ResponseFacade.java
index 6c04b17..9304303 100644
--- a/java/org/apache/catalina/connector/ResponseFacade.java
+++ b/java/org/apache/catalina/connector/ResponseFacade.java
@@ -27,9 +27,9 @@ import java.util.Locale;
 import java.util.Map;
 import java.util.function.Supplier;
 
-import javax.servlet.ServletOutputStream;
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.ServletOutputStream;
+import jakarta.servlet.http.Cookie;
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.apache.catalina.Globals;
 import org.apache.catalina.security.SecurityUtil;
diff --git a/java/org/apache/catalina/core/ApplicationContext.java b/java/org/apache/catalina/core/ApplicationContext.java
index 79628e0..44f297d 100644
--- a/java/org/apache/catalina/core/ApplicationContext.java
+++ b/java/org/apache/catalina/core/ApplicationContext.java
@@ -34,28 +34,29 @@ import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 
 import javax.naming.NamingException;
-import javax.servlet.Filter;
-import javax.servlet.FilterRegistration;
-import javax.servlet.RequestDispatcher;
-import javax.servlet.Servlet;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletContextAttributeEvent;
-import javax.servlet.ServletContextAttributeListener;
-import javax.servlet.ServletContextListener;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRegistration;
-import javax.servlet.ServletRegistration.Dynamic;
-import javax.servlet.ServletRequestAttributeListener;
-import javax.servlet.ServletRequestListener;
-import javax.servlet.ServletSecurityElement;
-import javax.servlet.SessionCookieConfig;
-import javax.servlet.SessionTrackingMode;
-import javax.servlet.annotation.ServletSecurity;
-import javax.servlet.descriptor.JspConfigDescriptor;
-import javax.servlet.http.HttpServletMapping;
-import javax.servlet.http.HttpSessionAttributeListener;
-import javax.servlet.http.HttpSessionIdListener;
-import javax.servlet.http.HttpSessionListener;
+
+import jakarta.servlet.Filter;
+import jakarta.servlet.FilterRegistration;
+import jakarta.servlet.RequestDispatcher;
+import jakarta.servlet.Servlet;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.ServletContextAttributeEvent;
+import jakarta.servlet.ServletContextAttributeListener;
+import jakarta.servlet.ServletContextListener;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRegistration;
+import jakarta.servlet.ServletRegistration.Dynamic;
+import jakarta.servlet.ServletRequestAttributeListener;
+import jakarta.servlet.ServletRequestListener;
+import jakarta.servlet.ServletSecurityElement;
+import jakarta.servlet.SessionCookieConfig;
+import jakarta.servlet.SessionTrackingMode;
+import jakarta.servlet.annotation.ServletSecurity;
+import jakarta.servlet.descriptor.JspConfigDescriptor;
+import jakarta.servlet.http.HttpServletMapping;
+import jakarta.servlet.http.HttpSessionAttributeListener;
+import jakarta.servlet.http.HttpSessionIdListener;
+import jakarta.servlet.http.HttpSessionListener;
 
 import org.apache.catalina.Container;
 import org.apache.catalina.Context;
diff --git a/java/org/apache/catalina/core/ApplicationContextFacade.java b/java/org/apache/catalina/core/ApplicationContextFacade.java
index 8d506b9..5dd3a37 100644
--- a/java/org/apache/catalina/core/ApplicationContextFacade.java
+++ b/java/org/apache/catalina/core/ApplicationContextFacade.java
@@ -34,17 +34,17 @@ import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 
-import javax.servlet.Filter;
-import javax.servlet.FilterRegistration;
-import javax.servlet.RequestDispatcher;
-import javax.servlet.Servlet;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRegistration;
-import javax.servlet.ServletRegistration.Dynamic;
-import javax.servlet.SessionCookieConfig;
-import javax.servlet.SessionTrackingMode;
-import javax.servlet.descriptor.JspConfigDescriptor;
+import jakarta.servlet.Filter;
+import jakarta.servlet.FilterRegistration;
+import jakarta.servlet.RequestDispatcher;
+import jakarta.servlet.Servlet;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRegistration;
+import jakarta.servlet.ServletRegistration.Dynamic;
+import jakarta.servlet.SessionCookieConfig;
+import jakarta.servlet.SessionTrackingMode;
+import jakarta.servlet.descriptor.JspConfigDescriptor;
 
 import org.apache.catalina.Globals;
 import org.apache.catalina.security.SecurityUtil;
diff --git a/java/org/apache/catalina/core/ApplicationDispatcher.java b/java/org/apache/catalina/core/ApplicationDispatcher.java
index 522e4a7..6f48831 100644
--- a/java/org/apache/catalina/core/ApplicationDispatcher.java
+++ b/java/org/apache/catalina/core/ApplicationDispatcher.java
@@ -22,20 +22,20 @@ import java.security.AccessController;
 import java.security.PrivilegedActionException;
 import java.security.PrivilegedExceptionAction;
 
-import javax.servlet.AsyncContext;
-import javax.servlet.DispatcherType;
-import javax.servlet.RequestDispatcher;
-import javax.servlet.Servlet;
-import javax.servlet.ServletException;
-import javax.servlet.ServletOutputStream;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletRequestWrapper;
-import javax.servlet.ServletResponse;
-import javax.servlet.ServletResponseWrapper;
-import javax.servlet.UnavailableException;
-import javax.servlet.http.HttpServletMapping;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.AsyncContext;
+import jakarta.servlet.DispatcherType;
+import jakarta.servlet.RequestDispatcher;
+import jakarta.servlet.Servlet;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletOutputStream;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletRequestWrapper;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.ServletResponseWrapper;
+import jakarta.servlet.UnavailableException;
+import jakarta.servlet.http.HttpServletMapping;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.apache.catalina.AsyncDispatcher;
 import org.apache.catalina.Context;
@@ -56,8 +56,8 @@ import org.apache.tomcat.util.res.StringManager;
  * from this resource.  This implementation allows application level servlets
  * to wrap the request and/or response objects that are passed on to the
  * called resource, as long as the wrapping classes extend
- * <code>javax.servlet.ServletRequestWrapper</code> and
- * <code>javax.servlet.ServletResponseWrapper</code>.
+ * <code>jakarta.servlet.ServletRequestWrapper</code> and
+ * <code>jakarta.servlet.ServletResponseWrapper</code>.
  *
  * @author Craig R. McClanahan
  */
diff --git a/java/org/apache/catalina/core/ApplicationFilterChain.java b/java/org/apache/catalina/core/ApplicationFilterChain.java
index f212c46..e9bec91 100644
--- a/java/org/apache/catalina/core/ApplicationFilterChain.java
+++ b/java/org/apache/catalina/core/ApplicationFilterChain.java
@@ -21,14 +21,14 @@ import java.security.Principal;
 import java.security.PrivilegedActionException;
 import java.util.Set;
 
-import javax.servlet.Filter;
-import javax.servlet.FilterChain;
-import javax.servlet.Servlet;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.Filter;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.Servlet;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.apache.catalina.Globals;
 import org.apache.catalina.security.SecurityUtil;
@@ -36,7 +36,7 @@ import org.apache.tomcat.util.ExceptionUtils;
 import org.apache.tomcat.util.res.StringManager;
 
 /**
- * Implementation of <code>javax.servlet.FilterChain</code> used to manage
+ * Implementation of <code>jakarta.servlet.FilterChain</code> used to manage
  * the execution of a set of filters for a particular request.  When the
  * set of defined filters has all been executed, the next call to
  * <code>doFilter()</code> will execute the servlet's <code>service()</code>
diff --git a/java/org/apache/catalina/core/ApplicationFilterConfig.java b/java/org/apache/catalina/core/ApplicationFilterConfig.java
index 7c2ea61..fa89d2c 100644
--- a/java/org/apache/catalina/core/ApplicationFilterConfig.java
+++ b/java/org/apache/catalina/core/ApplicationFilterConfig.java
@@ -27,10 +27,11 @@ import java.util.Map;
 
 import javax.management.ObjectName;
 import javax.naming.NamingException;
-import javax.servlet.Filter;
-import javax.servlet.FilterConfig;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
+
+import jakarta.servlet.Filter;
+import jakarta.servlet.FilterConfig;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.ServletException;
 
 import org.apache.catalina.Context;
 import org.apache.catalina.Globals;
@@ -46,7 +47,7 @@ import org.apache.tomcat.util.res.StringManager;
 
 
 /**
- * Implementation of a <code>javax.servlet.FilterConfig</code> useful in
+ * Implementation of a <code>jakarta.servlet.FilterConfig</code> useful in
  * managing the filter instances instantiated when a web application
  * is first started.
  *
@@ -78,7 +79,7 @@ public final class ApplicationFilterConfig implements FilterConfig, Serializable
      *  constructed
      *
      * @exception ClassCastException if the specified class does not implement
-     *  the <code>javax.servlet.Filter</code> interface
+     *  the <code>jakarta.servlet.Filter</code> interface
      * @exception ClassNotFoundException if the filter class cannot be found
      * @exception IllegalAccessException if the filter class cannot be
      *  publicly instantiated
@@ -225,7 +226,7 @@ public final class ApplicationFilterConfig implements FilterConfig, Serializable
      * Return the application Filter we are configured for.
      *
      * @exception ClassCastException if the specified class does not implement
-     *  the <code>javax.servlet.Filter</code> interface
+     *  the <code>jakarta.servlet.Filter</code> interface
      * @exception ClassNotFoundException if the filter class cannot be found
      * @exception IllegalAccessException if the filter class cannot be
      *  publicly instantiated
diff --git a/java/org/apache/catalina/core/ApplicationFilterFactory.java b/java/org/apache/catalina/core/ApplicationFilterFactory.java
index e066f94..c74fdeb 100644
--- a/java/org/apache/catalina/core/ApplicationFilterFactory.java
+++ b/java/org/apache/catalina/core/ApplicationFilterFactory.java
@@ -16,9 +16,9 @@
  */
 package org.apache.catalina.core;
 
-import javax.servlet.DispatcherType;
-import javax.servlet.Servlet;
-import javax.servlet.ServletRequest;
+import jakarta.servlet.DispatcherType;
+import jakarta.servlet.Servlet;
+import jakarta.servlet.ServletRequest;
 
 import org.apache.catalina.Globals;
 import org.apache.catalina.Wrapper;
diff --git a/java/org/apache/catalina/core/ApplicationFilterRegistration.java b/java/org/apache/catalina/core/ApplicationFilterRegistration.java
index 518f130..29b03f1 100644
--- a/java/org/apache/catalina/core/ApplicationFilterRegistration.java
+++ b/java/org/apache/catalina/core/ApplicationFilterRegistration.java
@@ -23,8 +23,8 @@ import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
 
-import javax.servlet.DispatcherType;
-import javax.servlet.FilterRegistration;
+import jakarta.servlet.DispatcherType;
+import jakarta.servlet.FilterRegistration;
 
 import org.apache.catalina.Context;
 import org.apache.catalina.util.ParameterMap;
diff --git a/java/org/apache/catalina/core/ApplicationHttpRequest.java b/java/org/apache/catalina/core/ApplicationHttpRequest.java
index e049e83..dc1b537 100644
--- a/java/org/apache/catalina/core/ApplicationHttpRequest.java
+++ b/java/org/apache/catalina/core/ApplicationHttpRequest.java
@@ -30,16 +30,16 @@ import java.util.List;
 import java.util.Map;
 import java.util.NoSuchElementException;
 
-import javax.servlet.DispatcherType;
-import javax.servlet.RequestDispatcher;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletRequestWrapper;
-import javax.servlet.http.HttpServletMapping;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletRequestWrapper;
-import javax.servlet.http.HttpSession;
-import javax.servlet.http.PushBuilder;
+import jakarta.servlet.DispatcherType;
+import jakarta.servlet.RequestDispatcher;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletRequestWrapper;
+import jakarta.servlet.http.HttpServletMapping;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequestWrapper;
+import jakarta.servlet.http.HttpSession;
+import jakarta.servlet.http.PushBuilder;
 
 import org.apache.catalina.Context;
 import org.apache.catalina.Globals;
@@ -56,10 +56,10 @@ import org.apache.tomcat.util.res.StringManager;
 
 
 /**
- * Wrapper around a <code>javax.servlet.http.HttpServletRequest</code>
+ * Wrapper around a <code>jakarta.servlet.http.HttpServletRequest</code>
  * that transforms an application request object (which might be the original
  * one passed to a servlet, or might be based on the 2.3
- * <code>javax.servlet.http.HttpServletRequestWrapper</code> class)
+ * <code>jakarta.servlet.http.HttpServletRequestWrapper</code> class)
  * back into an internal <code>org.apache.catalina.HttpRequest</code>.
  * <p>
  * <strong>WARNING</strong>:  Due to Java's lack of support for multiple
diff --git a/java/org/apache/catalina/core/ApplicationHttpResponse.java b/java/org/apache/catalina/core/ApplicationHttpResponse.java
index b3a17f7..c9b76c7 100644
--- a/java/org/apache/catalina/core/ApplicationHttpResponse.java
+++ b/java/org/apache/catalina/core/ApplicationHttpResponse.java
@@ -19,16 +19,16 @@ package org.apache.catalina.core;
 import java.io.IOException;
 import java.util.Locale;
 
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpServletResponseWrapper;
+import jakarta.servlet.http.Cookie;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponseWrapper;
 
 
 /**
- * Wrapper around a <code>javax.servlet.http.HttpServletResponse</code>
+ * Wrapper around a <code>jakarta.servlet.http.HttpServletResponse</code>
  * that transforms an application response object (which might be the original
  * one passed to a servlet, or might be based on the 2.3
- * <code>javax.servlet.http.HttpServletResponseWrapper</code> class)
+ * <code>jakarta.servlet.http.HttpServletResponseWrapper</code> class)
  * back into an internal <code>org.apache.catalina.HttpResponse</code>.
  * <p>
  * <strong>WARNING</strong>:  Due to Java's lack of support for multiple
diff --git a/java/org/apache/catalina/core/ApplicationMapping.java b/java/org/apache/catalina/core/ApplicationMapping.java
index c6e4f0f..3bd83a2 100644
--- a/java/org/apache/catalina/core/ApplicationMapping.java
+++ b/java/org/apache/catalina/core/ApplicationMapping.java
@@ -16,8 +16,8 @@
  */
 package org.apache.catalina.core;
 
-import javax.servlet.http.HttpServletMapping;
-import javax.servlet.http.MappingMatch;
+import jakarta.servlet.http.HttpServletMapping;
+import jakarta.servlet.http.MappingMatch;
 
 import org.apache.catalina.mapper.MappingData;
 
diff --git a/java/org/apache/catalina/core/ApplicationPart.java b/java/org/apache/catalina/core/ApplicationPart.java
index d6400b5..fe72732 100644
--- a/java/org/apache/catalina/core/ApplicationPart.java
+++ b/java/org/apache/catalina/core/ApplicationPart.java
@@ -27,7 +27,7 @@ import java.util.LinkedHashSet;
 import java.util.Locale;
 import java.util.Map;
 
-import javax.servlet.http.Part;
+import jakarta.servlet.http.Part;
 
 import org.apache.tomcat.util.http.fileupload.FileItem;
 import org.apache.tomcat.util.http.fileupload.ParameterParser;
diff --git a/java/org/apache/catalina/core/ApplicationPushBuilder.java b/java/org/apache/catalina/core/ApplicationPushBuilder.java
index 58858ae..3dbf66e 100644
--- a/java/org/apache/catalina/core/ApplicationPushBuilder.java
+++ b/java/org/apache/catalina/core/ApplicationPushBuilder.java
@@ -27,11 +27,11 @@ import java.util.Locale;
 import java.util.Map;
 import java.util.Set;
 
-import javax.servlet.SessionTrackingMode;
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
-import javax.servlet.http.PushBuilder;
+import jakarta.servlet.SessionTrackingMode;
+import jakarta.servlet.http.Cookie;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpSession;
+import jakarta.servlet.http.PushBuilder;
 
 import org.apache.catalina.Context;
 import org.apache.catalina.authenticator.AuthenticatorBase;
diff --git a/java/org/apache/catalina/core/ApplicationRequest.java b/java/org/apache/catalina/core/ApplicationRequest.java
index 87c6c17..e5cd032 100644
--- a/java/org/apache/catalina/core/ApplicationRequest.java
+++ b/java/org/apache/catalina/core/ApplicationRequest.java
@@ -23,16 +23,16 @@ import java.util.Collections;
 import java.util.Enumeration;
 import java.util.HashMap;
 
-import javax.servlet.RequestDispatcher;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletRequestWrapper;
+import jakarta.servlet.RequestDispatcher;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletRequestWrapper;
 
 
 /**
- * Wrapper around a <code>javax.servlet.ServletRequest</code>
+ * Wrapper around a <code>jakarta.servlet.ServletRequest</code>
  * that transforms an application request object (which might be the original
  * one passed to a servlet, or might be based on the 2.3
- * <code>javax.servlet.ServletRequestWrapper</code> class)
+ * <code>jakarta.servlet.ServletRequestWrapper</code> class)
  * back into an internal <code>org.apache.catalina.Request</code>.
  * <p>
  * <strong>WARNING</strong>:  Due to Java's lack of support for multiple
diff --git a/java/org/apache/catalina/core/ApplicationResponse.java b/java/org/apache/catalina/core/ApplicationResponse.java
index a3bf44e..9157b34 100644
--- a/java/org/apache/catalina/core/ApplicationResponse.java
+++ b/java/org/apache/catalina/core/ApplicationResponse.java
@@ -18,15 +18,15 @@ package org.apache.catalina.core;
 
 import java.util.Locale;
 
-import javax.servlet.ServletResponse;
-import javax.servlet.ServletResponseWrapper;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.ServletResponseWrapper;
 
 
 /**
- * Wrapper around a <code>javax.servlet.ServletResponse</code>
+ * Wrapper around a <code>jakarta.servlet.ServletResponse</code>
  * that transforms an application response object (which might be the original
  * one passed to a servlet, or might be based on the 2.3
- * <code>javax.servlet.ServletResponseWrapper</code> class)
+ * <code>jakarta.servlet.ServletResponseWrapper</code> class)
  * back into an internal <code>org.apache.catalina.Response</code>.
  * <p>
  * <strong>WARNING</strong>:  Due to Java's lack of support for multiple
diff --git a/java/org/apache/catalina/core/ApplicationServletRegistration.java b/java/org/apache/catalina/core/ApplicationServletRegistration.java
index 47eda61..f894151 100644
--- a/java/org/apache/catalina/core/ApplicationServletRegistration.java
+++ b/java/org/apache/catalina/core/ApplicationServletRegistration.java
@@ -24,9 +24,9 @@ import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
 
-import javax.servlet.MultipartConfigElement;
-import javax.servlet.ServletRegistration;
-import javax.servlet.ServletSecurityElement;
+import jakarta.servlet.MultipartConfigElement;
+import jakarta.servlet.ServletRegistration;
+import jakarta.servlet.ServletSecurityElement;
 
 import org.apache.catalina.Context;
 import org.apache.catalina.LifecycleState;
diff --git a/java/org/apache/catalina/core/ApplicationSessionCookieConfig.java b/java/org/apache/catalina/core/ApplicationSessionCookieConfig.java
index 3127ea2..4d46337 100644
--- a/java/org/apache/catalina/core/ApplicationSessionCookieConfig.java
+++ b/java/org/apache/catalina/core/ApplicationSessionCookieConfig.java
@@ -17,8 +17,8 @@
 
 package org.apache.catalina.core;
 
-import javax.servlet.SessionCookieConfig;
-import javax.servlet.http.Cookie;
+import jakarta.servlet.SessionCookieConfig;
+import jakarta.servlet.http.Cookie;
 
 import org.apache.catalina.Context;
 import org.apache.catalina.LifecycleState;
diff --git a/java/org/apache/catalina/core/AsyncContextImpl.java b/java/org/apache/catalina/core/AsyncContextImpl.java
index 3f801d5..33c366b 100644
--- a/java/org/apache/catalina/core/AsyncContextImpl.java
+++ b/java/org/apache/catalina/core/AsyncContextImpl.java
@@ -23,16 +23,17 @@ import java.util.List;
 import java.util.concurrent.atomic.AtomicBoolean;
 
 import javax.naming.NamingException;
-import javax.servlet.AsyncContext;
-import javax.servlet.AsyncEvent;
-import javax.servlet.AsyncListener;
-import javax.servlet.RequestDispatcher;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+
+import jakarta.servlet.AsyncContext;
+import jakarta.servlet.AsyncEvent;
+import jakarta.servlet.AsyncListener;
+import jakarta.servlet.RequestDispatcher;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.apache.catalina.AsyncDispatcher;
 import org.apache.catalina.Context;
diff --git a/java/org/apache/catalina/core/AsyncListenerWrapper.java b/java/org/apache/catalina/core/AsyncListenerWrapper.java
index 5cf2148..be2d85e 100644
--- a/java/org/apache/catalina/core/AsyncListenerWrapper.java
+++ b/java/org/apache/catalina/core/AsyncListenerWrapper.java
@@ -18,10 +18,10 @@ package org.apache.catalina.core;
 
 import java.io.IOException;
 
-import javax.servlet.AsyncEvent;
-import javax.servlet.AsyncListener;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
+import jakarta.servlet.AsyncEvent;
+import jakarta.servlet.AsyncListener;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
 
 public class AsyncListenerWrapper {
 
diff --git a/java/org/apache/catalina/core/StandardContext.java b/java/org/apache/catalina/core/StandardContext.java
index a3f03fc..cddf7eb 100644
--- a/java/org/apache/catalina/core/StandardContext.java
+++ b/java/org/apache/catalina/core/StandardContext.java
@@ -54,30 +54,31 @@ import javax.management.NotificationEmitter;
 import javax.management.NotificationFilter;
 import javax.management.NotificationListener;
 import javax.naming.NamingException;
-import javax.servlet.Filter;
-import javax.servlet.FilterConfig;
-import javax.servlet.FilterRegistration;
-import javax.servlet.RequestDispatcher;
-import javax.servlet.Servlet;
-import javax.servlet.ServletContainerInitializer;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletContextAttributeListener;
-import javax.servlet.ServletContextEvent;
-import javax.servlet.ServletContextListener;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRegistration;
-import javax.servlet.ServletRegistration.Dynamic;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletRequestAttributeListener;
-import javax.servlet.ServletRequestEvent;
-import javax.servlet.ServletRequestListener;
-import javax.servlet.ServletSecurityElement;
-import javax.servlet.SessionCookieConfig;
-import javax.servlet.SessionTrackingMode;
-import javax.servlet.descriptor.JspConfigDescriptor;
-import javax.servlet.http.HttpSessionAttributeListener;
-import javax.servlet.http.HttpSessionIdListener;
-import javax.servlet.http.HttpSessionListener;
+
+import jakarta.servlet.Filter;
+import jakarta.servlet.FilterConfig;
+import jakarta.servlet.FilterRegistration;
+import jakarta.servlet.RequestDispatcher;
+import jakarta.servlet.Servlet;
+import jakarta.servlet.ServletContainerInitializer;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.ServletContextAttributeListener;
+import jakarta.servlet.ServletContextEvent;
+import jakarta.servlet.ServletContextListener;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRegistration;
+import jakarta.servlet.ServletRegistration.Dynamic;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletRequestAttributeListener;
+import jakarta.servlet.ServletRequestEvent;
+import jakarta.servlet.ServletRequestListener;
+import jakarta.servlet.ServletSecurityElement;
+import jakarta.servlet.SessionCookieConfig;
+import jakarta.servlet.SessionTrackingMode;
+import jakarta.servlet.descriptor.JspConfigDescriptor;
+import jakarta.servlet.http.HttpSessionAttributeListener;
+import jakarta.servlet.http.HttpSessionIdListener;
+import jakarta.servlet.http.HttpSessionListener;
 
 import org.apache.catalina.Authenticator;
 import org.apache.catalina.Container;
@@ -6580,21 +6581,21 @@ public class StandardContext extends ContainerBase
         }
 
         @Override
-        public javax.servlet.FilterRegistration.Dynamic addFilter(
+        public jakarta.servlet.FilterRegistration.Dynamic addFilter(
                 String filterName, String className) {
             throw new UnsupportedOperationException(
                     sm.getString("noPluggabilityServletContext.notAllowed"));
         }
 
         @Override
-        public javax.servlet.FilterRegistration.Dynamic addFilter(
+        public jakarta.servlet.FilterRegistration.Dynamic addFilter(
                 String filterName, Filter filter) {
             throw new UnsupportedOperationException(
                     sm.getString("noPluggabilityServletContext.notAllowed"));
         }
 
         @Override
-        public javax.servlet.FilterRegistration.Dynamic addFilter(
+        public jakarta.servlet.FilterRegistration.Dynamic addFilter(
                 String filterName, Class<? extends Filter> filterClass) {
             throw new UnsupportedOperationException(
                     sm.getString("noPluggabilityServletContext.notAllowed"));
diff --git a/java/org/apache/catalina/core/StandardContextValve.java b/java/org/apache/catalina/core/StandardContextValve.java
index 020a2f7..ef95ea2 100644
--- a/java/org/apache/catalina/core/StandardContextValve.java
+++ b/java/org/apache/catalina/core/StandardContextValve.java
@@ -18,9 +18,9 @@ package org.apache.catalina.core;
 
 import java.io.IOException;
 
-import javax.servlet.RequestDispatcher;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.RequestDispatcher;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.apache.catalina.Wrapper;
 import org.apache.catalina.connector.Request;
diff --git a/java/org/apache/catalina/core/StandardEngineValve.java b/java/org/apache/catalina/core/StandardEngineValve.java
index 96ef64e..4b5399c 100644
--- a/java/org/apache/catalina/core/StandardEngineValve.java
+++ b/java/org/apache/catalina/core/StandardEngineValve.java
@@ -18,7 +18,7 @@ package org.apache.catalina.core;
 
 import java.io.IOException;
 
-import javax.servlet.ServletException;
+import jakarta.servlet.ServletException;
 
 import org.apache.catalina.Host;
 import org.apache.catalina.connector.Request;
diff --git a/java/org/apache/catalina/core/StandardHostValve.java b/java/org/apache/catalina/core/StandardHostValve.java
index c713652..43f5780 100644
--- a/java/org/apache/catalina/core/StandardHostValve.java
+++ b/java/org/apache/catalina/core/StandardHostValve.java
@@ -19,11 +19,11 @@ package org.apache.catalina.core;
 import java.io.IOException;
 import java.util.concurrent.atomic.AtomicBoolean;
 
-import javax.servlet.DispatcherType;
-import javax.servlet.RequestDispatcher;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.DispatcherType;
+import jakarta.servlet.RequestDispatcher;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.apache.catalina.Context;
 import org.apache.catalina.Globals;
diff --git a/java/org/apache/catalina/core/StandardWrapper.java b/java/org/apache/catalina/core/StandardWrapper.java
index 7bfb512..ff3b292 100644
--- a/java/org/apache/catalina/core/StandardWrapper.java
+++ b/java/org/apache/catalina/core/StandardWrapper.java
@@ -36,14 +36,15 @@ import javax.management.NotificationEmitter;
 import javax.management.NotificationFilter;
 import javax.management.NotificationListener;
 import javax.management.ObjectName;
-import javax.servlet.MultipartConfigElement;
-import javax.servlet.Servlet;
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-import javax.servlet.SingleThreadModel;
-import javax.servlet.UnavailableException;
-import javax.servlet.annotation.MultipartConfig;
+
+import jakarta.servlet.MultipartConfigElement;
+import jakarta.servlet.Servlet;
+import jakarta.servlet.ServletConfig;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.SingleThreadModel;
+import jakarta.servlet.UnavailableException;
+import jakarta.servlet.annotation.MultipartConfig;
 
 import org.apache.catalina.Container;
 import org.apache.catalina.ContainerServlet;
@@ -550,7 +551,7 @@ public class StandardWrapper extends ContainerBase
         instance = loadServlet();
 
         Class<? extends Servlet> servletClazz = instance.getClass();
-        if (!javax.servlet.http.HttpServlet.class.isAssignableFrom(
+        if (!jakarta.servlet.http.HttpServlet.class.isAssignableFrom(
                                                         servletClazz)) {
             return DEFAULT_SERVLET_METHODS;
         }
@@ -1504,7 +1505,7 @@ public class StandardWrapper extends ContainerBase
 
     protected Method[] getAllDeclaredMethods(Class<?> c) {
 
-        if (c.equals(javax.servlet.http.HttpServlet.class)) {
+        if (c.equals(jakarta.servlet.http.HttpServlet.class)) {
             return null;
         }
 
diff --git a/java/org/apache/catalina/core/StandardWrapperFacade.java b/java/org/apache/catalina/core/StandardWrapperFacade.java
index 7dc506f..ef5792c 100644
--- a/java/org/apache/catalina/core/StandardWrapperFacade.java
+++ b/java/org/apache/catalina/core/StandardWrapperFacade.java
@@ -21,8 +21,8 @@ package org.apache.catalina.core;
 
 import java.util.Enumeration;
 
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletContext;
+import jakarta.servlet.ServletConfig;
+import jakarta.servlet.ServletContext;
 
 
 /**
diff --git a/java/org/apache/catalina/core/StandardWrapperValve.java b/java/org/apache/catalina/core/StandardWrapperValve.java
index 8d2f54b..b9a3a36 100644
--- a/java/org/apache/catalina/core/StandardWrapperValve.java
+++ b/java/org/apache/catalina/core/StandardWrapperValve.java
@@ -22,12 +22,12 @@ package org.apache.catalina.core;
 import java.io.IOException;
 import java.util.concurrent.atomic.AtomicInteger;
 
-import javax.servlet.DispatcherType;
-import javax.servlet.RequestDispatcher;
-import javax.servlet.Servlet;
-import javax.servlet.ServletException;
-import javax.servlet.UnavailableException;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.DispatcherType;
+import jakarta.servlet.RequestDispatcher;
+import jakarta.servlet.Servlet;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.UnavailableException;
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.apache.catalina.Container;
 import org.apache.catalina.Context;
diff --git a/java/org/apache/catalina/filters/AddDefaultCharsetFilter.java b/java/org/apache/catalina/filters/AddDefaultCharsetFilter.java
index 98adb4f..7270be8 100644
--- a/java/org/apache/catalina/filters/AddDefaultCharsetFilter.java
+++ b/java/org/apache/catalina/filters/AddDefaultCharsetFilter.java
@@ -19,13 +19,13 @@ package org.apache.catalina.filters;
 import java.io.IOException;
 import java.nio.charset.Charset;
 
-import javax.servlet.FilterChain;
-import javax.servlet.FilterConfig;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpServletResponseWrapper;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.FilterConfig;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponseWrapper;
 
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
diff --git a/java/org/apache/catalina/filters/CorsFilter.java b/java/org/apache/catalina/filters/CorsFilter.java
index 294e904..c9690c9 100644
--- a/java/org/apache/catalina/filters/CorsFilter.java
+++ b/java/org/apache/catalina/filters/CorsFilter.java
@@ -28,13 +28,13 @@ import java.util.List;
 import java.util.Locale;
 import java.util.Set;
 
-import javax.servlet.FilterChain;
-import javax.servlet.GenericFilter;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.GenericFilter;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
@@ -44,7 +44,7 @@ import org.apache.tomcat.util.res.StringManager;
 
 /**
  * <p>
- * A {@link javax.servlet.Filter} that enable client-side cross-origin requests
+ * A {@link jakarta.servlet.Filter} that enable client-side cross-origin requests
  * by implementing W3C's CORS (<b>C</b>ross-<b>O</b>rigin <b>R</b>esource
  * <b>S</b>haring) specification for resources. Each {@link HttpServletRequest}
  * request is inspected as per specification, and appropriate response headers
@@ -1071,39 +1071,39 @@ public class CorsFilter extends GenericFilter {
 
     // ----------------------------------------Filter Config Init param-name(s)
     /**
-     * Key to retrieve allowed origins from {@link javax.servlet.FilterConfig}.
+     * Key to retrieve allowed origins from {@link jakarta.servlet.FilterConfig}.
      */
     public static final String PARAM_CORS_ALLOWED_ORIGINS =
             "cors.allowed.origins";
 
     /**
      * Key to retrieve support credentials from
-     * {@link javax.servlet.FilterConfig}.
+     * {@link jakarta.servlet.FilterConfig}.
      */
     public static final String PARAM_CORS_SUPPORT_CREDENTIALS =
             "cors.support.credentials";
 
     /**
-     * Key to retrieve exposed headers from {@link javax.servlet.FilterConfig}.
+     * Key to retrieve exposed headers from {@link jakarta.servlet.FilterConfig}.
      */
     public static final String PARAM_CORS_EXPOSED_HEADERS =
             "cors.exposed.headers";
 
     /**
-     * Key to retrieve allowed headers from {@link javax.servlet.FilterConfig}.
+     * Key to retrieve allowed headers from {@link jakarta.servlet.FilterConfig}.
      */
     public static final String PARAM_CORS_ALLOWED_HEADERS =
             "cors.allowed.headers";
 
     /**
-     * Key to retrieve allowed methods from {@link javax.servlet.FilterConfig}.
+     * Key to retrieve allowed methods from {@link jakarta.servlet.FilterConfig}.
      */
     public static final String PARAM_CORS_ALLOWED_METHODS =
             "cors.allowed.methods";
 
     /**
      * Key to retrieve preflight max age from
-     * {@link javax.servlet.FilterConfig}.
+     * {@link jakarta.servlet.FilterConfig}.
      */
     public static final String PARAM_CORS_PREFLIGHT_MAXAGE =
             "cors.preflight.maxage";
diff --git a/java/org/apache/catalina/filters/CsrfPreventionFilter.java b/java/org/apache/catalina/filters/CsrfPreventionFilter.java
index 621cd6d..f71c888 100644
--- a/java/org/apache/catalina/filters/CsrfPreventionFilter.java
+++ b/java/org/apache/catalina/filters/CsrfPreventionFilter.java
@@ -23,15 +23,15 @@ import java.util.LinkedHashMap;
 import java.util.Map;
 import java.util.Set;
 
-import javax.servlet.FilterChain;
-import javax.servlet.FilterConfig;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpServletResponseWrapper;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.FilterConfig;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponseWrapper;
+import jakarta.servlet.http.HttpSession;
 
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
diff --git a/java/org/apache/catalina/filters/CsrfPreventionFilterBase.java b/java/org/apache/catalina/filters/CsrfPreventionFilterBase.java
index c0083f0..63702f7 100644
--- a/java/org/apache/catalina/filters/CsrfPreventionFilterBase.java
+++ b/java/org/apache/catalina/filters/CsrfPreventionFilterBase.java
@@ -19,10 +19,10 @@ package org.apache.catalina.filters;
 import java.security.SecureRandom;
 import java.util.Random;
 
-import javax.servlet.FilterConfig;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.FilterConfig;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
diff --git a/java/org/apache/catalina/filters/ExpiresFilter.java b/java/org/apache/catalina/filters/ExpiresFilter.java
index 13dfa5e..f3eaf58 100644
--- a/java/org/apache/catalina/filters/ExpiresFilter.java
+++ b/java/org/apache/catalina/filters/ExpiresFilter.java
@@ -30,17 +30,17 @@ import java.util.NoSuchElementException;
 import java.util.StringTokenizer;
 import java.util.regex.Pattern;
 
-import javax.servlet.FilterChain;
-import javax.servlet.FilterConfig;
-import javax.servlet.ServletException;
-import javax.servlet.ServletOutputStream;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.WriteListener;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpServletResponseWrapper;
-import javax.servlet.http.MappingMatch;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.FilterConfig;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletOutputStream;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.WriteListener;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponseWrapper;
+import jakarta.servlet.http.MappingMatch;
 
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
diff --git a/java/org/apache/catalina/filters/FailedRequestFilter.java b/java/org/apache/catalina/filters/FailedRequestFilter.java
index 2e504e6..7c62232 100644
--- a/java/org/apache/catalina/filters/FailedRequestFilter.java
+++ b/java/org/apache/catalina/filters/FailedRequestFilter.java
@@ -18,11 +18,11 @@ package org.apache.catalina.filters;
 
 import java.io.IOException;
 
-import javax.servlet.FilterChain;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.apache.catalina.Globals;
 import org.apache.juli.logging.Log;
diff --git a/java/org/apache/catalina/filters/FilterBase.java b/java/org/apache/catalina/filters/FilterBase.java
index 6513136..9ef6c75 100644
--- a/java/org/apache/catalina/filters/FilterBase.java
+++ b/java/org/apache/catalina/filters/FilterBase.java
@@ -18,9 +18,9 @@ package org.apache.catalina.filters;
 
 import java.util.Enumeration;
 
-import javax.servlet.Filter;
-import javax.servlet.FilterConfig;
-import javax.servlet.ServletException;
+import jakarta.servlet.Filter;
+import jakarta.servlet.FilterConfig;
+import jakarta.servlet.ServletException;
 
 import org.apache.juli.logging.Log;
 import org.apache.tomcat.util.IntrospectionUtils;
diff --git a/java/org/apache/catalina/filters/HttpHeaderSecurityFilter.java b/java/org/apache/catalina/filters/HttpHeaderSecurityFilter.java
index a41aca5..ddf420a 100644
--- a/java/org/apache/catalina/filters/HttpHeaderSecurityFilter.java
+++ b/java/org/apache/catalina/filters/HttpHeaderSecurityFilter.java
@@ -20,12 +20,12 @@ import java.io.IOException;
 import java.net.URI;
 import java.net.URISyntaxException;
 
-import javax.servlet.FilterChain;
-import javax.servlet.FilterConfig;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.FilterConfig;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
diff --git a/java/org/apache/catalina/filters/RemoteAddrFilter.java b/java/org/apache/catalina/filters/RemoteAddrFilter.java
index 1239494..b179426 100644
--- a/java/org/apache/catalina/filters/RemoteAddrFilter.java
+++ b/java/org/apache/catalina/filters/RemoteAddrFilter.java
@@ -18,10 +18,10 @@ package org.apache.catalina.filters;
 
 import java.io.IOException;
 
-import javax.servlet.FilterChain;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
 
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
diff --git a/java/org/apache/catalina/filters/RemoteCIDRFilter.java b/java/org/apache/catalina/filters/RemoteCIDRFilter.java
index 01b655d..759da6d 100644
--- a/java/org/apache/catalina/filters/RemoteCIDRFilter.java
+++ b/java/org/apache/catalina/filters/RemoteCIDRFilter.java
@@ -25,11 +25,11 @@ import java.util.Collections;
 import java.util.LinkedList;
 import java.util.List;
 
-import javax.servlet.FilterChain;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.apache.catalina.util.NetMask;
 import org.apache.juli.logging.Log;
diff --git a/java/org/apache/catalina/filters/RemoteHostFilter.java b/java/org/apache/catalina/filters/RemoteHostFilter.java
index ec10b53..12318be 100644
--- a/java/org/apache/catalina/filters/RemoteHostFilter.java
+++ b/java/org/apache/catalina/filters/RemoteHostFilter.java
@@ -18,10 +18,10 @@ package org.apache.catalina.filters;
 
 import java.io.IOException;
 
-import javax.servlet.FilterChain;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
 
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
diff --git a/java/org/apache/catalina/filters/RemoteIpFilter.java b/java/org/apache/catalina/filters/RemoteIpFilter.java
index 4664a85..7dca413 100644
--- a/java/org/apache/catalina/filters/RemoteIpFilter.java
+++ b/java/org/apache/catalina/filters/RemoteIpFilter.java
@@ -27,16 +27,16 @@ import java.util.List;
 import java.util.Map;
 import java.util.regex.Pattern;
 
-import javax.servlet.FilterChain;
-import javax.servlet.GenericFilter;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletRequestWrapper;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletRequestWrapper;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.PushBuilder;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.GenericFilter;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletRequestWrapper;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequestWrapper;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.PushBuilder;
 
 import org.apache.catalina.AccessLog;
 import org.apache.catalina.Globals;
diff --git a/java/org/apache/catalina/filters/RequestDumperFilter.java b/java/org/apache/catalina/filters/RequestDumperFilter.java
index 029e481..aad5956 100644
--- a/java/org/apache/catalina/filters/RequestDumperFilter.java
+++ b/java/org/apache/catalina/filters/RequestDumperFilter.java
@@ -22,14 +22,14 @@ import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.Enumeration;
 
-import javax.servlet.FilterChain;
-import javax.servlet.GenericFilter;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.GenericFilter;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.Cookie;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
diff --git a/java/org/apache/catalina/filters/RequestFilter.java b/java/org/apache/catalina/filters/RequestFilter.java
index a20a768..1fb04cf 100644
--- a/java/org/apache/catalina/filters/RequestFilter.java
+++ b/java/org/apache/catalina/filters/RequestFilter.java
@@ -20,12 +20,12 @@ package org.apache.catalina.filters;
 import java.io.IOException;
 import java.util.regex.Pattern;
 
-import javax.servlet.FilterChain;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
 /**
  * Implementation of a Filter that performs filtering based on comparing the
diff --git a/java/org/apache/catalina/filters/RestCsrfPreventionFilter.java b/java/org/apache/catalina/filters/RestCsrfPreventionFilter.java
index 44f5da1..b557ab8 100644
--- a/java/org/apache/catalina/filters/RestCsrfPreventionFilter.java
+++ b/java/org/apache/catalina/filters/RestCsrfPreventionFilter.java
@@ -24,14 +24,14 @@ import java.util.Set;
 import java.util.function.Predicate;
 import java.util.regex.Pattern;
 
-import javax.servlet.FilterChain;
-import javax.servlet.FilterConfig;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.FilterConfig;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpSession;
 
 /**
  * Provides basic CSRF protection for REST APIs. The filter assumes that the
diff --git a/java/org/apache/catalina/filters/SessionInitializerFilter.java b/java/org/apache/catalina/filters/SessionInitializerFilter.java
index dafc288..0e4bc9a 100644
--- a/java/org/apache/catalina/filters/SessionInitializerFilter.java
+++ b/java/org/apache/catalina/filters/SessionInitializerFilter.java
@@ -18,16 +18,16 @@ package org.apache.catalina.filters;
 
 import java.io.IOException;
 
-import javax.servlet.Filter;
-import javax.servlet.FilterChain;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.Filter;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpSession;
 
 /**
- * A {@link javax.servlet.Filter} that initializes the {@link HttpSession} for
+ * A {@link jakarta.servlet.Filter} that initializes the {@link HttpSession} for
  * the {@link HttpServletRequest} by calling its getSession() method.
  * <p>
  * This is required for some operations with WebSocket requests, where it is
diff --git a/java/org/apache/catalina/filters/SetCharacterEncodingFilter.java b/java/org/apache/catalina/filters/SetCharacterEncodingFilter.java
index e196427..e545961 100644
--- a/java/org/apache/catalina/filters/SetCharacterEncodingFilter.java
+++ b/java/org/apache/catalina/filters/SetCharacterEncodingFilter.java
@@ -18,10 +18,10 @@ package org.apache.catalina.filters;
 
 import java.io.IOException;
 
-import javax.servlet.FilterChain;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
 
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
diff --git a/java/org/apache/catalina/filters/WebdavFixFilter.java b/java/org/apache/catalina/filters/WebdavFixFilter.java
index e625f2e..9a1f86d 100644
--- a/java/org/apache/catalina/filters/WebdavFixFilter.java
+++ b/java/org/apache/catalina/filters/WebdavFixFilter.java
@@ -18,13 +18,13 @@ package org.apache.catalina.filters;
 
 import java.io.IOException;
 
-import javax.servlet.FilterChain;
-import javax.servlet.GenericFilter;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.GenericFilter;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.apache.tomcat.util.res.StringManager;
 
diff --git a/java/org/apache/catalina/ha/ClusterSession.java b/java/org/apache/catalina/ha/ClusterSession.java
index aa598f8..178e032 100644
--- a/java/org/apache/catalina/ha/ClusterSession.java
+++ b/java/org/apache/catalina/ha/ClusterSession.java
@@ -18,7 +18,7 @@
 
 package org.apache.catalina.ha;
 
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpSession;
 
 import org.apache.catalina.Session;
 
diff --git a/java/org/apache/catalina/ha/context/ReplicatedContext.java b/java/org/apache/catalina/ha/context/ReplicatedContext.java
index 97cc656..9a387be 100644
--- a/java/org/apache/catalina/ha/context/ReplicatedContext.java
+++ b/java/org/apache/catalina/ha/context/ReplicatedContext.java
@@ -23,7 +23,7 @@ import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 
-import javax.servlet.ServletContext;
+import jakarta.servlet.ServletContext;
 
 import org.apache.catalina.Globals;
 import org.apache.catalina.LifecycleException;
diff --git a/java/org/apache/catalina/ha/session/JvmRouteBinderValve.java b/java/org/apache/catalina/ha/session/JvmRouteBinderValve.java
index 7105654..58733fb 100644
--- a/java/org/apache/catalina/ha/session/JvmRouteBinderValve.java
+++ b/java/org/apache/catalina/ha/session/JvmRouteBinderValve.java
@@ -18,7 +18,7 @@ package org.apache.catalina.ha.session;
 
 import java.io.IOException;
 
-import javax.servlet.ServletException;
+import jakarta.servlet.ServletException;
 
 import org.apache.catalina.Cluster;
 import org.apache.catalina.LifecycleException;
diff --git a/java/org/apache/catalina/ha/tcp/ReplicationValve.java b/java/org/apache/catalina/ha/tcp/ReplicationValve.java
index 2f576b9..85e9c1a 100644
--- a/java/org/apache/catalina/ha/tcp/ReplicationValve.java
+++ b/java/org/apache/catalina/ha/tcp/ReplicationValve.java
@@ -24,7 +24,7 @@ import java.util.List;
 import java.util.regex.Pattern;
 import java.util.regex.PatternSyntaxException;
 
-import javax.servlet.ServletException;
+import jakarta.servlet.ServletException;
 
 import org.apache.catalina.Cluster;
 import org.apache.catalina.Context;
diff --git a/java/org/apache/catalina/loader/WebappClassLoaderBase.java b/java/org/apache/catalina/loader/WebappClassLoaderBase.java
index 4815ad9..158d5c5 100644
--- a/java/org/apache/catalina/loader/WebappClassLoaderBase.java
+++ b/java/org/apache/catalina/loader/WebappClassLoaderBase.java
@@ -2553,7 +2553,7 @@ public abstract class WebappClassLoaderBase extends URLClassLoader
                 }
             } else if (!isClassName && ch == '/') {
                 /* 8 == length("jakarta/") */
-                if (name.startsWith("servlet/jsp/jstl/", 6)) {
+                if (name.startsWith("servlet/jsp/jstl/", 8)) {
                     return false;
                 }
                 if (name.startsWith("el/", 8) ||
@@ -2571,24 +2571,12 @@ public abstract class WebappClassLoaderBase extends URLClassLoader
             ch = name.charAt(5);
             if (isClassName && ch == '.') {
                 /* 6 == length("javax.") */
-                if (name.startsWith("servlet.jsp.jstl.", 6)) {
-                    return false;
-                }
-                if (name.startsWith("el.", 6) ||
-                    name.startsWith("servlet.", 6) ||
-                    name.startsWith("websocket.", 6) ||
-                    name.startsWith("security.auth.message.", 6)) {
+                if (name.startsWith("websocket.", 6)) {
                     return true;
                 }
             } else if (!isClassName && ch == '/') {
                 /* 6 == length("javax/") */
-                if (name.startsWith("servlet/jsp/jstl/", 6)) {
-                    return false;
-                }
-                if (name.startsWith("el/", 6) ||
-                    name.startsWith("servlet/", 6) ||
-                    name.startsWith("websocket/", 6) ||
-                    name.startsWith("security/auth/message/", 6)) {
+                if (name.startsWith("websocket/", 6)) {
                     return true;
                 }
             }
diff --git a/java/org/apache/catalina/loader/WebappLoader.java b/java/org/apache/catalina/loader/WebappLoader.java
index d967e15..455e657 100644
--- a/java/org/apache/catalina/loader/WebappLoader.java
+++ b/java/org/apache/catalina/loader/WebappLoader.java
@@ -27,7 +27,8 @@ import java.net.URL;
 import java.net.URLClassLoader;
 
 import javax.management.ObjectName;
-import javax.servlet.ServletContext;
+
+import jakarta.servlet.ServletContext;
 
 import org.apache.catalina.Context;
 import org.apache.catalina.Globals;
diff --git a/java/org/apache/catalina/manager/DummyProxySession.java b/java/org/apache/catalina/manager/DummyProxySession.java
index cdc282f..1045688 100644
--- a/java/org/apache/catalina/manager/DummyProxySession.java
+++ b/java/org/apache/catalina/manager/DummyProxySession.java
@@ -19,7 +19,7 @@ package org.apache.catalina.manager;
 import java.security.Principal;
 import java.util.Iterator;
 
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpSession;
 
 import org.apache.catalina.Manager;
 import org.apache.catalina.Session;
diff --git a/java/org/apache/catalina/manager/HTMLManagerServlet.java b/java/org/apache/catalina/manager/HTMLManagerServlet.java
index 1a55209..ff129f0 100644
--- a/java/org/apache/catalina/manager/HTMLManagerServlet.java
+++ b/java/org/apache/catalina/manager/HTMLManagerServlet.java
@@ -35,11 +35,11 @@ import java.util.List;
 import java.util.Locale;
 import java.util.Set;
 
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
-import javax.servlet.http.Part;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpSession;
+import jakarta.servlet.http.Part;
 
 import org.apache.catalina.Container;
 import org.apache.catalina.Context;
@@ -790,7 +790,7 @@ public final class HTMLManagerServlet extends ManagerServlet {
 
 
     /**
-     * @see javax.servlet.Servlet#getServletInfo()
+     * @see jakarta.servlet.Servlet#getServletInfo()
      */
     @Override
     public String getServletInfo() {
@@ -798,7 +798,7 @@ public final class HTMLManagerServlet extends ManagerServlet {
     }
 
     /**
-     * @see javax.servlet.GenericServlet#init()
+     * @see jakarta.servlet.GenericServlet#init()
      */
     @Override
     public void init() throws ServletException {
diff --git a/java/org/apache/catalina/manager/JMXProxyServlet.java b/java/org/apache/catalina/manager/JMXProxyServlet.java
index 30b718e..574933f 100644
--- a/java/org/apache/catalina/manager/JMXProxyServlet.java
+++ b/java/org/apache/catalina/manager/JMXProxyServlet.java
@@ -31,10 +31,11 @@ import javax.management.ObjectName;
 import javax.management.OperationsException;
 import javax.management.ReflectionException;
 import javax.management.openmbean.CompositeData;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.apache.catalina.mbeans.MBeanDumper;
 import org.apache.catalina.tribes.util.StringManager;
diff --git a/java/org/apache/catalina/manager/ManagerServlet.java b/java/org/apache/catalina/manager/ManagerServlet.java
index 1e3c7b4..e58955a 100644
--- a/java/org/apache/catalina/manager/ManagerServlet.java
+++ b/java/org/apache/catalina/manager/ManagerServlet.java
@@ -38,13 +38,14 @@ import javax.management.MalformedObjectNameException;
 import javax.management.ObjectName;
 import javax.naming.Binding;
 import javax.naming.NamingEnumeration;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-import javax.servlet.ServletInputStream;
-import javax.servlet.UnavailableException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletInputStream;
+import jakarta.servlet.UnavailableException;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.apache.catalina.Container;
 import org.apache.catalina.ContainerServlet;
diff --git a/java/org/apache/catalina/manager/StatusManagerServlet.java b/java/org/apache/catalina/manager/StatusManagerServlet.java
index 1fc7be2..a022630 100644
--- a/java/org/apache/catalina/manager/StatusManagerServlet.java
+++ b/java/org/apache/catalina/manager/StatusManagerServlet.java
@@ -34,10 +34,11 @@ import javax.management.Notification;
 import javax.management.NotificationListener;
 import javax.management.ObjectInstance;
 import javax.management.ObjectName;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.apache.catalina.util.ServerInfo;
 import org.apache.tomcat.util.modeler.Registry;
diff --git a/java/org/apache/catalina/manager/StatusTransformer.java b/java/org/apache/catalina/manager/StatusTransformer.java
index f2649c1..cf546b5 100644
--- a/java/org/apache/catalina/manager/StatusTransformer.java
+++ b/java/org/apache/catalina/manager/StatusTransformer.java
@@ -35,7 +35,8 @@ import java.util.Vector;
 import javax.management.MBeanServer;
 import javax.management.ObjectInstance;
 import javax.management.ObjectName;
-import javax.servlet.http.HttpServletResponse;
+
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.apache.tomcat.util.ExceptionUtils;
 import org.apache.tomcat.util.security.Escape;
diff --git a/java/org/apache/catalina/manager/host/HTMLHostManagerServlet.java b/java/org/apache/catalina/manager/host/HTMLHostManagerServlet.java
index b9fbc20..fa03b6b 100644
--- a/java/org/apache/catalina/manager/host/HTMLHostManagerServlet.java
+++ b/java/org/apache/catalina/manager/host/HTMLHostManagerServlet.java
@@ -26,9 +26,9 @@ import java.text.MessageFormat;
 import java.util.Map;
 import java.util.TreeMap;
 
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.apache.catalina.Container;
 import org.apache.catalina.Host;
diff --git a/java/org/apache/catalina/manager/host/HostManagerServlet.java b/java/org/apache/catalina/manager/host/HostManagerServlet.java
index 7147c03..df9116d 100644
--- a/java/org/apache/catalina/manager/host/HostManagerServlet.java
+++ b/java/org/apache/catalina/manager/host/HostManagerServlet.java
@@ -28,11 +28,12 @@ import java.util.StringTokenizer;
 import javax.management.InstanceNotFoundException;
 import javax.management.MBeanServer;
 import javax.management.ObjectName;
-import javax.servlet.ServletException;
-import javax.servlet.UnavailableException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+
+import jakarta.servlet.ServletException;
+import jakarta.servlet.UnavailableException;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.apache.catalina.Container;
 import org.apache.catalina.ContainerServlet;
diff --git a/java/org/apache/catalina/manager/util/SessionUtils.java b/java/org/apache/catalina/manager/util/SessionUtils.java
index fda10f9..d14deb4 100644
--- a/java/org/apache/catalina/manager/util/SessionUtils.java
+++ b/java/org/apache/catalina/manager/util/SessionUtils.java
@@ -25,7 +25,8 @@ import java.util.List;
 import java.util.Locale;
 
 import javax.security.auth.Subject;
-import javax.servlet.http.HttpSession;
+
+import jakarta.servlet.http.HttpSession;
 
 import org.apache.catalina.Session;
 import org.apache.tomcat.util.ExceptionUtils;
@@ -49,8 +50,8 @@ public class SessionUtils {
      */
     // org.apache.struts.Globals.LOCALE_KEY
     private static final String STRUTS_LOCALE_KEY = "org.apache.struts.action.LOCALE";//$NON-NLS-1$
-    // javax.servlet.jsp.jstl.core.Config.FMT_LOCALE
-    private static final String JSTL_LOCALE_KEY   = "javax.servlet.jsp.jstl.fmt.locale";//$NON-NLS-1$
+    // jakarta.servlet.jsp.jstl.core.Config.FMT_LOCALE
+    private static final String JSTL_LOCALE_KEY   = "jakarta.servlet.jsp.jstl.fmt.locale";//$NON-NLS-1$
     // org.springframework.web.servlet.i18n.SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME
     private static final String SPRING_LOCALE_KEY = "org.springframework.web.servlet.i18n.SessionLocaleResolver.LOCALE";//$NON-NLS-1$
     /**
diff --git a/java/org/apache/catalina/mapper/Mapper.java b/java/org/apache/catalina/mapper/Mapper.java
index a049ba3..a584567 100644
--- a/java/org/apache/catalina/mapper/Mapper.java
+++ b/java/org/apache/catalina/mapper/Mapper.java
@@ -25,7 +25,7 @@ import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.CopyOnWriteArrayList;
 
-import javax.servlet.http.MappingMatch;
+import jakarta.servlet.http.MappingMatch;
 
 import org.apache.catalina.Context;
 import org.apache.catalina.Host;
diff --git a/java/org/apache/catalina/mapper/MappingData.java b/java/org/apache/catalina/mapper/MappingData.java
index c95c4c2..4480854 100644
--- a/java/org/apache/catalina/mapper/MappingData.java
+++ b/java/org/apache/catalina/mapper/MappingData.java
@@ -17,7 +17,7 @@
 
 package org.apache.catalina.mapper;
 
-import javax.servlet.http.MappingMatch;
+import jakarta.servlet.http.MappingMatch;
 
 import org.apache.catalina.Context;
 import org.apache.catalina.Host;
@@ -45,7 +45,7 @@ public class MappingData {
 
     public final MessageBytes redirectPath = MessageBytes.newInstance();
 
-    // Fields used by ApplicationMapping to implement javax.servlet.http.HttpServletMapping
+    // Fields used by ApplicationMapping to implement jakarta.servlet.http.HttpServletMapping
     public MappingMatch matchType = null;
 
     public void recycle() {
diff --git a/java/org/apache/catalina/realm/JAASMemoryLoginModule.java b/java/org/apache/catalina/realm/JAASMemoryLoginModule.java
index 906fb9c..a228003 100644
--- a/java/org/apache/catalina/realm/JAASMemoryLoginModule.java
+++ b/java/org/apache/catalina/realm/JAASMemoryLoginModule.java
@@ -32,7 +32,8 @@ import javax.security.auth.callback.UnsupportedCallbackException;
 import javax.security.auth.login.FailedLoginException;
 import javax.security.auth.login.LoginException;
 import javax.security.auth.spi.LoginModule;
-import javax.servlet.http.HttpServletRequest;
+
+import jakarta.servlet.http.HttpServletRequest;
 
 import org.apache.catalina.CredentialHandler;
 import org.apache.juli.logging.Log;
diff --git a/java/org/apache/catalina/realm/JAASRealm.java b/java/org/apache/catalina/realm/JAASRealm.java
index 767b6f5..26dead7 100644
--- a/java/org/apache/catalina/realm/JAASRealm.java
+++ b/java/org/apache/catalina/realm/JAASRealm.java
@@ -33,7 +33,8 @@ import javax.security.auth.login.CredentialExpiredException;
 import javax.security.auth.login.FailedLoginException;
 import javax.security.auth.login.LoginContext;
 import javax.security.auth.login.LoginException;
-import javax.servlet.http.HttpServletRequest;
+
+import jakarta.servlet.http.HttpServletRequest;
 
 import org.apache.catalina.Container;
 import org.apache.catalina.LifecycleException;
diff --git a/java/org/apache/catalina/realm/RealmBase.java b/java/org/apache/catalina/realm/RealmBase.java
index 3c5b1e7..f3aa8ab 100644
--- a/java/org/apache/catalina/realm/RealmBase.java
+++ b/java/org/apache/catalina/realm/RealmBase.java
@@ -29,8 +29,8 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Locale;
 
-import javax.servlet.annotation.ServletSecurity.TransportGuarantee;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.annotation.ServletSecurity.TransportGuarantee;
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.apache.catalina.Container;
 import org.apache.catalina.Context;
diff --git a/java/org/apache/catalina/security/SecurityClassLoad.java b/java/org/apache/catalina/security/SecurityClassLoad.java
index 2510424..5db3f69 100644
--- a/java/org/apache/catalina/security/SecurityClassLoad.java
+++ b/java/org/apache/catalina/security/SecurityClassLoad.java
@@ -121,7 +121,7 @@ public final class SecurityClassLoad {
 
 
     private static final void loadJavaxPackage(ClassLoader loader) throws Exception {
-        loader.loadClass("javax.servlet.http.Cookie");
+        loader.loadClass("jakarta.servlet.http.Cookie");
     }
 
 
diff --git a/java/org/apache/catalina/security/SecurityUtil.java b/java/org/apache/catalina/security/SecurityUtil.java
index 4a550ea..d7835c7 100644
--- a/java/org/apache/catalina/security/SecurityUtil.java
+++ b/java/org/apache/catalina/security/SecurityUtil.java
@@ -27,12 +27,13 @@ import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
 import javax.security.auth.Subject;
-import javax.servlet.Filter;
-import javax.servlet.Servlet;
-import javax.servlet.ServletException;
-import javax.servlet.UnavailableException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
+
+import jakarta.servlet.Filter;
+import jakarta.servlet.Servlet;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.UnavailableException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpSession;
 
 import org.apache.catalina.Globals;
 import org.apache.juli.logging.Log;
diff --git a/java/org/apache/catalina/servlets/CGIServlet.java b/java/org/apache/catalina/servlets/CGIServlet.java
index b519497..d4950bc 100644
--- a/java/org/apache/catalina/servlets/CGIServlet.java
+++ b/java/org/apache/catalina/servlets/CGIServlet.java
@@ -39,15 +39,15 @@ import java.util.StringTokenizer;
 import java.util.Vector;
 import java.util.regex.Pattern;
 
-import javax.servlet.RequestDispatcher;
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.RequestDispatcher;
+import jakarta.servlet.ServletConfig;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.Cookie;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpSession;
 
 import org.apache.catalina.util.IOTools;
 import org.apache.juli.logging.Log;
diff --git a/java/org/apache/catalina/servlets/DefaultServlet.java b/java/org/apache/catalina/servlets/DefaultServlet.java
index 2883f5c..1590cb6 100644
--- a/java/org/apache/catalina/servlets/DefaultServlet.java
+++ b/java/org/apache/catalina/servlets/DefaultServlet.java
@@ -46,17 +46,6 @@ import java.util.List;
 import java.util.Locale;
 import java.util.StringTokenizer;
 
-import javax.servlet.DispatcherType;
-import javax.servlet.RequestDispatcher;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-import javax.servlet.ServletOutputStream;
-import javax.servlet.ServletResponse;
-import javax.servlet.ServletResponseWrapper;
-import javax.servlet.UnavailableException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
@@ -68,6 +57,18 @@ import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 import javax.xml.transform.stream.StreamSource;
 
+import jakarta.servlet.DispatcherType;
+import jakarta.servlet.RequestDispatcher;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletOutputStream;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.ServletResponseWrapper;
+import jakarta.servlet.UnavailableException;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+
 import org.apache.catalina.Context;
 import org.apache.catalina.Globals;
 import org.apache.catalina.WebResource;
diff --git a/java/org/apache/catalina/servlets/WebdavServlet.java b/java/org/apache/catalina/servlets/WebdavServlet.java
index 5874488..dd2107d 100644
--- a/java/org/apache/catalina/servlets/WebdavServlet.java
+++ b/java/org/apache/catalina/servlets/WebdavServlet.java
@@ -31,16 +31,17 @@ import java.util.Stack;
 import java.util.TimeZone;
 import java.util.Vector;
 
-import javax.servlet.DispatcherType;
-import javax.servlet.RequestDispatcher;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
 
+import jakarta.servlet.DispatcherType;
+import jakarta.servlet.RequestDispatcher;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+
 import org.apache.catalina.WebResource;
 import org.apache.catalina.connector.RequestFacade;
 import org.apache.catalina.util.DOMWriter;
diff --git a/java/org/apache/catalina/session/FileStore.java b/java/org/apache/catalina/session/FileStore.java
index 73016ff..02d80b6 100644
--- a/java/org/apache/catalina/session/FileStore.java
+++ b/java/org/apache/catalina/session/FileStore.java
@@ -27,7 +27,7 @@ import java.io.ObjectOutputStream;
 import java.util.ArrayList;
 import java.util.List;
 
-import javax.servlet.ServletContext;
+import jakarta.servlet.ServletContext;
 
 import org.apache.catalina.Context;
 import org.apache.catalina.Globals;
diff --git a/java/org/apache/catalina/session/StandardManager.java b/java/org/apache/catalina/session/StandardManager.java
index caef4f5..48ed3b2 100644
--- a/java/org/apache/catalina/session/StandardManager.java
+++ b/java/org/apache/catalina/session/StandardManager.java
@@ -31,7 +31,7 @@ import java.security.PrivilegedExceptionAction;
 import java.util.ArrayList;
 import java.util.List;
 
-import javax.servlet.ServletContext;
+import jakarta.servlet.ServletContext;
 
 import org.apache.catalina.Context;
 import org.apache.catalina.LifecycleException;
@@ -106,7 +106,7 @@ public class StandardManager extends ManagerBase {
      * A <code>null</code> value indicates that no persistence is desired.
      * If this pathname is relative, it will be resolved against the
      * temporary working directory provided by our context, available via
-     * the <code>javax.servlet.context.tempdir</code> context attribute.
+     * the <code>jakarta.servlet.context.tempdir</code> context attribute.
      */
     protected String pathname = "SESSIONS.ser";
 
diff --git a/java/org/apache/catalina/session/StandardSession.java b/java/org/apache/catalina/session/StandardSession.java
index c8446f9..adfe06f 100644
--- a/java/org/apache/catalina/session/StandardSession.java
+++ b/java/org/apache/catalina/session/StandardSession.java
@@ -39,15 +39,15 @@ import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.atomic.AtomicInteger;
 
-import javax.servlet.ServletContext;
-import javax.servlet.http.HttpSession;
-import javax.servlet.http.HttpSessionActivationListener;
-import javax.servlet.http.HttpSessionAttributeListener;
-import javax.servlet.http.HttpSessionBindingEvent;
-import javax.servlet.http.HttpSessionBindingListener;
-import javax.servlet.http.HttpSessionEvent;
-import javax.servlet.http.HttpSessionIdListener;
-import javax.servlet.http.HttpSessionListener;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpSessionActivationListener;
+import jakarta.servlet.http.HttpSessionAttributeListener;
+import jakarta.servlet.http.HttpSessionBindingEvent;
+import jakarta.servlet.http.HttpSessionBindingListener;
+import jakarta.servlet.http.HttpSessionEvent;
+import jakarta.servlet.http.HttpSessionIdListener;
+import jakarta.servlet.http.HttpSessionListener;
 
 import org.apache.catalina.Context;
 import org.apache.catalina.Globals;
@@ -247,7 +247,7 @@ public class StandardSession implements HttpSession, Session, Serializable {
      */
     @Deprecated
     protected static volatile
-            javax.servlet.http.HttpSessionContext sessionContext = null;
+            jakarta.servlet.http.HttpSessionContext sessionContext = null;
 
 
     /**
@@ -1119,7 +1119,7 @@ public class StandardSession implements HttpSession, Session, Serializable {
      */
     @Override
     @Deprecated
-    public javax.servlet.http.HttpSessionContext getSessionContext() {
+    public jakarta.servlet.http.HttpSessionContext getSessionContext() {
         if (sessionContext == null)
             sessionContext = new StandardSessionContext();
         return sessionContext;
@@ -1854,7 +1854,7 @@ public class StandardSession implements HttpSession, Session, Serializable {
 
 @Deprecated
 final class StandardSessionContext
-        implements javax.servlet.http.HttpSessionContext {
+        implements jakarta.servlet.http.HttpSessionContext {
 
     private static final List<String> emptyString = Collections.emptyList();
 
diff --git a/java/org/apache/catalina/session/StandardSessionFacade.java b/java/org/apache/catalina/session/StandardSessionFacade.java
index fbf4349..04bc3f7 100644
--- a/java/org/apache/catalina/session/StandardSessionFacade.java
+++ b/java/org/apache/catalina/session/StandardSessionFacade.java
@@ -18,8 +18,8 @@ package org.apache.catalina.session;
 
 import java.util.Enumeration;
 
-import javax.servlet.ServletContext;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.http.HttpSession;
 
 /**
  * Facade for the StandardSession object.
@@ -93,7 +93,7 @@ public class StandardSessionFacade implements HttpSession {
      */
     @Override
     @Deprecated
-    public javax.servlet.http.HttpSessionContext getSessionContext() {
+    public jakarta.servlet.http.HttpSessionContext getSessionContext() {
         return session.getSessionContext();
     }
 
diff --git a/java/org/apache/catalina/ssi/ByteArrayServletOutputStream.java b/java/org/apache/catalina/ssi/ByteArrayServletOutputStream.java
index 6769425..fe3802c 100644
--- a/java/org/apache/catalina/ssi/ByteArrayServletOutputStream.java
+++ b/java/org/apache/catalina/ssi/ByteArrayServletOutputStream.java
@@ -19,8 +19,8 @@ package org.apache.catalina.ssi;
 
 import java.io.ByteArrayOutputStream;
 
-import javax.servlet.ServletOutputStream;
-import javax.servlet.WriteListener;
+import jakarta.servlet.ServletOutputStream;
+import jakarta.servlet.WriteListener;
 
 
 /**
diff --git a/java/org/apache/catalina/ssi/ResponseIncludeWrapper.java b/java/org/apache/catalina/ssi/ResponseIncludeWrapper.java
index 8831712..023491d 100644
--- a/java/org/apache/catalina/ssi/ResponseIncludeWrapper.java
+++ b/java/org/apache/catalina/ssi/ResponseIncludeWrapper.java
@@ -22,9 +22,9 @@ import java.io.OutputStreamWriter;
 import java.io.PrintWriter;
 import java.util.Locale;
 
-import javax.servlet.ServletOutputStream;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpServletResponseWrapper;
+import jakarta.servlet.ServletOutputStream;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponseWrapper;
 
 import org.apache.tomcat.util.http.FastHttpDateFormat;
 
diff --git a/java/org/apache/catalina/ssi/SSIFilter.java b/java/org/apache/catalina/ssi/SSIFilter.java
index 6bad9f3..76630a4 100644
--- a/java/org/apache/catalina/ssi/SSIFilter.java
+++ b/java/org/apache/catalina/ssi/SSIFilter.java
@@ -28,13 +28,13 @@ import java.io.Reader;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import javax.servlet.FilterChain;
-import javax.servlet.GenericFilter;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.GenericFilter;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 /**
  * Filter to process SSI requests within a webpage. Mapped to a content types
  * from within web.xml.
diff --git a/java/org/apache/catalina/ssi/SSIServlet.java b/java/org/apache/catalina/ssi/SSIServlet.java
index a39ed90..296c2fb 100644
--- a/java/org/apache/catalina/ssi/SSIServlet.java
+++ b/java/org/apache/catalina/ssi/SSIServlet.java
@@ -27,11 +27,11 @@ import java.net.URL;
 import java.net.URLConnection;
 import java.util.Locale;
 
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 /**
  * Servlet to process SSI requests within a webpage. Mapped to a path from
  * within web.xml.
diff --git a/java/org/apache/catalina/ssi/SSIServletExternalResolver.java b/java/org/apache/catalina/ssi/SSIServletExternalResolver.java
index fdd995a..09e6b40 100644
--- a/java/org/apache/catalina/ssi/SSIServletExternalResolver.java
+++ b/java/org/apache/catalina/ssi/SSIServletExternalResolver.java
@@ -28,11 +28,11 @@ import java.util.Date;
 import java.util.Enumeration;
 import java.util.Locale;
 
-import javax.servlet.RequestDispatcher;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.RequestDispatcher;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.apache.catalina.connector.Connector;
 import org.apache.catalina.connector.Request;
diff --git a/java/org/apache/catalina/ssi/SSIServletRequestUtil.java b/java/org/apache/catalina/ssi/SSIServletRequestUtil.java
index 9de34b6..1e63ca4 100644
--- a/java/org/apache/catalina/ssi/SSIServletRequestUtil.java
+++ b/java/org/apache/catalina/ssi/SSIServletRequestUtil.java
@@ -16,8 +16,8 @@
  */
 package org.apache.catalina.ssi;
 
-import javax.servlet.RequestDispatcher;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.RequestDispatcher;
+import jakarta.servlet.http.HttpServletRequest;
 
 import org.apache.tomcat.util.http.RequestUtil;
 
diff --git a/java/org/apache/catalina/startup/ContextConfig.java b/java/org/apache/catalina/startup/ContextConfig.java
index 39fb25d..981d519 100644
--- a/java/org/apache/catalina/startup/ContextConfig.java
+++ b/java/org/apache/catalina/startup/ContextConfig.java
@@ -39,11 +39,11 @@ import java.util.Properties;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 
-import javax.servlet.MultipartConfigElement;
-import javax.servlet.ServletContainerInitializer;
-import javax.servlet.ServletContext;
-import javax.servlet.SessionCookieConfig;
-import javax.servlet.annotation.HandlesTypes;
+import jakarta.servlet.MultipartConfigElement;
+import jakarta.servlet.ServletContainerInitializer;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.SessionCookieConfig;
+import jakarta.servlet.annotation.HandlesTypes;
 
 import org.apache.catalina.Authenticator;
 import org.apache.catalina.Container;
@@ -2137,11 +2137,11 @@ public class ContextConfig implements LifecycleListener {
             String className = clazz.getClassName();
             for (AnnotationEntry ae : annotationsEntries) {
                 String type = ae.getAnnotationType();
-                if ("Ljavax/servlet/annotation/WebServlet;".equals(type)) {
+                if ("Ljakarta/servlet/annotation/WebServlet;".equals(type)) {
                     processAnnotationWebServlet(className, ae, fragment);
-                }else if ("Ljavax/servlet/annotation/WebFilter;".equals(type)) {
+                }else if ("Ljakarta/servlet/annotation/WebFilter;".equals(type)) {
                     processAnnotationWebFilter(className, ae, fragment);
-                }else if ("Ljavax/servlet/annotation/WebListener;".equals(type)) {
+                }else if ("Ljakarta/servlet/annotation/WebListener;".equals(type)) {
                     fragment.addListener(className);
                 } else {
                     // Unknown annotation - ignore
diff --git a/java/org/apache/catalina/startup/FailedContext.java b/java/org/apache/catalina/startup/FailedContext.java
index 39d7b8a..b262561 100644
--- a/java/org/apache/catalina/startup/FailedContext.java
+++ b/java/org/apache/catalina/startup/FailedContext.java
@@ -23,12 +23,12 @@ import java.util.Locale;
 import java.util.Map;
 import java.util.Set;
 
-import javax.servlet.ServletContainerInitializer;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletRegistration;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletSecurityElement;
-import javax.servlet.descriptor.JspConfigDescriptor;
+import jakarta.servlet.ServletContainerInitializer;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.ServletRegistration;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletSecurityElement;
+import jakarta.servlet.descriptor.JspConfigDescriptor;
 
 import org.apache.catalina.AccessLog;
 import org.apache.catalina.Authenticator;
diff --git a/java/org/apache/catalina/startup/Tomcat.java b/java/org/apache/catalina/startup/Tomcat.java
index 43693a0..757d896 100644
--- a/java/org/apache/catalina/startup/Tomcat.java
+++ b/java/org/apache/catalina/startup/Tomcat.java
@@ -37,9 +37,9 @@ import java.util.logging.Level;
 import java.util.logging.LogManager;
 import java.util.logging.Logger;
 
-import javax.servlet.Servlet;
-import javax.servlet.ServletException;
-import javax.servlet.annotation.WebServlet;
+import jakarta.servlet.Servlet;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.annotation.WebServlet;
 
 import org.apache.catalina.Container;
 import org.apache.catalina.Context;
@@ -127,7 +127,7 @@ import org.apache.tomcat.util.res.StringManager;
  * default web.xml; rather, they add a {@link LifecycleListener} to configure
  * the defaults. Any WEB-INF/web.xml and META-INF/context.xml packaged with the
  * application will be processed normally. Normal web fragment and
- * {@link javax.servlet.ServletContainerInitializer} processing will be applied.
+ * {@link jakarta.servlet.ServletContainerInitializer} processing will be applied.
  *
  * <p>
  * In complex cases, you may prefer to use the ordinary Tomcat API to create
@@ -235,8 +235,8 @@ public class Tomcat {
      * {@link #setAddDefaultWebXmlToWebapp(boolean)} with {@code false}. Any
      * <code>WEB-INF/web.xml</code> and <code>META-INF/context.xml</code>
      * packaged with the application will always be processed and normal web
-     * fragment and {@link javax.servlet.ServletContainerInitializer} processing
-     * will always be applied.
+     * fragment and {@link jakarta.servlet.ServletContainerInitializer}
+     * processing will always be applied.
      *
      * @param contextPath The context mapping to use, "" for root context.
      * @param docBase     Base directory for the context, for static files. Must
@@ -305,11 +305,11 @@ public class Tomcat {
      * that there is no JSP support (no JSP servlet), no default servlet and
      * no web socket support unless explicitly enabled via the programmatic
      * interface. There is also no
-     * {@link javax.servlet.ServletContainerInitializer} processing and no
+     * {@link jakarta.servlet.ServletContainerInitializer} processing and no
      * annotation processing. If a
-     * {@link javax.servlet.ServletContainerInitializer} is added
+     * {@link jakarta.servlet.ServletContainerInitializer} is added
      * programmatically, there will still be no scanning for
-     * {@link javax.servlet.annotation.HandlesTypes} matches.
+     * {@link jakarta.servlet.annotation.HandlesTypes} matches.
      *
      * <p>
      * API calls equivalent with web.xml:
@@ -693,7 +693,7 @@ public class Tomcat {
      * {@link #setAddDefaultWebXmlToWebapp(boolean)} with {@code false}. Any
      * <code>WEB-INF/web.xml</code> and <code>META-INF/context.xml</code>
      * packaged with the application will always be processed and normal web
-     * fragment and {@link javax.servlet.ServletContainerInitializer} processing
+     * fragment and {@link jakarta.servlet.ServletContainerInitializer} processing
      * will always be applied.
      *
      * @param host        The host in which the context will be deployed
@@ -726,7 +726,7 @@ public class Tomcat {
      * {@link #setAddDefaultWebXmlToWebapp(boolean)} with {@code false}. Any
      * <code>WEB-INF/web.xml</code> and <code>META-INF/context.xml</code>
      * packaged with the application will always be processed and normal web
-     * fragment and {@link javax.servlet.ServletContainerInitializer} processing
+     * fragment and {@link jakarta.servlet.ServletContainerInitializer} processing
      * will always be applied.
      *
      * @param host        The host in which the context will be deployed
@@ -1161,7 +1161,7 @@ public class Tomcat {
         @SuppressWarnings("deprecation")
         public ExistingStandardWrapper( Servlet existing ) {
             this.existing = existing;
-            if (existing instanceof javax.servlet.SingleThreadModel) {
+            if (existing instanceof jakarta.servlet.SingleThreadModel) {
                 singleThreadModel = true;
                 instancePool = new Stack<>();
             }
diff --git a/java/org/apache/catalina/startup/WebAnnotationSet.java b/java/org/apache/catalina/startup/WebAnnotationSet.java
index bbca47d..1a5b138 100644
--- a/java/org/apache/catalina/startup/WebAnnotationSet.java
+++ b/java/org/apache/catalina/startup/WebAnnotationSet.java
@@ -19,13 +19,12 @@ package org.apache.catalina.startup;
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 
-import javax.servlet.ServletSecurityElement;
-import javax.servlet.annotation.ServletSecurity;
-
 import jakarta.annotation.Resource;
 import jakarta.annotation.Resources;
 import jakarta.annotation.security.DeclareRoles;
 import jakarta.annotation.security.RunAs;
+import jakarta.servlet.ServletSecurityElement;
+import jakarta.servlet.annotation.ServletSecurity;
 
 import org.apache.catalina.Container;
 import org.apache.catalina.Context;
diff --git a/java/org/apache/catalina/startup/WebappServiceLoader.java b/java/org/apache/catalina/startup/WebappServiceLoader.java
index a47a8f9..f0d2465 100644
--- a/java/org/apache/catalina/startup/WebappServiceLoader.java
+++ b/java/org/apache/catalina/startup/WebappServiceLoader.java
@@ -31,7 +31,7 @@ import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.regex.Pattern;
 
-import javax.servlet.ServletContext;
+import jakarta.servlet.ServletContext;
 
 import org.apache.catalina.Context;
 import org.apache.tomcat.util.scan.JarFactory;
@@ -54,7 +54,7 @@ import org.apache.tomcat.util.scan.JarFactory;
  *
  * @param <T> The type of service to load
  *
- * @see javax.servlet.ServletContainerInitializer
+ * @see jakarta.servlet.ServletContainerInitializer
  * @see java.util.ServiceLoader
  */
 public class WebappServiceLoader<T> {
diff --git a/java/org/apache/catalina/util/RequestUtil.java b/java/org/apache/catalina/util/RequestUtil.java
index ce6ffa7..dfd9ab7 100644
--- a/java/org/apache/catalina/util/RequestUtil.java
+++ b/java/org/apache/catalina/util/RequestUtil.java
@@ -16,7 +16,7 @@
  */
 package org.apache.catalina.util;
 
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
 
 /**
  * General purpose request parsing and encoding utility methods.
@@ -30,7 +30,7 @@ public final class RequestUtil {
      * Build an appropriate return value for
      * {@link HttpServletRequest#getRequestURL()} based on the provided
      * request object. Note that this will also work for instances of
-     * {@link javax.servlet.http.HttpServletRequestWrapper}.
+     * {@link jakarta.servlet.http.HttpServletRequestWrapper}.
      *
      * @param request The request object for which the URL should be built
      *
diff --git a/java/org/apache/catalina/util/SessionConfig.java b/java/org/apache/catalina/util/SessionConfig.java
index 69a0e09..6957285 100644
--- a/java/org/apache/catalina/util/SessionConfig.java
+++ b/java/org/apache/catalina/util/SessionConfig.java
@@ -16,7 +16,7 @@
  */
 package org.apache.catalina.util;
 
-import javax.servlet.SessionCookieConfig;
+import jakarta.servlet.SessionCookieConfig;
 
 import org.apache.catalina.Context;
 
diff --git a/java/org/apache/catalina/valves/AbstractAccessLogValve.java b/java/org/apache/catalina/valves/AbstractAccessLogValve.java
index 9f700e3..1515cfa 100644
--- a/java/org/apache/catalina/valves/AbstractAccessLogValve.java
+++ b/java/org/apache/catalina/valves/AbstractAccessLogValve.java
@@ -32,10 +32,10 @@ import java.util.Map;
 import java.util.TimeZone;
 import java.util.concurrent.atomic.AtomicBoolean;
 
-import javax.servlet.RequestDispatcher;
-import javax.servlet.ServletException;
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.RequestDispatcher;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.Cookie;
+import jakarta.servlet.http.HttpSession;
 
 import org.apache.catalina.AccessLog;
 import org.apache.catalina.Globals;
diff --git a/java/org/apache/catalina/valves/CrawlerSessionManagerValve.java b/java/org/apache/catalina/valves/CrawlerSessionManagerValve.java
index da01da8..cfb4677 100644
--- a/java/org/apache/catalina/valves/CrawlerSessionManagerValve.java
+++ b/java/org/apache/catalina/valves/CrawlerSessionManagerValve.java
@@ -23,10 +23,10 @@ import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.regex.Pattern;
 
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpSession;
-import javax.servlet.http.HttpSessionBindingEvent;
-import javax.servlet.http.HttpSessionBindingListener;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpSessionBindingEvent;
+import jakarta.servlet.http.HttpSessionBindingListener;
 
 import org.apache.catalina.Context;
 import org.apache.catalina.Host;
diff --git a/java/org/apache/catalina/valves/ErrorReportValve.java b/java/org/apache/catalina/valves/ErrorReportValve.java
index 5c5c273..007f10f 100644
--- a/java/org/apache/catalina/valves/ErrorReportValve.java
+++ b/java/org/apache/catalina/valves/ErrorReportValve.java
@@ -25,9 +25,9 @@ import java.io.Writer;
 import java.util.Scanner;
 import java.util.concurrent.atomic.AtomicBoolean;
 
-import javax.servlet.RequestDispatcher;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.RequestDispatcher;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.apache.catalina.connector.Request;
 import org.apache.catalina.connector.Response;
@@ -329,7 +329,7 @@ public class ErrorReportValve extends ValveBase {
 
     /**
      * Print out a partial servlet stack trace (truncating at the last
-     * occurrence of javax.servlet.).
+     * occurrence of jakarta.servlet.).
      * @param t The stack trace to process
      * @return the stack trace relative to the application layer
      */
diff --git a/java/org/apache/catalina/valves/ExtendedAccessLogValve.java b/java/org/apache/catalina/valves/ExtendedAccessLogValve.java
index fab3dd6..f453760 100644
--- a/java/org/apache/catalina/valves/ExtendedAccessLogValve.java
+++ b/java/org/apache/catalina/valves/ExtendedAccessLogValve.java
@@ -30,8 +30,8 @@ import java.util.List;
 import java.util.Locale;
 import java.util.TimeZone;
 
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.Cookie;
+import jakarta.servlet.http.HttpSession;
 
 import org.apache.catalina.connector.Request;
 import org.apache.catalina.connector.Response;
diff --git a/java/org/apache/catalina/valves/HealthCheckValve.java b/java/org/apache/catalina/valves/HealthCheckValve.java
index f8227ac..481e8bc 100644
--- a/java/org/apache/catalina/valves/HealthCheckValve.java
+++ b/java/org/apache/catalina/valves/HealthCheckValve.java
@@ -18,7 +18,7 @@ package org.apache.catalina.valves;
 
 import java.io.IOException;
 
-import javax.servlet.ServletException;
+import jakarta.servlet.ServletException;
 
 import org.apache.catalina.connector.Request;
 import org.apache.catalina.connector.Response;
diff --git a/java/org/apache/catalina/valves/JDBCAccessLogValve.java b/java/org/apache/catalina/valves/JDBCAccessLogValve.java
index 1fecd29..7526962 100644
--- a/java/org/apache/catalina/valves/JDBCAccessLogValve.java
+++ b/java/org/apache/catalina/valves/JDBCAccessLogValve.java
@@ -25,7 +25,7 @@ import java.sql.SQLException;
 import java.sql.Timestamp;
 import java.util.Properties;
 
-import javax.servlet.ServletException;
+import jakarta.servlet.ServletException;
 
 import org.apache.catalina.AccessLog;
 import org.apache.catalina.LifecycleException;
diff --git a/java/org/apache/catalina/valves/LoadBalancerDrainingValve.java b/java/org/apache/catalina/valves/LoadBalancerDrainingValve.java
index 002013b..1d6b8be 100644
--- a/java/org/apache/catalina/valves/LoadBalancerDrainingValve.java
+++ b/java/org/apache/catalina/valves/LoadBalancerDrainingValve.java
@@ -18,9 +18,9 @@ package org.apache.catalina.valves;
 
 import java.io.IOException;
 
-import javax.servlet.ServletException;
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.Cookie;
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.apache.catalina.connector.Request;
 import org.apache.catalina.connector.Response;
diff --git a/java/org/apache/catalina/valves/PersistentValve.java b/java/org/apache/catalina/valves/PersistentValve.java
index 01ec3fe..2da42e7 100644
--- a/java/org/apache/catalina/valves/PersistentValve.java
+++ b/java/org/apache/catalina/valves/PersistentValve.java
@@ -18,8 +18,8 @@ package org.apache.catalina.valves;
 
 import java.io.IOException;
 
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.apache.catalina.Container;
 import org.apache.catalina.Context;
diff --git a/java/org/apache/catalina/valves/RemoteAddrValve.java b/java/org/apache/catalina/valves/RemoteAddrValve.java
index f340029..66bb6c9 100644
--- a/java/org/apache/catalina/valves/RemoteAddrValve.java
+++ b/java/org/apache/catalina/valves/RemoteAddrValve.java
@@ -19,7 +19,7 @@ package org.apache.catalina.valves;
 
 import java.io.IOException;
 
-import javax.servlet.ServletException;
+import jakarta.servlet.ServletException;
 
 import org.apache.catalina.connector.Request;
 import org.apache.catalina.connector.Response;
diff --git a/java/org/apache/catalina/valves/RemoteCIDRValve.java b/java/org/apache/catalina/valves/RemoteCIDRValve.java
index c29b08d..20a1b74 100644
--- a/java/org/apache/catalina/valves/RemoteCIDRValve.java
+++ b/java/org/apache/catalina/valves/RemoteCIDRValve.java
@@ -24,8 +24,8 @@ import java.util.Collections;
 import java.util.LinkedList;
 import java.util.List;
 
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.apache.catalina.connector.Request;
 import org.apache.catalina.connector.Response;
diff --git a/java/org/apache/catalina/valves/RemoteHostValve.java b/java/org/apache/catalina/valves/RemoteHostValve.java
index 90c6b8b..2aec7e4 100644
--- a/java/org/apache/catalina/valves/RemoteHostValve.java
+++ b/java/org/apache/catalina/valves/RemoteHostValve.java
@@ -18,7 +18,7 @@ package org.apache.catalina.valves;
 
 import java.io.IOException;
 
-import javax.servlet.ServletException;
+import jakarta.servlet.ServletException;
 
 import org.apache.catalina.connector.Request;
 import org.apache.catalina.connector.Response;
diff --git a/java/org/apache/catalina/valves/RemoteIpValve.java b/java/org/apache/catalina/valves/RemoteIpValve.java
index ae5bacc..c9a77e5 100644
--- a/java/org/apache/catalina/valves/RemoteIpValve.java
+++ b/java/org/apache/catalina/valves/RemoteIpValve.java
@@ -23,7 +23,7 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.regex.Pattern;
 
-import javax.servlet.ServletException;
+import jakarta.servlet.ServletException;
 
 import org.apache.catalina.AccessLog;
 import org.apache.catalina.Globals;
@@ -135,14 +135,14 @@ import org.apache.tomcat.util.http.parser.Host;
  * </tr>
  * <tr>
  * <td>httpServerPort</td>
- * <td>Value returned by {@link javax.servlet.ServletRequest#getServerPort()} when the <code>protocolHeader</code> indicates <code>http</code> protocol</td>
+ * <td>Value returned by {@link jakarta.servlet.ServletRequest#getServerPort()} when the <code>protocolHeader</code> indicates <code>http</code> protocol</td>
  * <td>N/A</td>
  * <td>integer</td>
  * <td>80</td>
  * </tr>
  * <tr>
  * <td>httpsServerPort</td>
- * <td>Value returned by {@link javax.servlet.ServletRequest#getServerPort()} when the <code>protocolHeader</code> indicates <code>https</code> protocol</td>
+ * <td>Value returned by {@link jakarta.servlet.ServletRequest#getServerPort()} when the <code>protocolHeader</code> indicates <code>https</code> protocol</td>
  * <td>N/A</td>
  * <td>integer</td>
  * <td>443</td>
diff --git a/java/org/apache/catalina/valves/RequestFilterValve.java b/java/org/apache/catalina/valves/RequestFilterValve.java
index 010d1de..3cff3da 100644
--- a/java/org/apache/catalina/valves/RequestFilterValve.java
+++ b/java/org/apache/catalina/valves/RequestFilterValve.java
@@ -20,8 +20,8 @@ package org.apache.catalina.valves;
 import java.io.IOException;
 import java.util.regex.Pattern;
 
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.apache.catalina.Context;
 import org.apache.catalina.LifecycleException;
diff --git a/java/org/apache/catalina/valves/SSLValve.java b/java/org/apache/catalina/valves/SSLValve.java
index 7c92c2e..e2ea6ae 100644
--- a/java/org/apache/catalina/valves/SSLValve.java
+++ b/java/org/apache/catalina/valves/SSLValve.java
@@ -23,7 +23,7 @@ import java.security.NoSuchProviderException;
 import java.security.cert.CertificateFactory;
 import java.security.cert.X509Certificate;
 
-import javax.servlet.ServletException;
+import jakarta.servlet.ServletException;
 
 import org.apache.catalina.Globals;
 import org.apache.catalina.connector.Request;
diff --git a/java/org/apache/catalina/valves/SemaphoreValve.java b/java/org/apache/catalina/valves/SemaphoreValve.java
index 1562758..2f2e6f2 100644
--- a/java/org/apache/catalina/valves/SemaphoreValve.java
+++ b/java/org/apache/catalina/valves/SemaphoreValve.java
@@ -19,7 +19,7 @@ package org.apache.catalina.valves;
 import java.io.IOException;
 import java.util.concurrent.Semaphore;
 
-import javax.servlet.ServletException;
+import jakarta.servlet.ServletException;
 
 import org.apache.catalina.LifecycleException;
 import org.apache.catalina.LifecycleState;
diff --git a/java/org/apache/catalina/valves/StuckThreadDetectionValve.java b/java/org/apache/catalina/valves/StuckThreadDetectionValve.java
index ad980af..e1fcb5c 100644
--- a/java/org/apache/catalina/valves/StuckThreadDetectionValve.java
+++ b/java/org/apache/catalina/valves/StuckThreadDetectionValve.java
@@ -28,7 +28,7 @@ import java.util.concurrent.Semaphore;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.atomic.AtomicLong;
 
-import javax.servlet.ServletException;
+import jakarta.servlet.ServletException;
 
 import org.apache.catalina.LifecycleException;
 import org.apache.catalina.connector.Request;
diff --git a/java/org/apache/catalina/valves/rewrite/RewriteValve.java b/java/org/apache/catalina/valves/rewrite/RewriteValve.java
index a86d1fd..aa4bb7c 100644
--- a/java/org/apache/catalina/valves/rewrite/RewriteValve.java
+++ b/java/org/apache/catalina/valves/rewrite/RewriteValve.java
@@ -29,9 +29,9 @@ import java.util.List;
 import java.util.Map;
 import java.util.StringTokenizer;
 
-import javax.servlet.ServletException;
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.Cookie;
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.apache.catalina.Container;
 import org.apache.catalina.Context;
diff --git a/java/org/apache/catalina/webresources/ExtractingRoot.java b/java/org/apache/catalina/webresources/ExtractingRoot.java
index 32448ad..fce67e0 100644
--- a/java/org/apache/catalina/webresources/ExtractingRoot.java
+++ b/java/org/apache/catalina/webresources/ExtractingRoot.java
@@ -22,7 +22,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 
-import javax.servlet.ServletContext;
+import jakarta.servlet.ServletContext;
 
 import org.apache.catalina.LifecycleException;
 import org.apache.catalina.WebResource;
diff --git a/java/org/apache/coyote/AbstractProcessor.java b/java/org/apache/coyote/AbstractProcessor.java
index 3c0c3b9..254950e 100644
--- a/java/org/apache/coyote/AbstractProcessor.java
+++ b/java/org/apache/coyote/AbstractProcessor.java
@@ -23,7 +23,7 @@ import java.util.Iterator;
 import java.util.concurrent.RejectedExecutionException;
 import java.util.concurrent.atomic.AtomicBoolean;
 
-import javax.servlet.RequestDispatcher;
+import jakarta.servlet.RequestDispatcher;
 
 import org.apache.tomcat.util.ExceptionUtils;
 import org.apache.tomcat.util.buf.ByteChunk;
diff --git a/java/org/apache/coyote/AbstractProtocol.java b/java/org/apache/coyote/AbstractProtocol.java
index b41ad32..2f5f49a 100644
--- a/java/org/apache/coyote/AbstractProtocol.java
+++ b/java/org/apache/coyote/AbstractProtocol.java
@@ -36,8 +36,9 @@ import javax.management.MBeanRegistrationException;
 import javax.management.MBeanServer;
 import javax.management.MalformedObjectNameException;
 import javax.management.ObjectName;
-import javax.servlet.http.HttpUpgradeHandler;
-import javax.servlet.http.WebConnection;
+
+import jakarta.servlet.http.HttpUpgradeHandler;
+import jakarta.servlet.http.WebConnection;
 
 import org.apache.coyote.http11.upgrade.InternalHttpUpgradeHandler;
 import org.apache.coyote.http11.upgrade.UpgradeProcessorInternal;
diff --git a/java/org/apache/coyote/ActionCode.java b/java/org/apache/coyote/ActionCode.java
index 3ff4c21..12dd23d 100644
--- a/java/org/apache/coyote/ActionCode.java
+++ b/java/org/apache/coyote/ActionCode.java
@@ -125,7 +125,7 @@ public enum ActionCode {
 
     /**
      * Callback for an async call to
-     * {@link javax.servlet.AsyncContext#dispatch()}.
+     * {@link jakarta.servlet.AsyncContext#dispatch()}.
      */
     ASYNC_DISPATCH,
 
@@ -137,13 +137,13 @@ public enum ActionCode {
 
     /**
      * Callback for an async call to
-     * {@link javax.servlet.AsyncContext#start(Runnable)}.
+     * {@link jakarta.servlet.AsyncContext#start(Runnable)}.
      */
     ASYNC_RUN,
 
     /**
      * Callback for an async call to
-     * {@link javax.servlet.AsyncContext#complete()}.
+     * {@link jakarta.servlet.AsyncContext#complete()}.
      */
     ASYNC_COMPLETE,
 
@@ -159,7 +159,7 @@ public enum ActionCode {
 
     /**
      * Callback for an async call to
-     * {@link javax.servlet.AsyncContext#setTimeout(long)}
+     * {@link jakarta.servlet.AsyncContext#setTimeout(long)}
      */
     ASYNC_SETTIMEOUT,
 
diff --git a/java/org/apache/coyote/AsyncContextCallback.java b/java/org/apache/coyote/AsyncContextCallback.java
index c657306..c1d742f 100644
--- a/java/org/apache/coyote/AsyncContextCallback.java
+++ b/java/org/apache/coyote/AsyncContextCallback.java
@@ -18,7 +18,7 @@ package org.apache.coyote;
 
 /**
  * Provides a mechanism for the Coyote connectors to communicate with the
- * {@link javax.servlet.AsyncContext}. It is implemented in this manner so that
+ * {@link jakarta.servlet.AsyncContext}. It is implemented in this manner so that
  * the org.apache.coyote package does not have a dependency on the
  * org.apache.catalina package.
  */
diff --git a/java/org/apache/coyote/Request.java b/java/org/apache/coyote/Request.java
index 01b30bd..deff3f4 100644
--- a/java/org/apache/coyote/Request.java
+++ b/java/org/apache/coyote/Request.java
@@ -23,7 +23,7 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.atomic.AtomicBoolean;
 
-import javax.servlet.ReadListener;
+import jakarta.servlet.ReadListener;
 
 import org.apache.tomcat.util.buf.B2CConverter;
 import org.apache.tomcat.util.buf.MessageBytes;
diff --git a/java/org/apache/coyote/Response.java b/java/org/apache/coyote/Response.java
index b9f22b7..54a4844 100644
--- a/java/org/apache/coyote/Response.java
+++ b/java/org/apache/coyote/Response.java
@@ -27,7 +27,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.function.Supplier;
 
-import javax.servlet.WriteListener;
+import jakarta.servlet.WriteListener;
 
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
diff --git a/java/org/apache/coyote/UpgradeToken.java b/java/org/apache/coyote/UpgradeToken.java
index cf297fb..729f48a 100644
--- a/java/org/apache/coyote/UpgradeToken.java
+++ b/java/org/apache/coyote/UpgradeToken.java
@@ -17,7 +17,7 @@
 
 package org.apache.coyote;
 
-import javax.servlet.http.HttpUpgradeHandler;
+import jakarta.servlet.http.HttpUpgradeHandler;
 
 import org.apache.tomcat.ContextBind;
 import org.apache.tomcat.InstanceManager;
diff --git a/java/org/apache/coyote/ajp/AjpProcessor.java b/java/org/apache/coyote/ajp/AjpProcessor.java
index a3e628d..01e7d3d 100644
--- a/java/org/apache/coyote/ajp/AjpProcessor.java
+++ b/java/org/apache/coyote/ajp/AjpProcessor.java
@@ -26,7 +26,7 @@ import java.security.NoSuchProviderException;
 import java.security.cert.CertificateFactory;
 import java.security.cert.X509Certificate;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.apache.coyote.AbstractProcessor;
 import org.apache.coyote.ActionCode;
diff --git a/java/org/apache/coyote/http11/AbstractHttp11Protocol.java b/java/org/apache/coyote/http11/AbstractHttp11Protocol.java
index 9189b59..3f02a12 100644
--- a/java/org/apache/coyote/http11/AbstractHttp11Protocol.java
+++ b/java/org/apache/coyote/http11/AbstractHttp11Protocol.java
@@ -27,7 +27,7 @@ import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.regex.Pattern;
 
-import javax.servlet.http.HttpUpgradeHandler;
+import jakarta.servlet.http.HttpUpgradeHandler;
 
 import org.apache.coyote.AbstractProtocol;
 import org.apache.coyote.CompressionConfig;
diff --git a/java/org/apache/coyote/http11/Http11Processor.java b/java/org/apache/coyote/http11/Http11Processor.java
index c627f19..5c1e1a0 100644
--- a/java/org/apache/coyote/http11/Http11Processor.java
+++ b/java/org/apache/coyote/http11/Http11Processor.java
@@ -25,7 +25,7 @@ import java.util.List;
 import java.util.Set;
 import java.util.regex.Pattern;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.apache.coyote.AbstractProcessor;
 import org.apache.coyote.ActionCode;
diff --git a/java/org/apache/coyote/http11/upgrade/InternalHttpUpgradeHandler.java b/java/org/apache/coyote/http11/upgrade/InternalHttpUpgradeHandler.java
index e7d3453..c852e5b 100644
--- a/java/org/apache/coyote/http11/upgrade/InternalHttpUpgradeHandler.java
+++ b/java/org/apache/coyote/http11/upgrade/InternalHttpUpgradeHandler.java
@@ -16,7 +16,7 @@
  */
 package org.apache.coyote.http11.upgrade;
 
-import javax.servlet.http.HttpUpgradeHandler;
+import jakarta.servlet.http.HttpUpgradeHandler;
 
 import org.apache.tomcat.util.net.AbstractEndpoint.Handler.SocketState;
 import org.apache.tomcat.util.net.SSLSupport;
diff --git a/java/org/apache/coyote/http11/upgrade/UpgradeProcessorBase.java b/java/org/apache/coyote/http11/upgrade/UpgradeProcessorBase.java
index a307299..01923d7 100644
--- a/java/org/apache/coyote/http11/upgrade/UpgradeProcessorBase.java
+++ b/java/org/apache/coyote/http11/upgrade/UpgradeProcessorBase.java
@@ -19,7 +19,7 @@ package org.apache.coyote.http11.upgrade;
 import java.io.IOException;
 import java.nio.ByteBuffer;
 
-import javax.servlet.http.WebConnection;
+import jakarta.servlet.http.WebConnection;
 
 import org.apache.coyote.AbstractProcessorLight;
 import org.apache.coyote.Request;
diff --git a/java/org/apache/coyote/http11/upgrade/UpgradeProcessorExternal.java b/java/org/apache/coyote/http11/upgrade/UpgradeProcessorExternal.java
index 75d074e..332102b 100644
--- a/java/org/apache/coyote/http11/upgrade/UpgradeProcessorExternal.java
+++ b/java/org/apache/coyote/http11/upgrade/UpgradeProcessorExternal.java
@@ -18,8 +18,8 @@ package org.apache.coyote.http11.upgrade;
 
 import java.io.IOException;
 
-import javax.servlet.ServletInputStream;
-import javax.servlet.ServletOutputStream;
+import jakarta.servlet.ServletInputStream;
+import jakarta.servlet.ServletOutputStream;
 
 import org.apache.coyote.UpgradeToken;
 import org.apache.juli.logging.Log;
diff --git a/java/org/apache/coyote/http11/upgrade/UpgradeProcessorInternal.java b/java/org/apache/coyote/http11/upgrade/UpgradeProcessorInternal.java
index 0e99265..99fbdb7 100644
--- a/java/org/apache/coyote/http11/upgrade/UpgradeProcessorInternal.java
+++ b/java/org/apache/coyote/http11/upgrade/UpgradeProcessorInternal.java
@@ -18,8 +18,8 @@ package org.apache.coyote.http11.upgrade;
 
 import java.io.IOException;
 
-import javax.servlet.ServletInputStream;
-import javax.servlet.ServletOutputStream;
+import jakarta.servlet.ServletInputStream;
+import jakarta.servlet.ServletOutputStream;
 
 import org.apache.coyote.UpgradeToken;
 import org.apache.juli.logging.Log;
diff --git a/java/org/apache/coyote/http11/upgrade/UpgradeServletInputStream.java b/java/org/apache/coyote/http11/upgrade/UpgradeServletInputStream.java
index 1c1ddb6..10b5527 100644
--- a/java/org/apache/coyote/http11/upgrade/UpgradeServletInputStream.java
+++ b/java/org/apache/coyote/http11/upgrade/UpgradeServletInputStream.java
@@ -18,8 +18,8 @@ package org.apache.coyote.http11.upgrade;
 
 import java.io.IOException;
 
-import javax.servlet.ReadListener;
-import javax.servlet.ServletInputStream;
+import jakarta.servlet.ReadListener;
+import jakarta.servlet.ServletInputStream;
 
 import org.apache.coyote.ContainerThreadMarker;
 import org.apache.juli.logging.Log;
diff --git a/java/org/apache/coyote/http11/upgrade/UpgradeServletOutputStream.java b/java/org/apache/coyote/http11/upgrade/UpgradeServletOutputStream.java
index 3de8096..c178e7e 100644
--- a/java/org/apache/coyote/http11/upgrade/UpgradeServletOutputStream.java
+++ b/java/org/apache/coyote/http11/upgrade/UpgradeServletOutputStream.java
@@ -18,8 +18,8 @@ package org.apache.coyote.http11.upgrade;
 
 import java.io.IOException;
 
-import javax.servlet.ServletOutputStream;
-import javax.servlet.WriteListener;
+import jakarta.servlet.ServletOutputStream;
+import jakarta.servlet.WriteListener;
 
 import org.apache.coyote.ContainerThreadMarker;
 import org.apache.juli.logging.Log;
diff --git a/java/org/apache/coyote/http2/Http2AsyncParser.java b/java/org/apache/coyote/http2/Http2AsyncParser.java
index 827105a..5267421 100644
--- a/java/org/apache/coyote/http2/Http2AsyncParser.java
+++ b/java/org/apache/coyote/http2/Http2AsyncParser.java
@@ -21,7 +21,7 @@ import java.nio.ByteBuffer;
 import java.nio.channels.CompletionHandler;
 import java.util.concurrent.TimeUnit;
 
-import javax.servlet.http.WebConnection;
+import jakarta.servlet.http.WebConnection;
 
 import org.apache.coyote.ProtocolException;
 import org.apache.tomcat.util.net.SocketEvent;
diff --git a/java/org/apache/coyote/http2/Http2AsyncUpgradeHandler.java b/java/org/apache/coyote/http2/Http2AsyncUpgradeHandler.java
index 545292f..3d17d98 100644
--- a/java/org/apache/coyote/http2/Http2AsyncUpgradeHandler.java
+++ b/java/org/apache/coyote/http2/Http2AsyncUpgradeHandler.java
@@ -26,7 +26,7 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.TimeUnit;
 
-import javax.servlet.http.WebConnection;
+import jakarta.servlet.http.WebConnection;
 
 import org.apache.coyote.Adapter;
 import org.apache.coyote.ProtocolException;
diff --git a/java/org/apache/coyote/http2/Http2Parser.java b/java/org/apache/coyote/http2/Http2Parser.java
index d6bdf0d..e2b7c5b 100644
--- a/java/org/apache/coyote/http2/Http2Parser.java
+++ b/java/org/apache/coyote/http2/Http2Parser.java
@@ -20,7 +20,7 @@ import java.io.IOException;
 import java.nio.ByteBuffer;
 import java.nio.charset.StandardCharsets;
 
-import javax.servlet.http.WebConnection;
+import jakarta.servlet.http.WebConnection;
 
 import org.apache.coyote.ProtocolException;
 import org.apache.coyote.http2.HpackDecoder.HeaderEmitter;
diff --git a/java/org/apache/coyote/http2/Http2UpgradeHandler.java b/java/org/apache/coyote/http2/Http2UpgradeHandler.java
index e0f3dde..f168819 100644
--- a/java/org/apache/coyote/http2/Http2UpgradeHandler.java
+++ b/java/org/apache/coyote/http2/Http2UpgradeHandler.java
@@ -33,7 +33,7 @@ import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.atomic.AtomicLong;
 import java.util.concurrent.atomic.AtomicReference;
 
-import javax.servlet.http.WebConnection;
+import jakarta.servlet.http.WebConnection;
 
 import org.apache.coyote.Adapter;
 import org.apache.coyote.CloseNowException;
diff --git a/java/org/apache/jasper/Constants.java b/java/org/apache/jasper/Constants.java
index ebb5fa0..73e3bf2 100644
--- a/java/org/apache/jasper/Constants.java
+++ b/java/org/apache/jasper/Constants.java
@@ -49,9 +49,9 @@ public class Constants {
      * generated code.
      */
     private static final String[] PRIVATE_STANDARD_IMPORTS = {
-        "javax.servlet.*",
-        "javax.servlet.http.*",
-        "javax.servlet.jsp.*"
+        "jakarta.servlet.*",
+        "jakarta.servlet.http.*",
+        "jakarta.servlet.jsp.*"
     };
     public static final List<String> STANDARD_IMPORTS =
         Collections.unmodifiableList(Arrays.asList(PRIVATE_STANDARD_IMPORTS));
diff --git a/java/org/apache/jasper/EmbeddedServletOptions.java b/java/org/apache/jasper/EmbeddedServletOptions.java
index 3129cdb..bab6ae3 100644
--- a/java/org/apache/jasper/EmbeddedServletOptions.java
+++ b/java/org/apache/jasper/EmbeddedServletOptions.java
@@ -22,9 +22,9 @@ import java.util.Enumeration;
 import java.util.Map;
 import java.util.Properties;
 
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletContext;
-import javax.servlet.jsp.tagext.TagLibraryInfo;
+import jakarta.servlet.ServletConfig;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.jsp.tagext.TagLibraryInfo;
 
 import org.apache.jasper.compiler.JspConfig;
 import org.apache.jasper.compiler.Localizer;
@@ -662,7 +662,7 @@ public final class EmbeddedServletOptions implements Options {
         if (dir != null) {
             scratchDir = new File(dir);
         } else {
-            // First try the Servlet 2.2 javax.servlet.context.tempdir property
+            // First try the Servlet 2.2 jakarta.servlet.context.tempdir property
             scratchDir = (File) context.getAttribute(ServletContext.TEMPDIR);
             if (scratchDir == null) {
                 // Not running in a Servlet 2.2 container.
diff --git a/java/org/apache/jasper/JasperException.java b/java/org/apache/jasper/JasperException.java
index 2d37eb3..8c36a6a 100644
--- a/java/org/apache/jasper/JasperException.java
+++ b/java/org/apache/jasper/JasperException.java
@@ -23,7 +23,7 @@ package org.apache.jasper;
  *
  * @author Anil K. Vijendran
  */
-public class JasperException extends javax.servlet.ServletException {
+public class JasperException extends jakarta.servlet.ServletException {
 
     private static final long serialVersionUID = 1L;
 
diff --git a/java/org/apache/jasper/JspC.java b/java/org/apache/jasper/JspC.java
index bfd1021..6bbb1b3 100644
--- a/java/org/apache/jasper/JspC.java
+++ b/java/org/apache/jasper/JspC.java
@@ -45,8 +45,8 @@ import java.util.concurrent.ExecutorCompletionService;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 
-import javax.servlet.jsp.JspFactory;
-import javax.servlet.jsp.tagext.TagLibraryInfo;
+import jakarta.servlet.jsp.JspFactory;
+import jakarta.servlet.jsp.tagext.TagLibraryInfo;
 
 import org.apache.jasper.compiler.Compiler;
 import org.apache.jasper.compiler.JspConfig;
diff --git a/java/org/apache/jasper/JspCompilationContext.java b/java/org/apache/jasper/JspCompilationContext.java
index 16b1076..97579fd 100644
--- a/java/org/apache/jasper/JspCompilationContext.java
+++ b/java/org/apache/jasper/JspCompilationContext.java
@@ -27,8 +27,8 @@ import java.net.URLConnection;
 import java.util.Set;
 import java.util.jar.JarEntry;
 
-import javax.servlet.ServletContext;
-import javax.servlet.jsp.tagext.TagInfo;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.jsp.tagext.TagInfo;
 
 import org.apache.jasper.compiler.Compiler;
 import org.apache.jasper.compiler.JspRuntimeContext;
diff --git a/java/org/apache/jasper/Options.java b/java/org/apache/jasper/Options.java
index 9d0fbf9..c433afc 100644
--- a/java/org/apache/jasper/Options.java
+++ b/java/org/apache/jasper/Options.java
@@ -19,7 +19,7 @@ package org.apache.jasper;
 import java.io.File;
 import java.util.Map;
 
-import javax.servlet.jsp.tagext.TagLibraryInfo;
+import jakarta.servlet.jsp.tagext.TagLibraryInfo;
 
 import org.apache.jasper.compiler.JspConfig;
 import org.apache.jasper.compiler.TagPluginManager;
diff --git a/java/org/apache/jasper/compiler/ELFunctionMapper.java b/java/org/apache/jasper/compiler/ELFunctionMapper.java
index f4f01e0..37fd5b5 100644
--- a/java/org/apache/jasper/compiler/ELFunctionMapper.java
+++ b/java/org/apache/jasper/compiler/ELFunctionMapper.java
@@ -26,7 +26,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
-import javax.servlet.jsp.tagext.FunctionInfo;
+import jakarta.servlet.jsp.tagext.FunctionInfo;
 
 import org.apache.jasper.Constants;
 import org.apache.jasper.JasperException;
diff --git a/java/org/apache/jasper/compiler/ELInterpreter.java b/java/org/apache/jasper/compiler/ELInterpreter.java
index 377cf6d..0bff249 100644
--- a/java/org/apache/jasper/compiler/ELInterpreter.java
+++ b/java/org/apache/jasper/compiler/ELInterpreter.java
@@ -30,7 +30,7 @@ public interface ELInterpreter {
      * Returns the string representing the code that will be inserted into the
      * servlet generated for JSP. The default implementation creates a call to
      * {@link org.apache.jasper.runtime.PageContextImpl#proprietaryEvaluate(
-     * String, Class, javax.servlet.jsp.PageContext,
+     * String, Class, jakarta.servlet.jsp.PageContext,
      * org.apache.jasper.runtime.ProtectedFunctionMapper)} but other
      * implementations may produce more optimised code.
      * @param context The compilation context
diff --git a/java/org/apache/jasper/compiler/ELInterpreterFactory.java b/java/org/apache/jasper/compiler/ELInterpreterFactory.java
index fa598a4..efadcab 100644
--- a/java/org/apache/jasper/compiler/ELInterpreterFactory.java
+++ b/java/org/apache/jasper/compiler/ELInterpreterFactory.java
@@ -16,7 +16,7 @@
  */
 package org.apache.jasper.compiler;
 
-import javax.servlet.ServletContext;
+import jakarta.servlet.ServletContext;
 
 import org.apache.jasper.JspCompilationContext;
 
diff --git a/java/org/apache/jasper/compiler/ELNode.java b/java/org/apache/jasper/compiler/ELNode.java
index 6051456..529df57 100644
--- a/java/org/apache/jasper/compiler/ELNode.java
+++ b/java/org/apache/jasper/compiler/ELNode.java
@@ -21,7 +21,7 @@ import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 
-import javax.servlet.jsp.tagext.FunctionInfo;
+import jakarta.servlet.jsp.tagext.FunctionInfo;
 
 import org.apache.jasper.JasperException;
 
diff --git a/java/org/apache/jasper/compiler/Generator.java b/java/org/apache/jasper/compiler/Generator.java
index f156d18..b0b03f2 100644
--- a/java/org/apache/jasper/compiler/Generator.java
+++ b/java/org/apache/jasper/compiler/Generator.java
@@ -41,13 +41,12 @@ import java.util.Set;
 import java.util.TimeZone;
 import java.util.Vector;
 
-import javax.servlet.jsp.tagext.TagAttributeInfo;
-import javax.servlet.jsp.tagext.TagInfo;
-import javax.servlet.jsp.tagext.TagVariableInfo;
-import javax.servlet.jsp.tagext.VariableInfo;
-
 import jakarta.el.MethodExpression;
 import jakarta.el.ValueExpression;
+import jakarta.servlet.jsp.tagext.TagAttributeInfo;
+import jakarta.servlet.jsp.tagext.TagInfo;
+import jakarta.servlet.jsp.tagext.TagVariableInfo;
+import jakarta.servlet.jsp.tagext.VariableInfo;
 
 import org.apache.el.util.JreCompat;
 import org.apache.jasper.Constants;
@@ -503,7 +502,7 @@ class Generator {
     private void generateInit() {
 
         if (ctxt.isTagFile()) {
-            out.printil("private void _jspInit(javax.servlet.ServletConfig config) {");
+            out.printil("private void _jspInit(jakarta.servlet.ServletConfig config) {");
         } else {
             out.printil("public void _jspInit() {");
         }
@@ -588,8 +587,8 @@ class Generator {
      * preamble generation)
      */
     private void genPreambleStaticInitializers() {
-        out.printil("private static final javax.servlet.jsp.JspFactory _jspxFactory =");
-        out.printil("        javax.servlet.jsp.JspFactory.getDefaultFactory();");
+        out.printil("private static final jakarta.servlet.jsp.JspFactory _jspxFactory =");
+        out.printil("        jakarta.servlet.jsp.JspFactory.getDefaultFactory();");
         out.println();
 
         // Static data for getDependants()
@@ -746,7 +745,7 @@ class Generator {
         out.printin("                 org.apache.jasper.runtime.JspSourceImports");
         if (!pageInfo.isThreadSafe()) {
             out.println(",");
-            out.printin("                 javax.servlet.SingleThreadModel");
+            out.printin("                 jakarta.servlet.SingleThreadModel");
         }
         out.println(" {");
         out.pushIndent();
@@ -766,16 +765,16 @@ class Generator {
         // Now the service method
         out.printin("public void ");
         out.print(serviceMethodName);
-        out.println("(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)");
+        out.println("(final jakarta.servlet.http.HttpServletRequest request, final jakarta.servlet.http.HttpServletResponse response)");
         out.pushIndent();
         out.pushIndent();
-        out.printil("throws java.io.IOException, javax.servlet.ServletException {");
+        out.printil("throws java.io.IOException, jakarta.servlet.ServletException {");
         out.popIndent();
         out.println();
 
         // Method check
         if (!pageInfo.isErrorPage()) {
-            out.printil("if (!javax.servlet.DispatcherType.ERROR.equals(request.getDispatcherType())) {");
+            out.printil("if (!jakarta.servlet.DispatcherType.ERROR.equals(request.getDispatcherType())) {");
             out.pushIndent();
             out.printil("final java.lang.String _jspx_method = request.getMethod();");
             out.printil("if (\"OPTIONS\".equals(_jspx_method)) {");
@@ -798,27 +797,27 @@ class Generator {
         }
 
         // Local variable declarations
-        out.printil("final javax.servlet.jsp.PageContext pageContext;");
+        out.printil("final jakarta.servlet.jsp.PageContext pageContext;");
 
         if (pageInfo.isSession())
-            out.printil("javax.servlet.http.HttpSession session = null;");
+            out.printil("jakarta.servlet.http.HttpSession session = null;");
 
         if (pageInfo.isErrorPage()) {
             out.printil("java.lang.Throwable exception = org.apache.jasper.runtime.JspRuntimeLibrary.getThrowable(request);");
             out.printil("if (exception != null) {");
             out.pushIndent();
-            out.printil("response.setStatus(javax.servlet.http.HttpServletResponse.SC_INTERNAL_SERVER_ERROR);");
+            out.printil("response.setStatus(jakarta.servlet.http.HttpServletResponse.SC_INTERNAL_SERVER_ERROR);");
             out.popIndent();
             out.printil("}");
         }
 
-        out.printil("final javax.servlet.ServletContext application;");
-        out.printil("final javax.servlet.ServletConfig config;");
-        out.printil("javax.servlet.jsp.JspWriter out = null;");
+        out.printil("final jakarta.servlet.ServletContext application;");
+        out.printil("final jakarta.servlet.ServletConfig config;");
+        out.printil("jakarta.servlet.jsp.JspWriter out = null;");
         out.printil("final java.lang.Object page = this;");
 
-        out.printil("javax.servlet.jsp.JspWriter _jspx_out = null;");
-        out.printil("javax.servlet.jsp.PageContext _jspx_page_context = null;");
+        out.printil("jakarta.servlet.jsp.JspWriter _jspx_out = null;");
+        out.printil("jakarta.servlet.jsp.PageContext _jspx_page_context = null;");
         out.println();
 
         declareTemporaryScriptingVars(page);
@@ -1202,7 +1201,7 @@ class Generator {
             printParams(n, pageParam, page.isLiteral());
             out.println(");");
             if (isTagFile || isFragment) {
-                out.printil("throw new javax.servlet.jsp.SkipPageException();");
+                out.printil("throw new jakarta.servlet.jsp.SkipPageException();");
             } else {
                 out.printil((methodNesting > 0) ? "return true;" : "return;");
             }
@@ -1404,16 +1403,16 @@ class Generator {
 
             // JSP.5.1, Semantics, para 1 - lock not required for request or
             // page scope
-            String scopename = "javax.servlet.jsp.PageContext.PAGE_SCOPE"; // Default to page
+            String scopename = "jakarta.servlet.jsp.PageContext.PAGE_SCOPE"; // Default to page
             String lock = null;
 
             if ("request".equals(scope)) {
-                scopename = "javax.servlet.jsp.PageContext.REQUEST_SCOPE";
+                scopename = "jakarta.servlet.jsp.PageContext.REQUEST_SCOPE";
             } else if ("session".equals(scope)) {
-                scopename = "javax.servlet.jsp.PageContext.SESSION_SCOPE";
+                scopename = "jakarta.servlet.jsp.PageContext.SESSION_SCOPE";
                 lock = "session";
             } else if ("application".equals(scope)) {
-                scopename = "javax.servlet.jsp.PageContext.APPLICATION_SCOPE";
+                scopename = "jakarta.servlet.jsp.PageContext.APPLICATION_SCOPE";
                 lock = "application";
             }
 
@@ -1499,7 +1498,7 @@ class Generator {
                     out.popIndent();
                     out.printil("} catch (java.lang.Exception exc) {");
                     out.pushIndent();
-                    out.printin("throw new javax.servlet.ServletException(");
+                    out.printin("throw new jakarta.servlet.ServletException(");
                     out.print("\"Cannot create bean of class \" + ");
                     out.print(binaryName);
                     out.println(", exc);");
@@ -1854,11 +1853,11 @@ class Generator {
                 out.print(tagMethod);
                 out.print("(");
                 if (parent != null) {
-                    out.print("javax.servlet.jsp.tagext.JspTag ");
+                    out.print("jakarta.servlet.jsp.tagext.JspTag ");
                     out.print(parent);
                     out.print(", ");
                 }
-                out.print("javax.servlet.jsp.PageContext _jspx_page_context");
+                out.print("jakarta.servlet.jsp.PageContext _jspx_page_context");
                 if (pushBodyCountVar != null) {
                     out.print(", int[] ");
                     out.print(pushBodyCountVar);
@@ -1869,9 +1868,9 @@ class Generator {
 
                 // Initialize local variables used in this method.
                 if (!isTagFile) {
-                    out.printil("javax.servlet.jsp.PageContext pageContext = _jspx_page_context;");
+                    out.printil("jakarta.servlet.jsp.PageContext pageContext = _jspx_page_context;");
                 }
-                out.printil("javax.servlet.jsp.JspWriter out = _jspx_page_context.getOut();");
+                out.printil("jakarta.servlet.jsp.JspWriter out = _jspx_page_context.getOut();");
                 generateLocalVariables(out, n);
             }
 
@@ -2333,7 +2332,7 @@ class Generator {
             }
 
             // Restore EL context
-            out.printil("jspContext.getELContext().putContext(javax.servlet.jsp.JspContext.class,getJspContext());");
+            out.printil("jspContext.getELContext().putContext(jakarta.servlet.jsp.JspContext.class,getJspContext());");
 
             n.setEndJavaLine(out.getJavaLine());
         }
@@ -2442,7 +2441,7 @@ class Generator {
             if (!n.hasEmptyBody()) {
                 out.printin("if (");
                 out.print(tagEvalVar);
-                out.println(" != javax.servlet.jsp.tagext.Tag.SKIP_BODY) {");
+                out.println(" != jakarta.servlet.jsp.tagext.Tag.SKIP_BODY) {");
                 out.pushIndent();
 
                 // Declare NESTED scripting variables
@@ -2452,7 +2451,7 @@ class Generator {
                 if (n.implementsBodyTag()) {
                     out.printin("if (");
                     out.print(tagEvalVar);
-                    out.println(" != javax.servlet.jsp.tagext.Tag.EVAL_BODY_INCLUDE) {");
+                    out.println(" != jakarta.servlet.jsp.tagext.Tag.EVAL_BODY_INCLUDE) {");
                     // Assume EVAL_BODY_BUFFERED
                     out.pushIndent();
                     if (n.implementsTryCatchFinally()) {
@@ -2529,7 +2528,7 @@ class Generator {
                     syncScriptingVars(n, VariableInfo.AT_BEGIN);
                     syncScriptingVars(n, VariableInfo.NESTED);
 
-                    out.printil("if (evalDoAfterBody != javax.servlet.jsp.tagext.BodyTag.EVAL_BODY_AGAIN)");
+                    out.printil("if (evalDoAfterBody != jakarta.servlet.jsp.tagext.BodyTag.EVAL_BODY_AGAIN)");
                     out.pushIndent();
                     out.printil("break;");
                     out.popIndent();
@@ -2543,7 +2542,7 @@ class Generator {
                 if (n.implementsBodyTag()) {
                     out.printin("if (");
                     out.print(tagEvalVar);
-                    out.println(" != javax.servlet.jsp.tagext.Tag.EVAL_BODY_INCLUDE) {");
+                    out.println(" != jakarta.servlet.jsp.tagext.Tag.EVAL_BODY_INCLUDE) {");
                     out.pushIndent();
                     out.printil("out = _jspx_page_context.popBody();");
                     if (n.implementsTryCatchFinally()) {
@@ -2563,10 +2562,10 @@ class Generator {
 
             out.printin("if (");
             out.print(tagHandlerVar);
-            out.println(".doEndTag() == javax.servlet.jsp.tagext.Tag.SKIP_PAGE) {");
+            out.println(".doEndTag() == jakarta.servlet.jsp.tagext.Tag.SKIP_PAGE) {");
             out.pushIndent();
             if (isTagFile || isFragment) {
-                out.printil("throw new javax.servlet.jsp.SkipPageException();");
+                out.printil("throw new jakarta.servlet.jsp.SkipPageException();");
             } else {
                 out.printil((methodNesting > 0) ? "return true;" : "return;");
             }
@@ -3200,19 +3199,19 @@ class Generator {
             if (isTagFile && parent == null) {
                 out.printin(tagHandlerVar);
                 out.print(".setParent(");
-                out.print("new javax.servlet.jsp.tagext.TagAdapter(");
-                out.print("(javax.servlet.jsp.tagext.SimpleTag) this ));");
+                out.print("new jakarta.servlet.jsp.tagext.TagAdapter(");
+                out.print("(jakarta.servlet.jsp.tagext.SimpleTag) this ));");
             } else if (!simpleTag) {
                 out.printin(tagHandlerVar);
                 out.print(".setParent(");
                 if (parent != null) {
                     if (isSimpleTagParent) {
-                        out.print("new javax.servlet.jsp.tagext.TagAdapter(");
-                        out.print("(javax.servlet.jsp.tagext.SimpleTag) ");
+                        out.print("new jakarta.servlet.jsp.tagext.TagAdapter(");
+                        out.print("(jakarta.servlet.jsp.tagext.SimpleTag) ");
                         out.print(parent);
                         out.println("));");
                     } else {
-                        out.print("(javax.servlet.jsp.tagext.Tag) ");
+                        out.print("(jakarta.servlet.jsp.tagext.Tag) ");
                         out.print(parent);
                         out.println(");");
                     }
@@ -3354,14 +3353,14 @@ class Generator {
          * scope constant.
          */
         private String getScopeConstant(String scope) {
-            String scopeName = "javax.servlet.jsp.PageContext.PAGE_SCOPE"; // Default to page
+            String scopeName = "jakarta.servlet.jsp.PageContext.PAGE_SCOPE"; // Default to page
 
             if ("request".equals(scope)) {
-                scopeName = "javax.servlet.jsp.PageContext.REQUEST_SCOPE";
+                scopeName = "jakarta.servlet.jsp.PageContext.REQUEST_SCOPE";
             } else if ("session".equals(scope)) {
-                scopeName = "javax.servlet.jsp.PageContext.SESSION_SCOPE";
+                scopeName = "jakarta.servlet.jsp.PageContext.SESSION_SCOPE";
             } else if ("application".equals(scope)) {
-                scopeName = "javax.servlet.jsp.PageContext.APPLICATION_SCOPE";
+                scopeName = "jakarta.servlet.jsp.PageContext.APPLICATION_SCOPE";
             }
 
             return scopeName;
@@ -3450,7 +3449,7 @@ class Generator {
                     out.printil("out = _jspx_page_context.pushBody();");
                     visitBody(n);
                     out.printil("java.lang.String " + varName + " = "
-                            + "((javax.servlet.jsp.tagext.BodyContent)"
+                            + "((jakarta.servlet.jsp.tagext.BodyContent)"
                             + "out).getString();");
                     out.printil("out = _jspx_page_context.popBody();");
                 }
@@ -3480,7 +3479,7 @@ class Generator {
                 String tagHandlerVar) throws JasperException {
             String varName = n.getTemporaryVariableName();
 
-            out.printin("javax.servlet.jsp.tagext.JspFragment " + varName
+            out.printin("jakarta.servlet.jsp.tagext.JspFragment " + varName
                     + " = ");
             generateJspFragment(n, tagHandlerVar);
             out.println(";");
@@ -3503,15 +3502,15 @@ class Generator {
         }
 
         if (ci.hasUseBean()) {
-            out.printil("javax.servlet.http.HttpSession session = _jspx_page_context.getSession();");
-            out.printil("javax.servlet.ServletContext application = _jspx_page_context.getServletContext();");
+            out.printil("jakarta.servlet.http.HttpSession session = _jspx_page_context.getSession();");
+            out.printil("jakarta.servlet.ServletContext application = _jspx_page_context.getServletContext();");
         }
         if (ci.hasUseBean() || ci.hasIncludeAction() || ci.hasSetProperty()
                 || ci.hasParamAction()) {
-            out.printil("javax.servlet.http.HttpServletRequest request = (javax.servlet.http.HttpServletRequest)_jspx_page_context.getRequest();");
+            out.printil("jakarta.servlet.http.HttpServletRequest request = (jakarta.servlet.http.HttpServletRequest)_jspx_page_context.getRequest();");
         }
         if (ci.hasIncludeAction()) {
-            out.printil("javax.servlet.http.HttpServletResponse response = (javax.servlet.http.HttpServletResponse)_jspx_page_context.getResponse();");
+            out.printil("jakarta.servlet.http.HttpServletResponse response = (jakarta.servlet.http.HttpServletResponse)_jspx_page_context.getResponse();");
         }
     }
 
@@ -3550,7 +3549,7 @@ class Generator {
         out.popIndent();
         out.printil("} catch (java.lang.Throwable t) {");
         out.pushIndent();
-        out.printil("if (!(t instanceof javax.servlet.jsp.SkipPageException)){");
+        out.printil("if (!(t instanceof jakarta.servlet.jsp.SkipPageException)){");
         out.pushIndent();
         out.printil("out = _jspx_out;");
         out.printil("if (out != null && out.getBufferSize() != 0)");
@@ -3713,13 +3712,13 @@ class Generator {
         // Generate class declaration
         out.printin("public final class ");
         out.println(className);
-        out.printil("    extends javax.servlet.jsp.tagext.SimpleTagSupport");
+        out.printil("    extends jakarta.servlet.jsp.tagext.SimpleTagSupport");
         out.printin("    implements org.apache.jasper.runtime.JspSourceDependent,");
         out.println();
         out.printin("                 org.apache.jasper.runtime.JspSourceImports");
         if (tagInfo.hasDynamicAttributes()) {
             out.println(",");
-            out.printin("               javax.servlet.jsp.tagext.DynamicAttributes");
+            out.printin("               jakarta.servlet.jsp.tagext.DynamicAttributes");
         }
         out.println(" {");
         out.pushIndent();
@@ -3732,7 +3731,7 @@ class Generator {
         // Static initializations here
         genPreambleStaticInitializers();
 
-        out.printil("private javax.servlet.jsp.JspContext jspContext;");
+        out.printil("private jakarta.servlet.jsp.JspContext jspContext;");
 
         // Declare writer used for storing result of fragment/body invocation
         // if 'varReader' or 'var' attribute is specified
@@ -3752,7 +3751,7 @@ class Generator {
         genPreambleMethods();
 
         // Now the doTag() method
-        out.printil("public void doTag() throws javax.servlet.jsp.JspException, java.io.IOException {");
+        out.printil("public void doTag() throws jakarta.servlet.jsp.JspException, java.io.IOException {");
 
         if (ctxt.isPrototypeMode()) {
             out.printil("}");
@@ -3768,21 +3767,21 @@ class Generator {
          * implicit object in tag files. Declare _jspx_page_context, so we can
          * share the code generator with JSPs.
          */
-        out.printil("javax.servlet.jsp.PageContext _jspx_page_context = (javax.servlet.jsp.PageContext)jspContext;");
+        out.printil("jakarta.servlet.jsp.PageContext _jspx_page_context = (jakarta.servlet.jsp.PageContext)jspContext;");
 
         // Declare implicit objects.
-        out.printil("javax.servlet.http.HttpServletRequest request = "
-                + "(javax.servlet.http.HttpServletRequest) _jspx_page_context.getRequest();");
-        out.printil("javax.servlet.http.HttpServletResponse response = "
-                + "(javax.servlet.http.HttpServletResponse) _jspx_page_context.getResponse();");
-        out.printil("javax.servlet.http.HttpSession session = _jspx_page_context.getSession();");
-        out.printil("javax.servlet.ServletContext application = _jspx_page_context.getServletContext();");
-        out.printil("javax.servlet.ServletConfig config = _jspx_page_context.getServletConfig();");
-        out.printil("javax.servlet.jsp.JspWriter out = jspContext.getOut();");
+        out.printil("jakarta.servlet.http.HttpServletRequest request = "
+                + "(jakarta.servlet.http.HttpServletRequest) _jspx_page_context.getRequest();");
+        out.printil("jakarta.servlet.http.HttpServletResponse response = "
+                + "(jakarta.servlet.http.HttpServletResponse) _jspx_page_context.getResponse();");
+        out.printil("jakarta.servlet.http.HttpSession session = _jspx_page_context.getSession();");
+        out.printil("jakarta.servlet.ServletContext application = _jspx_page_context.getServletContext();");
+        out.printil("jakarta.servlet.ServletConfig config = _jspx_page_context.getServletConfig();");
+        out.printil("jakarta.servlet.jsp.JspWriter out = jspContext.getOut();");
         out.printil("_jspInit(config);");
 
         // set current JspContext on ELContext
-        out.printil("jspContext.getELContext().putContext(javax.servlet.jsp.JspContext.class,jspContext);");
+        out.printil("jspContext.getELContext().putContext(jakarta.servlet.jsp.JspContext.class,jspContext);");
 
         generatePageScopedVariables(tagInfo);
 
@@ -3800,15 +3799,15 @@ class Generator {
         // helper method is declared to throw Throwable.
         out.printil("} catch( java.lang.Throwable t ) {");
         out.pushIndent();
-        out.printil("if( t instanceof javax.servlet.jsp.SkipPageException )");
-        out.printil("    throw (javax.servlet.jsp.SkipPageException) t;");
+        out.printil("if( t instanceof jakarta.servlet.jsp.SkipPageException )");
+        out.printil("    throw (jakarta.servlet.jsp.SkipPageException) t;");
         out.printil("if( t instanceof java.io.IOException )");
         out.printil("    throw (java.io.IOException) t;");
         out.printil("if( t instanceof java.lang.IllegalStateException )");
         out.printil("    throw (java.lang.IllegalStateException) t;");
-        out.printil("if( t instanceof javax.servlet.jsp.JspException )");
-        out.printil("    throw (javax.servlet.jsp.JspException) t;");
-        out.printil("throw new javax.servlet.jsp.JspException(t);");
+        out.printil("if( t instanceof jakarta.servlet.jsp.JspException )");
+        out.printil("    throw (jakarta.servlet.jsp.JspException) t;");
+        out.printil("throw new jakarta.servlet.jsp.JspException(t);");
         out.popIndent();
         out.printil("} finally {");
         out.pushIndent();
@@ -3826,7 +3825,7 @@ class Generator {
         }
 
         // restore nested JspContext on ELContext
-        out.printil("jspContext.getELContext().putContext(javax.servlet.jsp.JspContext.class,super.getJspContext());");
+        out.printil("jspContext.getELContext().putContext(jakarta.servlet.jsp.JspContext.class,super.getJspContext());");
 
         out.printil("((org.apache.jasper.runtime.JspContextWrapper) jspContext).syncEndTagFile();");
         if (isPoolingEnabled && !tagHandlerPoolNames.isEmpty()) {
@@ -3858,7 +3857,7 @@ class Generator {
         for (int i = 0; i < attrInfos.length; i++) {
             out.printin("private ");
             if (attrInfos[i].isFragment()) {
-                out.print("javax.servlet.jsp.tagext.JspFragment ");
+                out.print("jakarta.servlet.jsp.tagext.JspFragment ");
             } else {
                 out.print(JspUtil.toJavaSourceType(attrInfos[i].getTypeName()));
                 out.print(" ");
@@ -3877,7 +3876,7 @@ class Generator {
             // getter method
             out.printin("public ");
             if (attrInfos[i].isFragment()) {
-                out.print("javax.servlet.jsp.tagext.JspFragment ");
+                out.print("jakarta.servlet.jsp.tagext.JspFragment ");
             } else {
                 out.print(JspUtil.toJavaSourceType(attrInfos[i].getTypeName()));
                 out.print(" ");
@@ -3896,7 +3895,7 @@ class Generator {
             out.printin("public void ");
             out.print(toSetterMethodName(attrInfos[i].getName()));
             if (attrInfos[i].isFragment()) {
-                out.print("(javax.servlet.jsp.tagext.JspFragment ");
+                out.print("(jakarta.servlet.jsp.tagext.JspFragment ");
             } else {
                 out.print("(");
                 out.print(JspUtil.toJavaSourceType(attrInfos[i].getTypeName()));
@@ -3948,9 +3947,9 @@ class Generator {
         }
 
         if (aliasSeen) {
-            out.printil("public void setJspContext(javax.servlet.jsp.JspContext ctx, java.util.Map aliasMap) {");
+            out.printil("public void setJspContext(jakarta.servlet.jsp.JspContext ctx, java.util.Map aliasMap) {");
         } else {
-            out.printil("public void setJspContext(javax.servlet.jsp.JspContext ctx) {");
+            out.printil("public void setJspContext(jakarta.servlet.jsp.JspContext ctx) {");
         }
         out.pushIndent();
         out.printil("super.setJspContext(ctx);");
@@ -3997,7 +3996,7 @@ class Generator {
         out.popIndent();
         out.printil("}");
         out.println();
-        out.printil("public javax.servlet.jsp.JspContext getJspContext() {");
+        out.printil("public jakarta.servlet.jsp.JspContext getJspContext() {");
         out.pushIndent();
         out.printil("return this.jspContext;");
         out.popIndent();
@@ -4006,12 +4005,12 @@ class Generator {
 
     /*
      * Generates implementation of
-     * javax.servlet.jsp.tagext.DynamicAttributes.setDynamicAttribute() method,
+     * jakarta.servlet.jsp.tagext.DynamicAttributes.setDynamicAttribute() method,
      * which saves each dynamic attribute that is passed in so that a scoped
      * variable can later be created for it.
      */
     public void generateSetDynamicAttribute() {
-        out.printil("public void setDynamicAttribute(java.lang.String uri, java.lang.String localName, java.lang.Object value) throws javax.servlet.jsp.JspException {");
+        out.printil("public void setDynamicAttribute(java.lang.String uri, java.lang.String localName, java.lang.Object value) throws jakarta.servlet.jsp.JspException {");
         out.pushIndent();
         /*
          * According to the spec, only dynamic attributes with no uri are to be
@@ -4311,12 +4310,12 @@ class Generator {
                     + "org.apache.jasper.runtime.JspFragmentHelper");
             out.printil("{");
             out.pushIndent();
-            out.printil("private javax.servlet.jsp.tagext.JspTag _jspx_parent;");
+            out.printil("private jakarta.servlet.jsp.tagext.JspTag _jspx_parent;");
             out.printil("private int[] _jspx_push_body_count;");
             out.println();
             out.printil("public " + className
-                    + "( int discriminator, javax.servlet.jsp.JspContext jspContext, "
-                    + "javax.servlet.jsp.tagext.JspTag _jspx_parent, "
+                    + "( int discriminator, jakarta.servlet.jsp.JspContext jspContext, "
+                    + "jakarta.servlet.jsp.tagext.JspTag _jspx_parent, "
                     + "int[] _jspx_push_body_count ) {");
             out.pushIndent();
             out.printil("super( discriminator, jspContext, _jspx_parent );");
@@ -4347,7 +4346,7 @@ class Generator {
             } else {
                 out.printin("public void invoke");
             }
-            out.println(result.getId() + "( " + "javax.servlet.jsp.JspWriter out ) ");
+            out.println(result.getId() + "( " + "jakarta.servlet.jsp.JspWriter out ) ");
             out.pushIndent();
             // Note: Throwable required because methods like _jspx_meth_*
             // throw Throwable.
@@ -4384,11 +4383,11 @@ class Generator {
             // Generate postamble:
             out.printil("public void invoke( java.io.Writer writer )");
             out.pushIndent();
-            out.printil("throws javax.servlet.jsp.JspException");
+            out.printil("throws jakarta.servlet.jsp.JspException");
             out.popIndent();
             out.printil("{");
             out.pushIndent();
-            out.printil("javax.servlet.jsp.JspWriter out = null;");
+            out.printil("jakarta.servlet.jsp.JspWriter out = null;");
             out.printil("if( writer != null ) {");
             out.pushIndent();
             out.printil("out = this.jspContext.pushBody(writer);");
@@ -4400,8 +4399,8 @@ class Generator {
             out.printil("}");
             out.printil("try {");
             out.pushIndent();
-            out.printil("Object _jspx_saved_JspContext = this.jspContext.getELContext().getContext(javax.servlet.jsp.JspContext.class);");
-            out.printil("this.jspContext.getELContext().putContext(javax.servlet.jsp.JspContext.class,this.jspContext);");
+            out.printil("Object _jspx_saved_JspContext = this.jspContext.getELContext().getContext(jakarta.servlet.jsp.JspContext.class);");
+            out.printil("this.jspContext.getELContext().putContext(jakarta.servlet.jsp.JspContext.class,this.jspContext);");
             out.printil("switch( this.discriminator ) {");
             out.pushIndent();
             for (int i = 0; i < fragments.size(); i++) {
@@ -4415,15 +4414,15 @@ class Generator {
             out.printil("}"); // switch
 
             // restore nested JspContext on ELContext
-            out.printil("jspContext.getELContext().putContext(javax.servlet.jsp.JspContext.class,_jspx_saved_JspContext);");
+            out.printil("jspContext.getELContext().putContext(jakarta.servlet.jsp.JspContext.class,_jspx_saved_JspContext);");
 
             out.popIndent();
             out.printil("}"); // try
             out.printil("catch( java.lang.Throwable e ) {");
             out.pushIndent();
-            out.printil("if (e instanceof javax.servlet.jsp.SkipPageException)");
-            out.printil("    throw (javax.servlet.jsp.SkipPageException) e;");
-            out.printil("throw new javax.servlet.jsp.JspException( e );");
+            out.printil("if (e instanceof jakarta.servlet.jsp.SkipPageException)");
+            out.printil("    throw (jakarta.servlet.jsp.SkipPageException) e;");
+            out.printil("throw new jakarta.servlet.jsp.JspException( e );");
             out.popIndent();
             out.printil("}"); // catch
             out.printil("finally {");
diff --git a/java/org/apache/jasper/compiler/ImplicitTagLibraryInfo.java b/java/org/apache/jasper/compiler/ImplicitTagLibraryInfo.java
index ed8a29d..7b0b072 100644
--- a/java/org/apache/jasper/compiler/ImplicitTagLibraryInfo.java
+++ b/java/org/apache/jasper/compiler/ImplicitTagLibraryInfo.java
@@ -24,11 +24,11 @@ import java.util.Hashtable;
 import java.util.Set;
 import java.util.Vector;
 
-import javax.servlet.ServletContext;
-import javax.servlet.jsp.tagext.FunctionInfo;
-import javax.servlet.jsp.tagext.TagFileInfo;
-import javax.servlet.jsp.tagext.TagInfo;
-import javax.servlet.jsp.tagext.TagLibraryInfo;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.jsp.tagext.FunctionInfo;
+import jakarta.servlet.jsp.tagext.TagFileInfo;
+import jakarta.servlet.jsp.tagext.TagInfo;
+import jakarta.servlet.jsp.tagext.TagLibraryInfo;
 
 import org.apache.jasper.Constants;
 import org.apache.jasper.JasperException;
diff --git a/java/org/apache/jasper/compiler/JarScannerFactory.java b/java/org/apache/jasper/compiler/JarScannerFactory.java
index ea0350b..b855d06 100644
--- a/java/org/apache/jasper/compiler/JarScannerFactory.java
+++ b/java/org/apache/jasper/compiler/JarScannerFactory.java
@@ -16,7 +16,7 @@
  */
 package org.apache.jasper.compiler;
 
-import javax.servlet.ServletContext;
+import jakarta.servlet.ServletContext;
 
 import org.apache.tomcat.JarScanner;
 import org.apache.tomcat.util.scan.StandardJarScanner;
diff --git a/java/org/apache/jasper/compiler/JasperTagInfo.java b/java/org/apache/jasper/compiler/JasperTagInfo.java
index ec9c6e8..fd12bfb 100644
--- a/java/org/apache/jasper/compiler/JasperTagInfo.java
+++ b/java/org/apache/jasper/compiler/JasperTagInfo.java
@@ -17,11 +17,11 @@
 
 package org.apache.jasper.compiler;
 
-import javax.servlet.jsp.tagext.TagAttributeInfo;
-import javax.servlet.jsp.tagext.TagExtraInfo;
-import javax.servlet.jsp.tagext.TagInfo;
-import javax.servlet.jsp.tagext.TagLibraryInfo;
-import javax.servlet.jsp.tagext.TagVariableInfo;
+import jakarta.servlet.jsp.tagext.TagAttributeInfo;
+import jakarta.servlet.jsp.tagext.TagExtraInfo;
+import jakarta.servlet.jsp.tagext.TagInfo;
+import jakarta.servlet.jsp.tagext.TagLibraryInfo;
+import jakarta.servlet.jsp.tagext.TagVariableInfo;
 
 /**
  * TagInfo extension used by tag handlers that are implemented via tag files.
diff --git a/java/org/apache/jasper/compiler/JspConfig.java b/java/org/apache/jasper/compiler/JspConfig.java
index 373db7c..c608808 100644
--- a/java/org/apache/jasper/compiler/JspConfig.java
+++ b/java/org/apache/jasper/compiler/JspConfig.java
@@ -21,9 +21,9 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Vector;
 
-import javax.servlet.ServletContext;
-import javax.servlet.descriptor.JspConfigDescriptor;
-import javax.servlet.descriptor.JspPropertyGroupDescriptor;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.descriptor.JspConfigDescriptor;
+import jakarta.servlet.descriptor.JspPropertyGroupDescriptor;
 
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
diff --git a/java/org/apache/jasper/compiler/JspDocumentParser.java b/java/org/apache/jasper/compiler/JspDocumentParser.java
index b40ba76..938ebe3 100644
--- a/java/org/apache/jasper/compiler/JspDocumentParser.java
+++ b/java/org/apache/jasper/compiler/JspDocumentParser.java
@@ -22,12 +22,13 @@ import java.io.IOException;
 import java.security.AccessController;
 import java.util.Collection;
 
-import javax.servlet.jsp.tagext.TagFileInfo;
-import javax.servlet.jsp.tagext.TagInfo;
-import javax.servlet.jsp.tagext.TagLibraryInfo;
 import javax.xml.parsers.SAXParser;
 import javax.xml.parsers.SAXParserFactory;
 
+import jakarta.servlet.jsp.tagext.TagFileInfo;
+import jakarta.servlet.jsp.tagext.TagInfo;
+import jakarta.servlet.jsp.tagext.TagLibraryInfo;
+
 import org.apache.jasper.Constants;
 import org.apache.jasper.JasperException;
 import org.apache.jasper.JspCompilationContext;
diff --git a/java/org/apache/jasper/compiler/JspRuntimeContext.java b/java/org/apache/jasper/compiler/JspRuntimeContext.java
index 87fe6c3..02f5c0c 100644
--- a/java/org/apache/jasper/compiler/JspRuntimeContext.java
+++ b/java/org/apache/jasper/compiler/JspRuntimeContext.java
@@ -33,8 +33,8 @@ import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.atomic.AtomicInteger;
 
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.ServletException;
 
 import org.apache.jasper.Constants;
 import org.apache.jasper.JspCompilationContext;
diff --git a/java/org/apache/jasper/compiler/JspUtil.java b/java/org/apache/jasper/compiler/JspUtil.java
index e1b881b..b0be277 100644
--- a/java/org/apache/jasper/compiler/JspUtil.java
+++ b/java/org/apache/jasper/compiler/JspUtil.java
@@ -394,7 +394,7 @@ public class JspUtil {
                         + ") "
                         + "org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate"
                         + "(" + Generator.quote(expression) + ", " + targetType
-                        + ".class, " + "(javax.servlet.jsp.PageContext)" + jspCtxt + ", "
+                        + ".class, " + "(jakarta.servlet.jsp.PageContext)" + jspCtxt + ", "
                         + fnmapvar + ")");
 
         /*
diff --git a/java/org/apache/jasper/compiler/Node.java b/java/org/apache/jasper/compiler/Node.java
index 14aeb6a..836bb99 100644
--- a/java/org/apache/jasper/compiler/Node.java
+++ b/java/org/apache/jasper/compiler/Node.java
@@ -20,22 +20,21 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Vector;
 
-import javax.servlet.jsp.tagext.BodyTag;
-import javax.servlet.jsp.tagext.DynamicAttributes;
-import javax.servlet.jsp.tagext.IterationTag;
-import javax.servlet.jsp.tagext.JspIdConsumer;
-import javax.servlet.jsp.tagext.SimpleTag;
-import javax.servlet.jsp.tagext.TagAttributeInfo;
-import javax.servlet.jsp.tagext.TagData;
-import javax.servlet.jsp.tagext.TagFileInfo;
-import javax.servlet.jsp.tagext.TagInfo;
-import javax.servlet.jsp.tagext.TagVariableInfo;
-import javax.servlet.jsp.tagext.TryCatchFinally;
-import javax.servlet.jsp.tagext.VariableInfo;
-
 import jakarta.el.ELContext;
 import jakarta.el.ELException;
 import jakarta.el.ExpressionFactory;
+import jakarta.servlet.jsp.tagext.BodyTag;
+import jakarta.servlet.jsp.tagext.DynamicAttributes;
+import jakarta.servlet.jsp.tagext.IterationTag;
+import jakarta.servlet.jsp.tagext.JspIdConsumer;
+import jakarta.servlet.jsp.tagext.SimpleTag;
+import jakarta.servlet.jsp.tagext.TagAttributeInfo;
+import jakarta.servlet.jsp.tagext.TagData;
+import jakarta.servlet.jsp.tagext.TagFileInfo;
+import jakarta.servlet.jsp.tagext.TagInfo;
+import jakarta.servlet.jsp.tagext.TagVariableInfo;
+import jakarta.servlet.jsp.tagext.TryCatchFinally;
+import jakarta.servlet.jsp.tagext.VariableInfo;
 
 import org.apache.jasper.Constants;
 import org.apache.jasper.JasperException;
diff --git a/java/org/apache/jasper/compiler/PageDataImpl.java b/java/org/apache/jasper/compiler/PageDataImpl.java
index 592da5e..dff1d88 100644
--- a/java/org/apache/jasper/compiler/PageDataImpl.java
+++ b/java/org/apache/jasper/compiler/PageDataImpl.java
@@ -21,7 +21,7 @@ import java.io.CharArrayWriter;
 import java.io.InputStream;
 import java.nio.charset.StandardCharsets;
 
-import javax.servlet.jsp.tagext.PageData;
+import jakarta.servlet.jsp.tagext.PageData;
 
 import org.apache.jasper.JasperException;
 import org.apache.tomcat.util.security.Escape;
@@ -29,7 +29,7 @@ import org.xml.sax.Attributes;
 import org.xml.sax.helpers.AttributesImpl;
 
 /**
- * An implementation of <code>javax.servlet.jsp.tagext.PageData</code> which
+ * An implementation of <code>jakarta.servlet.jsp.tagext.PageData</code> which
  * builds the XML view of a given page.
  *
  * The XML view is built in two passes:
diff --git a/java/org/apache/jasper/compiler/PageInfo.java b/java/org/apache/jasper/compiler/PageInfo.java
index 59c6038..e4a745a 100644
--- a/java/org/apache/jasper/compiler/PageInfo.java
+++ b/java/org/apache/jasper/compiler/PageInfo.java
@@ -25,9 +25,8 @@ import java.util.Map;
 import java.util.Set;
 import java.util.Vector;
 
-import javax.servlet.jsp.tagext.TagLibraryInfo;
-
 import jakarta.el.ExpressionFactory;
+import jakarta.servlet.jsp.tagext.TagLibraryInfo;
 
 import org.apache.jasper.Constants;
 import org.apache.jasper.JasperException;
diff --git a/java/org/apache/jasper/compiler/Parser.java b/java/org/apache/jasper/compiler/Parser.java
index 9de1f1e..f4fa086 100644
--- a/java/org/apache/jasper/compiler/Parser.java
+++ b/java/org/apache/jasper/compiler/Parser.java
@@ -20,10 +20,10 @@ import java.io.CharArrayWriter;
 import java.io.FileNotFoundException;
 import java.util.Collection;
 
-import javax.servlet.jsp.tagext.TagAttributeInfo;
-import javax.servlet.jsp.tagext.TagFileInfo;
-import javax.servlet.jsp.tagext.TagInfo;
-import javax.servlet.jsp.tagext.TagLibraryInfo;
+import jakarta.servlet.jsp.tagext.TagAttributeInfo;
+import jakarta.servlet.jsp.tagext.TagFileInfo;
+import jakarta.servlet.jsp.tagext.TagInfo;
+import jakarta.servlet.jsp.tagext.TagLibraryInfo;
 
 import org.apache.jasper.JasperException;
 import org.apache.jasper.JspCompilationContext;
diff --git a/java/org/apache/jasper/compiler/ScriptingVariabler.java b/java/org/apache/jasper/compiler/ScriptingVariabler.java
index a9628fa..a2682f2 100644
--- a/java/org/apache/jasper/compiler/ScriptingVariabler.java
+++ b/java/org/apache/jasper/compiler/ScriptingVariabler.java
@@ -22,8 +22,8 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import javax.servlet.jsp.tagext.TagVariableInfo;
-import javax.servlet.jsp.tagext.VariableInfo;
+import jakarta.servlet.jsp.tagext.TagVariableInfo;
+import jakarta.servlet.jsp.tagext.VariableInfo;
 
 import org.apache.jasper.JasperException;
 
diff --git a/java/org/apache/jasper/compiler/TagFileProcessor.java b/java/org/apache/jasper/compiler/TagFileProcessor.java
index 01224c5..af1ed91 100644
--- a/java/org/apache/jasper/compiler/TagFileProcessor.java
+++ b/java/org/apache/jasper/compiler/TagFileProcessor.java
@@ -23,15 +23,14 @@ import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Vector;
 
-import javax.servlet.jsp.tagext.TagAttributeInfo;
-import javax.servlet.jsp.tagext.TagFileInfo;
-import javax.servlet.jsp.tagext.TagInfo;
-import javax.servlet.jsp.tagext.TagLibraryInfo;
-import javax.servlet.jsp.tagext.TagVariableInfo;
-import javax.servlet.jsp.tagext.VariableInfo;
-
 import jakarta.el.MethodExpression;
 import jakarta.el.ValueExpression;
+import jakarta.servlet.jsp.tagext.TagAttributeInfo;
+import jakarta.servlet.jsp.tagext.TagFileInfo;
+import jakarta.servlet.jsp.tagext.TagInfo;
+import jakarta.servlet.jsp.tagext.TagLibraryInfo;
+import jakarta.servlet.jsp.tagext.TagVariableInfo;
+import jakarta.servlet.jsp.tagext.VariableInfo;
 
 import org.apache.jasper.JasperException;
 import org.apache.jasper.JspCompilationContext;
diff --git a/java/org/apache/jasper/compiler/TagLibraryInfoImpl.java b/java/org/apache/jasper/compiler/TagLibraryInfoImpl.java
index d5f35bd..7da6963 100644
--- a/java/org/apache/jasper/compiler/TagLibraryInfoImpl.java
+++ b/java/org/apache/jasper/compiler/TagLibraryInfoImpl.java
@@ -31,16 +31,16 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
-import javax.servlet.jsp.tagext.FunctionInfo;
-import javax.servlet.jsp.tagext.PageData;
-import javax.servlet.jsp.tagext.TagAttributeInfo;
-import javax.servlet.jsp.tagext.TagExtraInfo;
-import javax.servlet.jsp.tagext.TagFileInfo;
-import javax.servlet.jsp.tagext.TagInfo;
-import javax.servlet.jsp.tagext.TagLibraryInfo;
-import javax.servlet.jsp.tagext.TagLibraryValidator;
-import javax.servlet.jsp.tagext.TagVariableInfo;
-import javax.servlet.jsp.tagext.ValidationMessage;
+import jakarta.servlet.jsp.tagext.FunctionInfo;
+import jakarta.servlet.jsp.tagext.PageData;
+import jakarta.servlet.jsp.tagext.TagAttributeInfo;
+import jakarta.servlet.jsp.tagext.TagExtraInfo;
+import jakarta.servlet.jsp.tagext.TagFileInfo;
+import jakarta.servlet.jsp.tagext.TagInfo;
+import jakarta.servlet.jsp.tagext.TagLibraryInfo;
+import jakarta.servlet.jsp.tagext.TagLibraryValidator;
+import jakarta.servlet.jsp.tagext.TagVariableInfo;
+import jakarta.servlet.jsp.tagext.ValidationMessage;
 
 import org.apache.jasper.JasperException;
 import org.apache.jasper.JspCompilationContext;
@@ -356,7 +356,7 @@ class TagLibraryInfoImpl extends TagLibraryInfo implements TagConstants {
     }
 
     // *********************************************************************
-    // Until javax.servlet.jsp.tagext.TagLibraryInfo is fixed
+    // Until jakarta.servlet.jsp.tagext.TagLibraryInfo is fixed
 
     /**
      * The instance (if any) for the TagLibraryValidator class.
diff --git a/java/org/apache/jasper/compiler/TagPluginManager.java b/java/org/apache/jasper/compiler/TagPluginManager.java
index b1ae5dc..17c2be0 100644
--- a/java/org/apache/jasper/compiler/TagPluginManager.java
+++ b/java/org/apache/jasper/compiler/TagPluginManager.java
@@ -23,7 +23,7 @@ import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.Map;
 
-import javax.servlet.ServletContext;
+import jakarta.servlet.ServletContext;
 
 import org.apache.jasper.Constants;
 import org.apache.jasper.JasperException;
diff --git a/java/org/apache/jasper/compiler/TldCache.java b/java/org/apache/jasper/compiler/TldCache.java
index 60daed5..446f80e 100644
--- a/java/org/apache/jasper/compiler/TldCache.java
+++ b/java/org/apache/jasper/compiler/TldCache.java
@@ -23,7 +23,7 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.Map.Entry;
 
-import javax.servlet.ServletContext;
+import jakarta.servlet.ServletContext;
 
 import org.apache.jasper.Constants;
 import org.apache.jasper.JasperException;
diff --git a/java/org/apache/jasper/compiler/Validator.java b/java/org/apache/jasper/compiler/Validator.java
index 0208041..4b68485 100644
--- a/java/org/apache/jasper/compiler/Validator.java
+++ b/java/org/apache/jasper/compiler/Validator.java
@@ -28,19 +28,18 @@ import java.util.Map;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import javax.servlet.jsp.JspFactory;
-import javax.servlet.jsp.tagext.FunctionInfo;
-import javax.servlet.jsp.tagext.PageData;
-import javax.servlet.jsp.tagext.TagAttributeInfo;
-import javax.servlet.jsp.tagext.TagData;
-import javax.servlet.jsp.tagext.TagExtraInfo;
-import javax.servlet.jsp.tagext.TagInfo;
-import javax.servlet.jsp.tagext.TagLibraryInfo;
-import javax.servlet.jsp.tagext.ValidationMessage;
-
 import jakarta.el.ELException;
 import jakarta.el.ExpressionFactory;
 import jakarta.el.FunctionMapper;
+import jakarta.servlet.jsp.JspFactory;
+import jakarta.servlet.jsp.tagext.FunctionInfo;
+import jakarta.servlet.jsp.tagext.PageData;
+import jakarta.servlet.jsp.tagext.TagAttributeInfo;
+import jakarta.servlet.jsp.tagext.TagData;
+import jakarta.servlet.jsp.tagext.TagExtraInfo;
+import jakarta.servlet.jsp.tagext.TagInfo;
+import jakarta.servlet.jsp.tagext.TagLibraryInfo;
+import jakarta.servlet.jsp.tagext.ValidationMessage;
 
 import org.apache.jasper.JasperException;
 import org.apache.jasper.compiler.ELNode.Text;
diff --git a/java/org/apache/jasper/el/ELResolverImpl.java b/java/org/apache/jasper/el/ELResolverImpl.java
index 00001ac..c5812d5 100644
--- a/java/org/apache/jasper/el/ELResolverImpl.java
+++ b/java/org/apache/jasper/el/ELResolverImpl.java
@@ -20,13 +20,12 @@ package org.apache.jasper.el;
 import java.util.Iterator;
 import java.util.Objects;
 
-import javax.servlet.jsp.el.VariableResolver;
-
 import jakarta.el.ELContext;
 import jakarta.el.ELException;
 import jakarta.el.ELResolver;
 import jakarta.el.ExpressionFactory;
 import jakarta.el.PropertyNotWritableException;
+import jakarta.servlet.jsp.el.VariableResolver;
 
 @Deprecated
 public final class ELResolverImpl extends ELResolver {
@@ -50,7 +49,7 @@ public final class ELResolverImpl extends ELResolver {
                 try {
                     return this.variableResolver.resolveVariable(property
                             .toString());
-                } catch (javax.servlet.jsp.el.ELException e) {
+                } catch (jakarta.servlet.jsp.el.ELException e) {
                     throw new ELException(e.getMessage(), e.getCause());
                 }
             }
@@ -73,7 +72,7 @@ public final class ELResolverImpl extends ELResolver {
                     Object obj = this.variableResolver.resolveVariable(property
                             .toString());
                     return (obj != null) ? obj.getClass() : null;
-                } catch (javax.servlet.jsp.el.ELException e) {
+                } catch (jakarta.servlet.jsp.el.ELException e) {
                     throw new ELException(e.getMessage(), e.getCause());
                 }
             }
diff --git a/java/org/apache/jasper/el/ExpressionEvaluatorImpl.java b/java/org/apache/jasper/el/ExpressionEvaluatorImpl.java
index 3c48c4b..0a9aa98 100644
--- a/java/org/apache/jasper/el/ExpressionEvaluatorImpl.java
+++ b/java/org/apache/jasper/el/ExpressionEvaluatorImpl.java
@@ -16,15 +16,14 @@
  */
 package org.apache.jasper.el;
 
-import javax.servlet.jsp.el.ELException;
-import javax.servlet.jsp.el.ELParseException;
-import javax.servlet.jsp.el.Expression;
-import javax.servlet.jsp.el.ExpressionEvaluator;
-import javax.servlet.jsp.el.FunctionMapper;
-import javax.servlet.jsp.el.VariableResolver;
-
 import jakarta.el.ExpressionFactory;
 import jakarta.el.ValueExpression;
+import jakarta.servlet.jsp.el.ELException;
+import jakarta.servlet.jsp.el.ELParseException;
+import jakarta.servlet.jsp.el.Expression;
+import jakarta.servlet.jsp.el.ExpressionEvaluator;
+import jakarta.servlet.jsp.el.FunctionMapper;
+import jakarta.servlet.jsp.el.VariableResolver;
 
 @Deprecated
 public final class ExpressionEvaluatorImpl extends ExpressionEvaluator {
diff --git a/java/org/apache/jasper/el/ExpressionImpl.java b/java/org/apache/jasper/el/ExpressionImpl.java
index a607da0..cf0e8fe 100644
--- a/java/org/apache/jasper/el/ExpressionImpl.java
+++ b/java/org/apache/jasper/el/ExpressionImpl.java
@@ -16,13 +16,12 @@
  */
 package org.apache.jasper.el;
 
-import javax.servlet.jsp.el.ELException;
-import javax.servlet.jsp.el.Expression;
-import javax.servlet.jsp.el.VariableResolver;
-
 import jakarta.el.ELContext;
 import jakarta.el.ExpressionFactory;
 import jakarta.el.ValueExpression;
+import jakarta.servlet.jsp.el.ELException;
+import jakarta.servlet.jsp.el.Expression;
+import jakarta.servlet.jsp.el.VariableResolver;
 
 @Deprecated
 public final class ExpressionImpl extends Expression {
diff --git a/java/org/apache/jasper/el/FunctionMapperImpl.java b/java/org/apache/jasper/el/FunctionMapperImpl.java
index c8d45d7..490d488 100644
--- a/java/org/apache/jasper/el/FunctionMapperImpl.java
+++ b/java/org/apache/jasper/el/FunctionMapperImpl.java
@@ -18,7 +18,7 @@ package org.apache.jasper.el;
 
 import java.lang.reflect.Method;
 
-import javax.servlet.jsp.el.FunctionMapper;
+import jakarta.servlet.jsp.el.FunctionMapper;
 
 @Deprecated
 public final class FunctionMapperImpl extends jakarta.el.FunctionMapper {
diff --git a/java/org/apache/jasper/el/JasperELResolver.java b/java/org/apache/jasper/el/JasperELResolver.java
index 2b04ffc..d28c61c 100644
--- a/java/org/apache/jasper/el/JasperELResolver.java
+++ b/java/org/apache/jasper/el/JasperELResolver.java
@@ -23,9 +23,6 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.concurrent.atomic.AtomicInteger;
 
-import javax.servlet.jsp.el.ImplicitObjectELResolver;
-import javax.servlet.jsp.el.ScopedAttributeELResolver;
-
 import jakarta.el.ArrayELResolver;
 import jakarta.el.BeanELResolver;
 import jakarta.el.CompositeELResolver;
@@ -37,6 +34,8 @@ import jakarta.el.MapELResolver;
 import jakarta.el.PropertyNotFoundException;
 import jakarta.el.ResourceBundleELResolver;
 import jakarta.el.StaticFieldELResolver;
+import jakarta.servlet.jsp.el.ImplicitObjectELResolver;
+import jakarta.servlet.jsp.el.ScopedAttributeELResolver;
 
 import org.apache.jasper.runtime.ExceptionUtils;
 import org.apache.jasper.runtime.JspRuntimeLibrary;
diff --git a/java/org/apache/jasper/el/VariableResolverImpl.java b/java/org/apache/jasper/el/VariableResolverImpl.java
index b6eaa82..18bd48c 100644
--- a/java/org/apache/jasper/el/VariableResolverImpl.java
+++ b/java/org/apache/jasper/el/VariableResolverImpl.java
@@ -16,10 +16,9 @@
  */
 package org.apache.jasper.el;
 
-import javax.servlet.jsp.el.ELException;
-import javax.servlet.jsp.el.VariableResolver;
-
 import jakarta.el.ELContext;
+import jakarta.servlet.jsp.el.ELException;
+import jakarta.servlet.jsp.el.VariableResolver;
 
 @Deprecated
 public final class VariableResolverImpl implements VariableResolver {
diff --git a/java/org/apache/jasper/resources/LocalStrings.properties b/java/org/apache/jasper/resources/LocalStrings.properties
index 6574f84..e51ba3d 100644
--- a/java/org/apache/jasper/resources/LocalStrings.properties
+++ b/java/org/apache/jasper/resources/LocalStrings.properties
@@ -76,7 +76,7 @@ jsp.error.file.already.registered=Recursive include of file [{0}]
 jsp.error.file.cannot.read=Cannot read file: [{0}]
 jsp.error.file.not.found=File [{0}] not found
 jsp.error.flush=Exception occurred when flushing data
-jsp.error.fragmentwithtype=Cannot specify both 'fragment' and 'type' attributes.  If 'fragment' is present, 'type' is fixed as 'javax.servlet.jsp.tagext.JspFragment'
+jsp.error.fragmentwithtype=Cannot specify both 'fragment' and 'type' attributes.  If 'fragment' is present, 'type' is fixed as 'jakarta.servlet.jsp.tagext.JspFragment'
 jsp.error.function.classnotfound=The class [{0}] specified in TLD for the function [{1}] cannot be found: [{2}]
 jsp.error.include.exception=Unable to include [{0}]
 jsp.error.include.tag=Invalid jsp:include tag
diff --git a/java/org/apache/jasper/resources/LocalStrings_es.properties b/java/org/apache/jasper/resources/LocalStrings_es.properties
index c7c470b..5f2f900 100644
--- a/java/org/apache/jasper/resources/LocalStrings_es.properties
+++ b/java/org/apache/jasper/resources/LocalStrings_es.properties
@@ -69,7 +69,7 @@ jsp.error.file.already.registered=El archivo [{0}] ya se ha visto, ¿podría ser
 jsp.error.file.cannot.read=No se puede leer el archivo: [{0}]
 jsp.error.file.not.found=Archivo JSP [{0}] no encontrado
 jsp.error.flush=Excepción sucedida al vaciar los datos
-jsp.error.fragmentwithtype=No puede especificar ambos atributos 'fragment' y 'type'. Si está presente 'fragment', 'type' se pone como 'javax.servlet.jsp.tagext.JspFragment'
+jsp.error.fragmentwithtype=No puede especificar ambos atributos 'fragment' y 'type'. Si está presente 'fragment', 'type' se pone como 'jakarta.servlet.jsp.tagext.JspFragment'
 jsp.error.function.classnotfound=La clase [{0}] especificada en el TLD para la función [{1}] no se puede hallar: [{2}]
 jsp.error.include.exception=No se puede incluir [{0}]
 jsp.error.include.tag=Tag jsp:include no válido
diff --git a/java/org/apache/jasper/resources/LocalStrings_fr.properties b/java/org/apache/jasper/resources/LocalStrings_fr.properties
index d311b8d..6373ae8 100644
--- a/java/org/apache/jasper/resources/LocalStrings_fr.properties
+++ b/java/org/apache/jasper/resources/LocalStrings_fr.properties
@@ -76,7 +76,7 @@ jsp.error.file.already.registered=Inclusion récursive du fichier [{0}]
 jsp.error.file.cannot.read=Impossible de lire le fichier: [{0}]
 jsp.error.file.not.found=Le fichier [{0}] n''a pas été trouvé
 jsp.error.flush=Une exception s'est produite lors de l'envoi des données
-jsp.error.fragmentwithtype=On ne peut indiquer à la fois les attributs 'fragment' et 'type'.  Si 'fragment' est présent, 'type' est fixé comme 'javax.servlet.jsp.tagext.JspFragment'
+jsp.error.fragmentwithtype=On ne peut indiquer à la fois les attributs 'fragment' et 'type'.  Si 'fragment' est présent, 'type' est fixé comme 'jakarta.servlet.jsp.tagext.JspFragment'
 jsp.error.function.classnotfound=La classe [{0}] spécifiée dans la TLD pour la fonction [{1}] n''a pas été trouvée: [{2}]
 jsp.error.include.exception=Impossible d''inclure (include) [{0}]
 jsp.error.include.tag=Tag jsp:include incorrect
diff --git a/java/org/apache/jasper/resources/LocalStrings_ja.properties b/java/org/apache/jasper/resources/LocalStrings_ja.properties
index 3820aaf..58aab4f 100644
--- a/java/org/apache/jasper/resources/LocalStrings_ja.properties
+++ b/java/org/apache/jasper/resources/LocalStrings_ja.properties
@@ -76,7 +76,7 @@ jsp.error.file.already.registered=ファイル [{0}] の再帰的な取り込み
 jsp.error.file.cannot.read=ファイルが読めません: [{0}]
 jsp.error.file.not.found=JSP ファイル [{0}] が見つかりません
 jsp.error.flush=データをフラッシュする際に例外が発生しました。
-jsp.error.fragmentwithtype='fragment'属性と'type'属性を両方指定できません。'fragment'が存在する場合には'type'は'javax.servlet.jsp.tagext.JspFragment'に固定されます
+jsp.error.fragmentwithtype='fragment'属性と'type'属性を両方指定できません。'fragment'が存在する場合には'type'は'jakarta.servlet.jsp.tagext.JspFragment'に固定されます
 jsp.error.function.classnotfound=TLDの中で関数 [{1}] に指定されているクラス [{0}] が見つかりません: [{2}]
 jsp.error.include.exception=[{0}] を取り込めません
 jsp.error.include.tag=無効なjsp:includeタグです
diff --git a/java/org/apache/jasper/resources/LocalStrings_ko.properties b/java/org/apache/jasper/resources/LocalStrings_ko.properties
index 5ca9865..ed63764 100644
--- a/java/org/apache/jasper/resources/LocalStrings_ko.properties
+++ b/java/org/apache/jasper/resources/LocalStrings_ko.properties
@@ -77,7 +77,7 @@ jsp.error.file.already.registered=파일 [{0}]의 재귀적인 include입니다.
 jsp.error.file.cannot.read=파일을 읽을 수 없습니다: [{0}]
 jsp.error.file.not.found=파일 [{0}]을(를) 찾을 수 없습니다.
 jsp.error.flush=데이터를 배출하는 중 예외가 발생했습니다.
-jsp.error.fragmentwithtype='fragment'와 'type' 속성, 둘 다를 지정할 수 없습니다. 만일 'fragment'이 지정되면, 'type'은 'javax.servlet.jsp.tagext.JspFragment'으로 고정됩니다.
+jsp.error.fragmentwithtype='fragment'와 'type' 속성, 둘 다를 지정할 수 없습니다. 만일 'fragment'이 지정되면, 'type'은 'jakarta.servlet.jsp.tagext.JspFragment'으로 고정됩니다.
 jsp.error.function.classnotfound=function [{1}]을(를) 위하여 TLD에 지정된, 클래스 [{0}]을(를) 찾을 수 없습니다: [{2}]
 jsp.error.include.exception=[{0}]을(를) include할 수 없습니다.
 jsp.error.include.tag=유효하지 않은 jsp:include 태그
diff --git a/java/org/apache/jasper/runtime/BodyContentImpl.java b/java/org/apache/jasper/runtime/BodyContentImpl.java
index 0f3c11a..7575650 100644
--- a/java/org/apache/jasper/runtime/BodyContentImpl.java
+++ b/java/org/apache/jasper/runtime/BodyContentImpl.java
@@ -24,8 +24,8 @@ import java.io.Writer;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
 
-import javax.servlet.jsp.JspWriter;
-import javax.servlet.jsp.tagext.BodyContent;
+import jakarta.servlet.jsp.JspWriter;
+import jakarta.servlet.jsp.tagext.BodyContent;
 
 import org.apache.jasper.Constants;
 import org.apache.jasper.compiler.Localizer;
diff --git a/java/org/apache/jasper/runtime/HttpJspBase.java b/java/org/apache/jasper/runtime/HttpJspBase.java
index 544af4e..64caf7e 100644
--- a/java/org/apache/jasper/runtime/HttpJspBase.java
+++ b/java/org/apache/jasper/runtime/HttpJspBase.java
@@ -19,12 +19,12 @@ package org.apache.jasper.runtime;
 
 import java.io.IOException;
 
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.jsp.HttpJspPage;
+import jakarta.servlet.ServletConfig;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.jsp.HttpJspPage;
 
 import org.apache.jasper.compiler.Localizer;
 
diff --git a/java/org/apache/jasper/runtime/InstanceManagerFactory.java b/java/org/apache/jasper/runtime/InstanceManagerFactory.java
index 0188c63..4a63ad3 100644
--- a/java/org/apache/jasper/runtime/InstanceManagerFactory.java
+++ b/java/org/apache/jasper/runtime/InstanceManagerFactory.java
@@ -16,7 +16,7 @@
  */
 package org.apache.jasper.runtime;
 
-import javax.servlet.ServletConfig;
+import jakarta.servlet.ServletConfig;
 
 import org.apache.jasper.compiler.Localizer;
 import org.apache.tomcat.InstanceManager;
diff --git a/java/org/apache/jasper/runtime/JspApplicationContextImpl.java b/java/org/apache/jasper/runtime/JspApplicationContextImpl.java
index c0b89d2..ad39da6 100644
--- a/java/org/apache/jasper/runtime/JspApplicationContextImpl.java
+++ b/java/org/apache/jasper/runtime/JspApplicationContextImpl.java
@@ -21,16 +21,15 @@ import java.security.PrivilegedAction;
 import java.util.ArrayList;
 import java.util.List;
 
-import javax.servlet.ServletContext;
-import javax.servlet.jsp.JspApplicationContext;
-import javax.servlet.jsp.JspContext;
-
 import jakarta.el.CompositeELResolver;
 import jakarta.el.ELContext;
 import jakarta.el.ELContextEvent;
 import jakarta.el.ELContextListener;
 import jakarta.el.ELResolver;
 import jakarta.el.ExpressionFactory;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.jsp.JspApplicationContext;
+import jakarta.servlet.jsp.JspContext;
 
 import org.apache.jasper.Constants;
 import org.apache.jasper.compiler.Localizer;
diff --git a/java/org/apache/jasper/runtime/JspContextWrapper.java b/java/org/apache/jasper/runtime/JspContextWrapper.java
index 1bda259..0620d56 100644
--- a/java/org/apache/jasper/runtime/JspContextWrapper.java
+++ b/java/org/apache/jasper/runtime/JspContextWrapper.java
@@ -28,31 +28,30 @@ import java.util.Locale;
 import java.util.Map;
 import java.util.Set;
 
-import javax.servlet.Servlet;
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpSession;
-import javax.servlet.jsp.JspApplicationContext;
-import javax.servlet.jsp.JspContext;
-import javax.servlet.jsp.JspFactory;
-import javax.servlet.jsp.JspWriter;
-import javax.servlet.jsp.PageContext;
-import javax.servlet.jsp.el.ELException;
-import javax.servlet.jsp.el.ExpressionEvaluator;
-import javax.servlet.jsp.el.VariableResolver;
-import javax.servlet.jsp.tagext.BodyContent;
-import javax.servlet.jsp.tagext.JspTag;
-import javax.servlet.jsp.tagext.VariableInfo;
-
 import jakarta.el.ELContext;
 import jakarta.el.ELResolver;
 import jakarta.el.EvaluationListener;
 import jakarta.el.FunctionMapper;
 import jakarta.el.ImportHandler;
 import jakarta.el.VariableMapper;
+import jakarta.servlet.Servlet;
+import jakarta.servlet.ServletConfig;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.HttpSession;
+import jakarta.servlet.jsp.JspApplicationContext;
+import jakarta.servlet.jsp.JspContext;
+import jakarta.servlet.jsp.JspFactory;
+import jakarta.servlet.jsp.JspWriter;
+import jakarta.servlet.jsp.PageContext;
+import jakarta.servlet.jsp.el.ELException;
+import jakarta.servlet.jsp.el.ExpressionEvaluator;
+import jakarta.servlet.jsp.el.VariableResolver;
+import jakarta.servlet.jsp.tagext.BodyContent;
+import jakarta.servlet.jsp.tagext.JspTag;
+import jakarta.servlet.jsp.tagext.VariableInfo;
 
 import org.apache.jasper.compiler.Localizer;
 
diff --git a/java/org/apache/jasper/runtime/JspFactoryImpl.java b/java/org/apache/jasper/runtime/JspFactoryImpl.java
index c2a73d4..1e4a005 100644
--- a/java/org/apache/jasper/runtime/JspFactoryImpl.java
+++ b/java/org/apache/jasper/runtime/JspFactoryImpl.java
@@ -20,14 +20,14 @@ import java.io.IOException;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
 
-import javax.servlet.Servlet;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.jsp.JspApplicationContext;
-import javax.servlet.jsp.JspEngineInfo;
-import javax.servlet.jsp.JspFactory;
-import javax.servlet.jsp.PageContext;
+import jakarta.servlet.Servlet;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.jsp.JspApplicationContext;
+import jakarta.servlet.jsp.JspEngineInfo;
+import jakarta.servlet.jsp.JspFactory;
+import jakarta.servlet.jsp.PageContext;
 
 import org.apache.jasper.Constants;
 
diff --git a/java/org/apache/jasper/runtime/JspFragmentHelper.java b/java/org/apache/jasper/runtime/JspFragmentHelper.java
index 1df68d5..a9a445c 100644
--- a/java/org/apache/jasper/runtime/JspFragmentHelper.java
+++ b/java/org/apache/jasper/runtime/JspFragmentHelper.java
@@ -17,10 +17,10 @@
 
 package org.apache.jasper.runtime;
 
-import javax.servlet.jsp.JspContext;
-import javax.servlet.jsp.PageContext;
-import javax.servlet.jsp.tagext.JspFragment;
-import javax.servlet.jsp.tagext.JspTag;
+import jakarta.servlet.jsp.JspContext;
+import jakarta.servlet.jsp.PageContext;
+import jakarta.servlet.jsp.tagext.JspFragment;
+import jakarta.servlet.jsp.tagext.JspTag;
 
 /**
  * Helper class from which all Jsp Fragment helper classes extend.
diff --git a/java/org/apache/jasper/runtime/JspRuntimeLibrary.java b/java/org/apache/jasper/runtime/JspRuntimeLibrary.java
index 4770024..9a0783c 100644
--- a/java/org/apache/jasper/runtime/JspRuntimeLibrary.java
+++ b/java/org/apache/jasper/runtime/JspRuntimeLibrary.java
@@ -24,17 +24,17 @@ import java.io.OutputStreamWriter;
 import java.lang.reflect.Method;
 import java.util.Enumeration;
 
-import javax.servlet.RequestDispatcher;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.jsp.JspException;
-import javax.servlet.jsp.JspWriter;
-import javax.servlet.jsp.PageContext;
-import javax.servlet.jsp.tagext.BodyContent;
-import javax.servlet.jsp.tagext.BodyTag;
-import javax.servlet.jsp.tagext.Tag;
+import jakarta.servlet.RequestDispatcher;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.jsp.JspException;
+import jakarta.servlet.jsp.JspWriter;
+import jakarta.servlet.jsp.PageContext;
+import jakarta.servlet.jsp.tagext.BodyContent;
+import jakarta.servlet.jsp.tagext.BodyTag;
+import jakarta.servlet.jsp.tagext.Tag;
 
 import org.apache.jasper.JasperException;
 import org.apache.jasper.compiler.Localizer;
@@ -73,9 +73,9 @@ public class JspRuntimeLibrary {
     }
 
     /**
-     * Returns the value of the javax.servlet.error.exception request
+     * Returns the value of the jakarta.servlet.error.exception request
      * attribute value, if present, otherwise the value of the
-     * javax.servlet.jsp.jspException request attribute value.
+     * jakarta.servlet.jsp.jspException request attribute value.
      *
      * This method is called at the beginning of the generated servlet code
      * for a JSP error page, when the "exception" implicit scripting language
diff --git a/java/org/apache/jasper/runtime/JspWriterImpl.java b/java/org/apache/jasper/runtime/JspWriterImpl.java
index d4cca73..24eb0bd 100644
--- a/java/org/apache/jasper/runtime/JspWriterImpl.java
+++ b/java/org/apache/jasper/runtime/JspWriterImpl.java
@@ -20,8 +20,8 @@ package org.apache.jasper.runtime;
 import java.io.IOException;
 import java.io.Writer;
 
-import javax.servlet.ServletResponse;
-import javax.servlet.jsp.JspWriter;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.jsp.JspWriter;
 
 import org.apache.jasper.Constants;
 import org.apache.jasper.compiler.Localizer;
diff --git a/java/org/apache/jasper/runtime/PageContextImpl.java b/java/org/apache/jasper/runtime/PageContextImpl.java
index 0aa46f6..fcbbae8 100644
--- a/java/org/apache/jasper/runtime/PageContextImpl.java
+++ b/java/org/apache/jasper/runtime/PageContextImpl.java
@@ -25,27 +25,26 @@ import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.Set;
 
-import javax.servlet.RequestDispatcher;
-import javax.servlet.Servlet;
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
-import javax.servlet.jsp.JspException;
-import javax.servlet.jsp.JspFactory;
-import javax.servlet.jsp.JspWriter;
-import javax.servlet.jsp.PageContext;
-import javax.servlet.jsp.tagext.BodyContent;
-
 import jakarta.el.ELContext;
 import jakarta.el.ELException;
 import jakarta.el.ExpressionFactory;
 import jakarta.el.ImportHandler;
 import jakarta.el.ValueExpression;
+import jakarta.servlet.RequestDispatcher;
+import jakarta.servlet.Servlet;
+import jakarta.servlet.ServletConfig;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpSession;
+import jakarta.servlet.jsp.JspException;
+import jakarta.servlet.jsp.JspFactory;
+import jakarta.servlet.jsp.JspWriter;
+import jakarta.servlet.jsp.PageContext;
+import jakarta.servlet.jsp.tagext.BodyContent;
 
 import org.apache.jasper.Constants;
 import org.apache.jasper.compiler.Localizer;
@@ -499,7 +498,7 @@ public class PageContextImpl extends PageContext {
 
     @Override
     @Deprecated
-    public javax.servlet.jsp.el.VariableResolver getVariableResolver() {
+    public jakarta.servlet.jsp.el.VariableResolver getVariableResolver() {
         return new org.apache.jasper.el.VariableResolverImpl(
                 this.getELContext());
     }
@@ -583,7 +582,7 @@ public class PageContextImpl extends PageContext {
      */
     @Override
     @Deprecated
-    public javax.servlet.jsp.el.ExpressionEvaluator getExpressionEvaluator() {
+    public jakarta.servlet.jsp.el.ExpressionEvaluator getExpressionEvaluator() {
         return new org.apache.jasper.el.ExpressionEvaluatorImpl(
                 this.applicationContext.getExpressionFactory());
     }
@@ -607,7 +606,7 @@ public class PageContextImpl extends PageContext {
 
             /*
              * Set request attributes. Do not set the
-             * javax.servlet.error.exception attribute here (instead, set in the
+             * jakarta.servlet.error.exception attribute here (instead, set in the
              * generated servlet code for the error page) in order to prevent
              * the ErrorReportValve, which is invoked as part of forwarding the
              * request to the error page, from throwing it if the response has
@@ -655,7 +654,7 @@ public class PageContextImpl extends PageContext {
 
             Throwable rootCause = null;
             if (t instanceof JspException || t instanceof ELException ||
-                    t instanceof javax.servlet.jsp.el.ELException) {
+                    t instanceof jakarta.servlet.jsp.el.ELException) {
                 rootCause = t.getCause();
             }
 
diff --git a/java/org/apache/jasper/runtime/ProtectedFunctionMapper.java b/java/org/apache/jasper/runtime/ProtectedFunctionMapper.java
index 59a6d7a..3901492 100644
--- a/java/org/apache/jasper/runtime/ProtectedFunctionMapper.java
+++ b/java/org/apache/jasper/runtime/ProtectedFunctionMapper.java
@@ -20,7 +20,7 @@ package org.apache.jasper.runtime;
 import java.lang.reflect.Method;
 import java.util.HashMap;
 
-import javax.servlet.jsp.el.FunctionMapper;
+import jakarta.servlet.jsp.el.FunctionMapper;
 
 /**
  * Maps EL functions to their Java method counterparts. Keeps the actual Method
diff --git a/java/org/apache/jasper/runtime/ServletResponseWrapperInclude.java b/java/org/apache/jasper/runtime/ServletResponseWrapperInclude.java
index 25b2b99..7f48f07 100644
--- a/java/org/apache/jasper/runtime/ServletResponseWrapperInclude.java
+++ b/java/org/apache/jasper/runtime/ServletResponseWrapperInclude.java
@@ -20,11 +20,11 @@ package org.apache.jasper.runtime;
 import java.io.IOException;
 import java.io.PrintWriter;
 
-import javax.servlet.ServletOutputStream;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpServletResponseWrapper;
-import javax.servlet.jsp.JspWriter;
+import jakarta.servlet.ServletOutputStream;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponseWrapper;
+import jakarta.servlet.jsp.JspWriter;
 
 /**
  * ServletResponseWrapper used by the JSP 'include' action.
diff --git a/java/org/apache/jasper/runtime/TagHandlerPool.java b/java/org/apache/jasper/runtime/TagHandlerPool.java
index 6a753cc..0b03870 100644
--- a/java/org/apache/jasper/runtime/TagHandlerPool.java
+++ b/java/org/apache/jasper/runtime/TagHandlerPool.java
@@ -17,9 +17,9 @@
 
 package org.apache.jasper.runtime;
 
-import javax.servlet.ServletConfig;
-import javax.servlet.jsp.JspException;
-import javax.servlet.jsp.tagext.Tag;
+import jakarta.servlet.ServletConfig;
+import jakarta.servlet.jsp.JspException;
+import jakarta.servlet.jsp.tagext.Tag;
 
 import org.apache.jasper.Constants;
 import org.apache.tomcat.InstanceManager;
diff --git a/java/org/apache/jasper/servlet/JasperInitializer.java b/java/org/apache/jasper/servlet/JasperInitializer.java
index 0fc5d3a..390c8b6 100644
--- a/java/org/apache/jasper/servlet/JasperInitializer.java
+++ b/java/org/apache/jasper/servlet/JasperInitializer.java
@@ -19,10 +19,10 @@ package org.apache.jasper.servlet;
 import java.io.IOException;
 import java.util.Set;
 
-import javax.servlet.ServletContainerInitializer;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-import javax.servlet.jsp.JspFactory;
+import jakarta.servlet.ServletContainerInitializer;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.jsp.JspFactory;
 
 import org.apache.jasper.Constants;
 import org.apache.jasper.compiler.Localizer;
diff --git a/java/org/apache/jasper/servlet/JspCServletContext.java b/java/org/apache/jasper/servlet/JspCServletContext.java
index f35d0d7..dec6674 100644
--- a/java/org/apache/jasper/servlet/JspCServletContext.java
+++ b/java/org/apache/jasper/servlet/JspCServletContext.java
@@ -37,17 +37,17 @@ import java.util.Set;
 import java.util.Vector;
 import java.util.concurrent.ConcurrentHashMap;
 
-import javax.servlet.Filter;
-import javax.servlet.FilterRegistration;
-import javax.servlet.FilterRegistration.Dynamic;
-import javax.servlet.RequestDispatcher;
-import javax.servlet.Servlet;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRegistration;
-import javax.servlet.SessionCookieConfig;
-import javax.servlet.SessionTrackingMode;
-import javax.servlet.descriptor.JspConfigDescriptor;
+import jakarta.servlet.Filter;
+import jakarta.servlet.FilterRegistration;
+import jakarta.servlet.FilterRegistration.Dynamic;
+import jakarta.servlet.RequestDispatcher;
+import jakarta.servlet.Servlet;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRegistration;
+import jakarta.servlet.SessionCookieConfig;
+import jakarta.servlet.SessionTrackingMode;
+import jakarta.servlet.descriptor.JspConfigDescriptor;
 
 import org.apache.jasper.Constants;
 import org.apache.jasper.JasperException;
@@ -678,7 +678,7 @@ public class JspCServletContext implements ServletContext {
 
 
     @Override
-    public javax.servlet.ServletRegistration.Dynamic addJspFile(String jspName, String jspFile) {
+    public jakarta.servlet.ServletRegistration.Dynamic addJspFile(String jspName, String jspFile) {
         return null;
     }
 
diff --git a/java/org/apache/jasper/servlet/JspServlet.java b/java/org/apache/jasper/servlet/JspServlet.java
index baba197..0fe5ca6 100644
--- a/java/org/apache/jasper/servlet/JspServlet.java
+++ b/java/org/apache/jasper/servlet/JspServlet.java
@@ -25,13 +25,13 @@ import java.security.AccessController;
 import java.security.PrivilegedActionException;
 import java.security.PrivilegedExceptionAction;
 
-import javax.servlet.RequestDispatcher;
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.RequestDispatcher;
+import jakarta.servlet.ServletConfig;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.apache.jasper.Constants;
 import org.apache.jasper.EmbeddedServletOptions;
@@ -294,7 +294,7 @@ public class JspServlet extends HttpServlet implements PeriodicEventListener {
                 /*
                  * Requested JSP has been target of
                  * RequestDispatcher.include(). Its path is assembled from the
-                 * relevant javax.servlet.include.* request attributes
+                 * relevant jakarta.servlet.include.* request attributes
                  */
                 String pathInfo = (String) request.getAttribute(
                         RequestDispatcher.INCLUDE_PATH_INFO);
diff --git a/java/org/apache/jasper/servlet/JspServletWrapper.java b/java/org/apache/jasper/servlet/JspServletWrapper.java
index dbfd731..e77511c 100644
--- a/java/org/apache/jasper/servlet/JspServletWrapper.java
+++ b/java/org/apache/jasper/servlet/JspServletWrapper.java
@@ -22,16 +22,16 @@ import java.io.IOException;
 import java.util.HashMap;
 import java.util.Map;
 
-import javax.servlet.RequestDispatcher;
-import javax.servlet.Servlet;
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-import javax.servlet.SingleThreadModel;
-import javax.servlet.UnavailableException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.jsp.tagext.TagInfo;
+import jakarta.servlet.RequestDispatcher;
+import jakarta.servlet.Servlet;
+import jakarta.servlet.ServletConfig;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.SingleThreadModel;
+import jakarta.servlet.UnavailableException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.jsp.tagext.TagInfo;
 
 import org.apache.jasper.JasperException;
 import org.apache.jasper.JspCompilationContext;
diff --git a/java/org/apache/jasper/servlet/TldPreScanned.java b/java/org/apache/jasper/servlet/TldPreScanned.java
index afda3ca..398e004 100644
--- a/java/org/apache/jasper/servlet/TldPreScanned.java
+++ b/java/org/apache/jasper/servlet/TldPreScanned.java
@@ -19,7 +19,7 @@ package org.apache.jasper.servlet;
 import java.net.URL;
 import java.util.Collection;
 
-import javax.servlet.ServletContext;
+import jakarta.servlet.ServletContext;
 
 import org.apache.jasper.compiler.Localizer;
 import org.apache.tomcat.util.descriptor.tld.TldResourcePath;
diff --git a/java/org/apache/jasper/servlet/TldScanner.java b/java/org/apache/jasper/servlet/TldScanner.java
index 5956ca2..747c5b3 100644
--- a/java/org/apache/jasper/servlet/TldScanner.java
+++ b/java/org/apache/jasper/servlet/TldScanner.java
@@ -32,9 +32,9 @@ import java.util.Locale;
 import java.util.Map;
 import java.util.Set;
 
-import javax.servlet.ServletContext;
-import javax.servlet.descriptor.JspConfigDescriptor;
-import javax.servlet.descriptor.TaglibDescriptor;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.descriptor.JspConfigDescriptor;
+import jakarta.servlet.descriptor.TaglibDescriptor;
 
 import org.apache.jasper.compiler.JarScannerFactory;
 import org.apache.jasper.compiler.Localizer;
diff --git a/java/org/apache/jasper/tagplugins/jstl/Util.java b/java/org/apache/jasper/tagplugins/jstl/Util.java
index 7b75d16..d14ae67 100644
--- a/java/org/apache/jasper/tagplugins/jstl/Util.java
+++ b/java/org/apache/jasper/tagplugins/jstl/Util.java
@@ -25,14 +25,14 @@ import java.io.StringWriter;
 import java.io.UnsupportedEncodingException;
 import java.util.Locale;
 
-import javax.servlet.ServletOutputStream;
-import javax.servlet.WriteListener;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpServletResponseWrapper;
-import javax.servlet.jsp.JspException;
-import javax.servlet.jsp.JspTagException;
-import javax.servlet.jsp.PageContext;
+import jakarta.servlet.ServletOutputStream;
+import jakarta.servlet.WriteListener;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponseWrapper;
+import jakarta.servlet.jsp.JspException;
+import jakarta.servlet.jsp.JspTagException;
+import jakarta.servlet.jsp.PageContext;
 
 import org.apache.jasper.Constants;
 import org.apache.jasper.compiler.Localizer;
diff --git a/java/org/apache/jasper/tagplugins/jstl/core/Out.java b/java/org/apache/jasper/tagplugins/jstl/core/Out.java
index dad75c3..a908192 100644
--- a/java/org/apache/jasper/tagplugins/jstl/core/Out.java
+++ b/java/org/apache/jasper/tagplugins/jstl/core/Out.java
@@ -21,7 +21,7 @@ package org.apache.jasper.tagplugins.jstl.core;
 import java.io.IOException;
 import java.io.Reader;
 
-import javax.servlet.jsp.JspWriter;
+import jakarta.servlet.jsp.JspWriter;
 
 import org.apache.jasper.compiler.tagplugin.TagPlugin;
 import org.apache.jasper.compiler.tagplugin.TagPluginContext;
diff --git a/java/org/apache/tomcat/JarScanner.java b/java/org/apache/tomcat/JarScanner.java
index 27a8f6d..c5ca8a9 100644
--- a/java/org/apache/tomcat/JarScanner.java
+++ b/java/org/apache/tomcat/JarScanner.java
@@ -16,7 +16,7 @@
  */
 package org.apache.tomcat;
 
-import javax.servlet.ServletContext;
+import jakarta.servlet.ServletContext;
 
 /**
  * Scans a web application and classloader hierarchy for JAR files. Uses
diff --git a/java/org/apache/tomcat/util/descriptor/DigesterFactory.java b/java/org/apache/tomcat/util/descriptor/DigesterFactory.java
index 2947033..d920a44 100644
--- a/java/org/apache/tomcat/util/descriptor/DigesterFactory.java
+++ b/java/org/apache/tomcat/util/descriptor/DigesterFactory.java
@@ -21,7 +21,7 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 
-import javax.servlet.ServletContext;
+import jakarta.servlet.ServletContext;
 
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
@@ -46,7 +46,7 @@ public class DigesterFactory {
         CLASS_SERVLET_CONTEXT = ServletContext.class;
         Class<?> jspContext = null;
         try {
-            jspContext = Class.forName("javax.servlet.jsp.JspContext");
+            jspContext = Class.forName("jakarta.servlet.jsp.JspContext");
         } catch (ClassNotFoundException e) {
             // Ignore - JSP API is not present.
         }
diff --git a/java/org/apache/tomcat/util/descriptor/tagplugin/TagPluginParser.java b/java/org/apache/tomcat/util/descriptor/tagplugin/TagPluginParser.java
index dde2d37..d2d75c6 100644
--- a/java/org/apache/tomcat/util/descriptor/tagplugin/TagPluginParser.java
+++ b/java/org/apache/tomcat/util/descriptor/tagplugin/TagPluginParser.java
@@ -22,7 +22,7 @@ import java.net.URL;
 import java.util.HashMap;
 import java.util.Map;
 
-import javax.servlet.ServletContext;
+import jakarta.servlet.ServletContext;
 
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
diff --git a/java/org/apache/tomcat/util/descriptor/tld/TagXml.java b/java/org/apache/tomcat/util/descriptor/tld/TagXml.java
index d025aab..60aa99d 100644
--- a/java/org/apache/tomcat/util/descriptor/tld/TagXml.java
+++ b/java/org/apache/tomcat/util/descriptor/tld/TagXml.java
@@ -19,9 +19,9 @@ package org.apache.tomcat.util.descriptor.tld;
 import java.util.ArrayList;
 import java.util.List;
 
-import javax.servlet.jsp.tagext.TagAttributeInfo;
-import javax.servlet.jsp.tagext.TagInfo;
-import javax.servlet.jsp.tagext.TagVariableInfo;
+import jakarta.servlet.jsp.tagext.TagAttributeInfo;
+import jakarta.servlet.jsp.tagext.TagInfo;
+import jakarta.servlet.jsp.tagext.TagVariableInfo;
 
 /**
  * Model of a tag define in a tag library descriptor.
diff --git a/java/org/apache/tomcat/util/descriptor/tld/TaglibXml.java b/java/org/apache/tomcat/util/descriptor/tld/TaglibXml.java
index 41acd1e..2a45c51 100644
--- a/java/org/apache/tomcat/util/descriptor/tld/TaglibXml.java
+++ b/java/org/apache/tomcat/util/descriptor/tld/TaglibXml.java
@@ -19,7 +19,7 @@ package org.apache.tomcat.util.descriptor.tld;
 import java.util.ArrayList;
 import java.util.List;
 
-import javax.servlet.jsp.tagext.FunctionInfo;
+import jakarta.servlet.jsp.tagext.FunctionInfo;
 
 /**
  * Common representation of a Tag Library Descriptor (TLD) XML file.
diff --git a/java/org/apache/tomcat/util/descriptor/tld/TldRuleSet.java b/java/org/apache/tomcat/util/descriptor/tld/TldRuleSet.java
index 3607e5e..4f43a47 100644
--- a/java/org/apache/tomcat/util/descriptor/tld/TldRuleSet.java
+++ b/java/org/apache/tomcat/util/descriptor/tld/TldRuleSet.java
@@ -18,9 +18,9 @@ package org.apache.tomcat.util.descriptor.tld;
 
 import java.lang.reflect.Method;
 
-import javax.servlet.jsp.tagext.TagAttributeInfo;
-import javax.servlet.jsp.tagext.TagVariableInfo;
-import javax.servlet.jsp.tagext.VariableInfo;
+import jakarta.servlet.jsp.tagext.TagAttributeInfo;
+import jakarta.servlet.jsp.tagext.TagVariableInfo;
+import jakarta.servlet.jsp.tagext.VariableInfo;
 
 import org.apache.tomcat.util.digester.Digester;
 import org.apache.tomcat.util.digester.Rule;
@@ -249,7 +249,7 @@ public class TldRuleSet implements RuleSet {
         public TagAttributeInfo toTagAttributeInfo() {
             if (fragment) {
                 // JSP8.5.2: for a fragment type is fixed and rexprvalue is true
-                type = "javax.servlet.jsp.tagext.JspFragment";
+                type = "jakarta.servlet.jsp.tagext.JspFragment";
                 requestTime = true;
             } else if (deferredValue) {
                 type = "jakarta.el.ValueExpression";
diff --git a/java/org/apache/tomcat/util/descriptor/web/FilterDef.java b/java/org/apache/tomcat/util/descriptor/web/FilterDef.java
index 8d70c79..30fd247 100644
--- a/java/org/apache/tomcat/util/descriptor/web/FilterDef.java
+++ b/java/org/apache/tomcat/util/descriptor/web/FilterDef.java
@@ -20,7 +20,7 @@ import java.io.Serializable;
 import java.util.HashMap;
 import java.util.Map;
 
-import javax.servlet.Filter;
+import jakarta.servlet.Filter;
 
 import org.apache.tomcat.util.res.StringManager;
 
diff --git a/java/org/apache/tomcat/util/descriptor/web/FilterMap.java b/java/org/apache/tomcat/util/descriptor/web/FilterMap.java
index c432d95..868ef66 100644
--- a/java/org/apache/tomcat/util/descriptor/web/FilterMap.java
+++ b/java/org/apache/tomcat/util/descriptor/web/FilterMap.java
@@ -21,7 +21,7 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Locale;
 
-import javax.servlet.DispatcherType;
+import jakarta.servlet.DispatcherType;
 
 import org.apache.tomcat.util.buf.UDecoder;
 
diff --git a/java/org/apache/tomcat/util/descriptor/web/JspConfigDescriptorImpl.java b/java/org/apache/tomcat/util/descriptor/web/JspConfigDescriptorImpl.java
index 0fe4cf1..3418225 100644
--- a/java/org/apache/tomcat/util/descriptor/web/JspConfigDescriptorImpl.java
+++ b/java/org/apache/tomcat/util/descriptor/web/JspConfigDescriptorImpl.java
@@ -19,9 +19,9 @@ package org.apache.tomcat.util.descriptor.web;
 import java.util.ArrayList;
 import java.util.Collection;
 
-import javax.servlet.descriptor.JspConfigDescriptor;
-import javax.servlet.descriptor.JspPropertyGroupDescriptor;
-import javax.servlet.descriptor.TaglibDescriptor;
+import jakarta.servlet.descriptor.JspConfigDescriptor;
+import jakarta.servlet.descriptor.JspPropertyGroupDescriptor;
+import jakarta.servlet.descriptor.TaglibDescriptor;
 
 public class JspConfigDescriptorImpl implements JspConfigDescriptor {
 
diff --git a/java/org/apache/tomcat/util/descriptor/web/JspPropertyGroupDescriptorImpl.java b/java/org/apache/tomcat/util/descriptor/web/JspPropertyGroupDescriptorImpl.java
index 50d1cc1..4785ee2 100644
--- a/java/org/apache/tomcat/util/descriptor/web/JspPropertyGroupDescriptorImpl.java
+++ b/java/org/apache/tomcat/util/descriptor/web/JspPropertyGroupDescriptorImpl.java
@@ -19,7 +19,7 @@ package org.apache.tomcat.util.descriptor.web;
 import java.util.ArrayList;
 import java.util.Collection;
 
-import javax.servlet.descriptor.JspPropertyGroupDescriptor;
+import jakarta.servlet.descriptor.JspPropertyGroupDescriptor;
 
 
 
diff --git a/java/org/apache/tomcat/util/descriptor/web/SecurityConstraint.java b/java/org/apache/tomcat/util/descriptor/web/SecurityConstraint.java
index 66e033d..3cb06da 100644
--- a/java/org/apache/tomcat/util/descriptor/web/SecurityConstraint.java
+++ b/java/org/apache/tomcat/util/descriptor/web/SecurityConstraint.java
@@ -26,11 +26,11 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
-import javax.servlet.HttpConstraintElement;
-import javax.servlet.HttpMethodConstraintElement;
... 5859 lines suppressed ...


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


[tomcat] 07/18: Rename "javax.persistence.*" to "jakarta.persistence.*"

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tomcat.git

commit d6f305e87360be9a0c32cb9837132bef00edb92a
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Thu Nov 28 13:50:39 2019 +0000

    Rename "javax.persistence.*" to "jakarta.persistence.*"
---
 java/{javax => jakarta}/persistence/PersistenceContext.java     | 2 +-
 java/{javax => jakarta}/persistence/PersistenceContextType.java | 2 +-
 java/{javax => jakarta}/persistence/PersistenceContexts.java    | 2 +-
 java/{javax => jakarta}/persistence/PersistenceProperty.java    | 2 +-
 java/{javax => jakarta}/persistence/PersistenceUnit.java        | 2 +-
 java/{javax => jakarta}/persistence/PersistenceUnits.java       | 2 +-
 java/{javax => jakarta}/persistence/SynchronizationType.java    | 2 +-
 java/org/apache/catalina/core/DefaultInstanceManager.java       | 6 +++---
 res/checkstyle/jakarta-import-control.xml                       | 3 +++
 res/checkstyle/javax-import-control.xml                         | 3 ---
 res/checkstyle/org-import-control.xml                           | 8 ++++----
 11 files changed, 17 insertions(+), 17 deletions(-)

diff --git a/java/javax/persistence/PersistenceContext.java b/java/jakarta/persistence/PersistenceContext.java
similarity index 97%
rename from java/javax/persistence/PersistenceContext.java
rename to java/jakarta/persistence/PersistenceContext.java
index e273953..f53b6b2 100644
--- a/java/javax/persistence/PersistenceContext.java
+++ b/java/jakarta/persistence/PersistenceContext.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.persistence;
+package jakarta.persistence;
 
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;
diff --git a/java/javax/persistence/PersistenceContextType.java b/java/jakarta/persistence/PersistenceContextType.java
similarity index 96%
rename from java/javax/persistence/PersistenceContextType.java
rename to java/jakarta/persistence/PersistenceContextType.java
index 8b287fe..49e4120 100644
--- a/java/javax/persistence/PersistenceContextType.java
+++ b/java/jakarta/persistence/PersistenceContextType.java
@@ -16,7 +16,7 @@
  */
 
 
-package javax.persistence;
+package jakarta.persistence;
 
 public enum PersistenceContextType {
     TRANSACTION,
diff --git a/java/javax/persistence/PersistenceContexts.java b/java/jakarta/persistence/PersistenceContexts.java
similarity index 97%
rename from java/javax/persistence/PersistenceContexts.java
rename to java/jakarta/persistence/PersistenceContexts.java
index cd9abf2..7e3d01f 100644
--- a/java/javax/persistence/PersistenceContexts.java
+++ b/java/jakarta/persistence/PersistenceContexts.java
@@ -16,7 +16,7 @@
  */
 
 
-package javax.persistence;
+package jakarta.persistence;
 
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;
diff --git a/java/javax/persistence/PersistenceProperty.java b/java/jakarta/persistence/PersistenceProperty.java
similarity index 97%
rename from java/javax/persistence/PersistenceProperty.java
rename to java/jakarta/persistence/PersistenceProperty.java
index 20a42c5..46943a5 100644
--- a/java/javax/persistence/PersistenceProperty.java
+++ b/java/jakarta/persistence/PersistenceProperty.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package javax.persistence;
+package jakarta.persistence;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
diff --git a/java/javax/persistence/PersistenceUnit.java b/java/jakarta/persistence/PersistenceUnit.java
similarity index 97%
rename from java/javax/persistence/PersistenceUnit.java
rename to java/jakarta/persistence/PersistenceUnit.java
index 9f34198..cdbee56 100644
--- a/java/javax/persistence/PersistenceUnit.java
+++ b/java/jakarta/persistence/PersistenceUnit.java
@@ -16,7 +16,7 @@
  */
 
 
-package javax.persistence;
+package jakarta.persistence;
 
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;
diff --git a/java/javax/persistence/PersistenceUnits.java b/java/jakarta/persistence/PersistenceUnits.java
similarity index 97%
rename from java/javax/persistence/PersistenceUnits.java
rename to java/jakarta/persistence/PersistenceUnits.java
index 34084ac..991d83f 100644
--- a/java/javax/persistence/PersistenceUnits.java
+++ b/java/jakarta/persistence/PersistenceUnits.java
@@ -16,7 +16,7 @@
  */
 
 
-package javax.persistence;
+package jakarta.persistence;
 
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;
diff --git a/java/javax/persistence/SynchronizationType.java b/java/jakarta/persistence/SynchronizationType.java
similarity index 96%
rename from java/javax/persistence/SynchronizationType.java
rename to java/jakarta/persistence/SynchronizationType.java
index ea55b05..b1d5c1a 100644
--- a/java/javax/persistence/SynchronizationType.java
+++ b/java/jakarta/persistence/SynchronizationType.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package javax.persistence;
+package jakarta.persistence;
 
 public enum SynchronizationType {
     SYNCHRONIZED,
diff --git a/java/org/apache/catalina/core/DefaultInstanceManager.java b/java/org/apache/catalina/core/DefaultInstanceManager.java
index 3f46ee1..90238c4 100644
--- a/java/org/apache/catalina/core/DefaultInstanceManager.java
+++ b/java/org/apache/catalina/core/DefaultInstanceManager.java
@@ -37,14 +37,14 @@ import java.util.Set;
 
 import javax.naming.Context;
 import javax.naming.NamingException;
-import javax.persistence.PersistenceContext;
-import javax.persistence.PersistenceUnit;
 import javax.xml.ws.WebServiceRef;
 
 import jakarta.annotation.PostConstruct;
 import jakarta.annotation.PreDestroy;
 import jakarta.annotation.Resource;
 import jakarta.ejb.EJB;
+import jakarta.persistence.PersistenceContext;
+import jakarta.persistence.PersistenceUnit;
 
 import org.apache.catalina.ContainerServlet;
 import org.apache.catalina.Globals;
@@ -83,7 +83,7 @@ public class DefaultInstanceManager implements InstanceManager {
 
         clazz = null;
         try {
-            clazz = Class.forName("javax.persistence.PersistenceContext");
+            clazz = Class.forName("jakarta.persistence.PersistenceContext");
         } catch (ClassNotFoundException cnfe) {
             // Expected
         }
diff --git a/res/checkstyle/jakarta-import-control.xml b/res/checkstyle/jakarta-import-control.xml
index cc86b88..fb82d16 100644
--- a/res/checkstyle/jakarta-import-control.xml
+++ b/res/checkstyle/jakarta-import-control.xml
@@ -33,4 +33,7 @@
   <subpackage name="mail">
     <allow pkg="jakarta.mail"/>
   </subpackage>
+  <subpackage name="persistence">
+    <allow pkg="jakarta.persistence"/>
+  </subpackage>
 </import-control>
\ No newline at end of file
diff --git a/res/checkstyle/javax-import-control.xml b/res/checkstyle/javax-import-control.xml
index b7906af..84c64b7 100644
--- a/res/checkstyle/javax-import-control.xml
+++ b/res/checkstyle/javax-import-control.xml
@@ -21,9 +21,6 @@
 
 <import-control pkg="javax">
   <allow pkg="java"/>
-  <subpackage name="persistence">
-    <allow pkg="javax.persistence"/>
-  </subpackage>
   <subpackage name="security">
     <subpackage name="auth">
       <subpackage name="message">
diff --git a/res/checkstyle/org-import-control.xml b/res/checkstyle/org-import-control.xml
index a76bb1c..55c6cc0 100644
--- a/res/checkstyle/org-import-control.xml
+++ b/res/checkstyle/org-import-control.xml
@@ -38,7 +38,7 @@
   <subpackage name="catalina">
     <allow pkg="jakarta.annotation"/>
     <allow pkg="jakarta.ejb"/>
-    <allow pkg="javax.persistence"/>
+    <allow pkg="jakarta.persistence"/>
     <allow pkg="javax.servlet"/>
     <allow pkg="org.apache.catalina"/>
     <disallow pkg="org.apache.catalina.ha"/>
@@ -52,7 +52,7 @@
       <allow class="org.apache.tomcat.util.Base64"/>
       <disallow pkg="jakarta.annotation"/>
       <disallow pkg="jakarta.ejb"/>
-      <disallow pkg="javax.persistence"/>
+      <disallow pkg="jakarta.persistence"/>
       <disallow pkg="javax.servlet"/>
       <disallow pkg="org.apache.coyote"/>
       <disallow pkg="org.apache.juli"/>
@@ -61,7 +61,7 @@
     <subpackage name="ha">
       <disallow pkg="jakarta.annotation"/>
       <disallow pkg="jakarta.ejb"/>
-      <disallow pkg="javax.persistence"/>
+      <disallow pkg="jakarta.persistence"/>
       <disallow pkg="org.apache.coyote"/>
       <disallow pkg="org.apache.naming"/>
       <allow pkg="org.apache.catalina.ha"/>
@@ -74,7 +74,7 @@
     <subpackage name="tribes">
       <disallow pkg="jakarta.annotation"/>
       <disallow pkg="jakarta.ejb"/>
-      <disallow pkg="javax.persistence"/>
+      <disallow pkg="jakarta.persistence"/>
       <disallow pkg="javax.servlet"/>
       <disallow pkg="org\.apache\.catalina(?!\.tribes).*" regex="true"/>
       <disallow pkg="org.apache.coyote"/>


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


[tomcat] 14/18: Update Servlet version returned by API

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tomcat.git

commit 05da26a0cf2cc8ade3cfc7a2be16aeb42f5b929f
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Mon Jan 13 11:33:43 2020 +0000

    Update Servlet version returned by API
---
 java/jakarta/servlet/ServletContext.java     | 6 +++---
 java/org/apache/catalina/core/Constants.java | 2 +-
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/java/jakarta/servlet/ServletContext.java b/java/jakarta/servlet/ServletContext.java
index 95191f9..82427ca 100644
--- a/java/jakarta/servlet/ServletContext.java
+++ b/java/jakarta/servlet/ServletContext.java
@@ -92,8 +92,8 @@ public interface ServletContext {
 
     /**
      * Returns the major version of the Java Servlet API that this servlet
-     * container supports. All implementations that comply with Version 4.0 must
-     * have this method return the integer 4.
+     * container supports. All implementations that comply with Version 5.0 must
+     * have this method return the integer 5.
      *
      * @return 4
      */
@@ -101,7 +101,7 @@ public interface ServletContext {
 
     /**
      * Returns the minor version of the Servlet API that this servlet container
-     * supports. All implementations that comply with Version 4.0 must have this
+     * supports. All implementations that comply with Version 5.0 must have this
      * method return the integer 0.
      *
      * @return 0
diff --git a/java/org/apache/catalina/core/Constants.java b/java/org/apache/catalina/core/Constants.java
index 197e0c6..6d6f80e 100644
--- a/java/org/apache/catalina/core/Constants.java
+++ b/java/org/apache/catalina/core/Constants.java
@@ -19,7 +19,7 @@ package org.apache.catalina.core;
 public class Constants {
 
     public static final String Package = "org.apache.catalina.core";
-    public static final int MAJOR_VERSION = 4;
+    public static final int MAJOR_VERSION = 5;
     public static final int MINOR_VERSION = 0;
 
     public static final String JSP_SERVLET_CLASS = "org.apache.jasper.servlet.JspServlet";


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


[tomcat] 13/18: Update powered by header

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tomcat.git

commit c9fa0300e899a61fc0f759e9797c5760360542f8
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Mon Jan 13 11:31:56 2020 +0000

    Update powered by header
---
 java/org/apache/catalina/connector/CoyoteAdapter.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/java/org/apache/catalina/connector/CoyoteAdapter.java b/java/org/apache/catalina/connector/CoyoteAdapter.java
index 0db815b..1a1430b 100644
--- a/java/org/apache/catalina/connector/CoyoteAdapter.java
+++ b/java/org/apache/catalina/connector/CoyoteAdapter.java
@@ -67,7 +67,7 @@ public class CoyoteAdapter implements Adapter {
 
     // -------------------------------------------------------------- Constants
 
-    private static final String POWERED_BY = "Servlet/4.0 JSP/2.3 " +
+    private static final String POWERED_BY = "Servlet/5.0 JSP/3.0 " +
             "(" + ServerInfo.getServerInfo() + " Java/" +
             System.getProperty("java.vm.vendor") + "/" +
             System.getProperty("java.runtime.version") + ")";


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


[tomcat] 15/18: Update referenced version in comments

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tomcat.git

commit 4f865300158761c0b9a5fb2a83119015c56f289d
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Mon Jan 13 11:34:15 2020 +0000

    Update referenced version in comments
---
 java/jakarta/el/ImportHandler.java | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/java/jakarta/el/ImportHandler.java b/java/jakarta/el/ImportHandler.java
index bfda5b4..1e7e9b9 100644
--- a/java/jakarta/el/ImportHandler.java
+++ b/java/jakarta/el/ImportHandler.java
@@ -34,7 +34,7 @@ public class ImportHandler {
     private static final Map<String,Set<String>> standardPackages = new HashMap<>();
 
     static {
-        // Servlet 4.0
+        // Servlet 5.0
         Set<String> servletClassNames = new HashSet<>();
         // Interfaces
         servletClassNames.add("AsyncContext");
@@ -87,7 +87,7 @@ public class ImportHandler {
         servletClassNames.add("UnavailableException");
         standardPackages.put("jakarta.servlet", servletClassNames);
 
-        // Servlet 4.0
+        // Servlet 5.0
         Set<String> servletHttpClassNames = new HashSet<>();
         // Interfaces
         servletHttpClassNames.add("HttpServletMapping");
@@ -117,7 +117,7 @@ public class ImportHandler {
         servletHttpClassNames.add("MappingMatch");
         standardPackages.put("jakarta.servlet.http", servletHttpClassNames);
 
-        // JSP 2.3
+        // JSP 3.0
         Set<String> servletJspClassNames = new HashSet<>();
         //Interfaces
         servletJspClassNames.add("HttpJspPage");


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


[tomcat] 18/18: Update more version references

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tomcat.git

commit 782a2ba96778ce671937dc8704559e0895a52025
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Mon Jan 13 11:52:45 2020 +0000

    Update more version references
---
 webapps/docs/class-loader-howto.xml | 12 ++++++------
 webapps/docs/index.xml              |  6 +++---
 webapps/docs/project.xml            | 12 ++++++------
 3 files changed, 15 insertions(+), 15 deletions(-)

diff --git a/webapps/docs/class-loader-howto.xml b/webapps/docs/class-loader-howto.xml
index eecbc01..b057de1 100644
--- a/webapps/docs/class-loader-howto.xml
+++ b/webapps/docs/class-loader-howto.xml
@@ -130,7 +130,7 @@ loaders as it is initialized:</p>
     </ul>
     <p>By default, this includes the following:</p>
     <ul>
-    <li><em>annotations-api.jar</em> &#8212; JavaEE annotations classes.</li>
+    <li><em>annotations-api.jar</em> &#8212; Jakarta Annotations 2.0 classes.</li>
     <li><em>catalina.jar</em> &#8212; Implementation of the Catalina servlet
         container portion of Tomcat.</li>
     <li><em>catalina-ant.jar</em> &#8212; Tomcat Catalina Ant tasks.</li>
@@ -140,11 +140,11 @@ loaders as it is initialized:</p>
         configuration files from current state</li>
     <li><em>catalina-tribes.jar</em> &#8212; Group communication package.</li>
     <li><em>ecj-*.jar</em> &#8212; Eclipse JDT Java compiler.</li>
-    <li><em>el-api.jar</em> &#8212; EL 3.0 API.</li>
+    <li><em>el-api.jar</em> &#8212; EL 4.0 API.</li>
     <li><em>jasper.jar</em> &#8212; Tomcat Jasper JSP Compiler and Runtime.</li>
     <li><em>jasper-el.jar</em> &#8212; Tomcat Jasper EL implementation.</li>
-    <li><em>jsp-api.jar</em> &#8212; JSP 2.3 API.</li>
-    <li><em>servlet-api.jar</em> &#8212; Servlet 4.0 API.</li>
+    <li><em>jsp-api.jar</em> &#8212; JSP 3.0 API.</li>
+    <li><em>servlet-api.jar</em> &#8212; Servlet 5.0 API.</li>
     <li><em>tomcat-api.jar</em> &#8212; Several interfaces defined by Tomcat.</li>
     <li><em>tomcat-coyote.jar</em> &#8212; Tomcat connectors and utility classes.</li>
     <li><em>tomcat-dbcp.jar</em> &#8212; Database connection pool
@@ -159,8 +159,8 @@ loaders as it is initialized:</p>
         <a href="jdbc-pool.html">documentation</a> for more details.</li>
     <li><em>tomcat-util.jar</em> &#8212; Common classes used by various components of
         Apache Tomcat.</li>
-    <li><em>tomcat-websocket.jar</em> &#8212; WebSocket 1.1 implementation</li>
-    <li><em>websocket-api.jar</em> &#8212; WebSocket 1.1 API</li>
+    <li><em>tomcat-websocket.jar</em> &#8212; WebSocket 2.0 implementation</li>
+    <li><em>websocket-api.jar</em> &#8212; WebSocket 2.0 API</li>
     </ul></li>
 <li><p><strong>WebappX</strong> &#8212; A class loader is created for each web
     application that is deployed in a single Tomcat instance.  All unpacked
diff --git a/webapps/docs/index.xml b/webapps/docs/index.xml
index e72c8e8..e23bbf1 100644
--- a/webapps/docs/index.xml
+++ b/webapps/docs/index.xml
@@ -35,9 +35,9 @@
 
 <p>This is the top-level entry point of the documentation bundle for the
 <strong>Apache Tomcat</strong> Servlet/JSP container.  Apache Tomcat version
-<version-major-minor/> implements the Servlet 4.0 and JavaServer Pages 2.3
-<a href="https://wiki.apache.org/tomcat/Specifications">specifications</a> from the
-<a href="https://www.jcp.org">Java Community Process</a>, and includes many
+<version-major-minor/> implements the Servlet 5.0 and JavaServer Pages 3.0
+<a href="https://wiki.apache.org/tomcat/Specifications">specifications</a> from
+<a href="https://jakarta.ee/">Jakarta EE</a>, and includes many
 additional features that make it a useful platform for developing and deploying
 web applications and web services.</p>
 
diff --git a/webapps/docs/project.xml b/webapps/docs/project.xml
index 2884849..9c6fde9 100644
--- a/webapps/docs/project.xml
+++ b/webapps/docs/project.xml
@@ -82,13 +82,13 @@
         <item name="Release Notes"         href="RELEASE-NOTES.txt"/>
         <item name="Configuration"         href="config/index.html"/>
         <item name="Tomcat Javadocs"       href="api/index.html"/>
-        <item name="Servlet 4.0 Javadocs"  href="servletapi/index.html"/>
-        <item name="JSP 2.3 Javadocs"      href="jspapi/index.html"/>
-        <item name="EL 3.0 Javadocs"       href="elapi/index.html"/>
-        <item name="WebSocket 1.1 Javadocs"
+        <item name="Servlet 5.0 Javadocs"  href="servletapi/index.html"/>
+        <item name="JSP 3.0 Javadocs"      href="jspapi/index.html"/>
+        <item name="EL 4.0 Javadocs"       href="elapi/index.html"/>
+        <item name="WebSocket 2.0 Javadocs"
               href="websocketapi/index.html"/>
-        <item name="JASPIC 1.1 Javadocs"   href="jaspicapi/index.html"/>
-        <item name="Common Annotations 1.3 Javadocs"
+        <item name="JASPIC 2.0 Javadocs"   href="jaspicapi/index.html"/>
+        <item name="Annotations 2.0 Javadocs"
               href="annotationapi/index.html"/>
         <item name="JK 1.2 Documentation"
               href="https://tomcat.apache.org/connectors-doc/"/>


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


[tomcat] 12/18: Update spec versions in MANIFESTs and parameterise from build script

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tomcat.git

commit aade5ed3fcf16e7dd630a1ba725d089c7fceb747
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Mon Jan 13 11:26:11 2020 +0000

    Update spec versions in MANIFESTs and parameterise from build script
---
 build.xml                                 | 18 ++++++++++++------
 res/META-INF/annotations-api.jar.manifest |  8 ++++----
 res/META-INF/el-api.jar.manifest          | 10 +++++-----
 res/META-INF/jaspic-api.jar.manifest      |  8 ++++----
 res/META-INF/jsp-api.jar.manifest         |  8 ++++----
 res/META-INF/servlet-api.jar.manifest     |  8 ++++----
 res/META-INF/websocket-api.jar.manifest   |  8 ++++----
 7 files changed, 37 insertions(+), 31 deletions(-)

diff --git a/build.xml b/build.xml
index 1e12c7c..969698e 100644
--- a/build.xml
+++ b/build.xml
@@ -53,17 +53,17 @@
 
   <!-- Exact spec versions (for the manifests etc.) -->
   <property name="servlet.spec.version"    value="5.0" />
-  <property name="servlet.revision"        value="M1" />
+  <property name="servlet.revision"        value="0-M1" />
   <property name="jsp.spec.version"        value="3.0" />
-  <property name="jsp.revision"            value="M1" />
+  <property name="jsp.revision"            value="0-M1" />
   <property name="el.spec.version"         value="4.0" />
-  <property name="el.revision"             value="M1" />
+  <property name="el.revision"             value="0-M1" />
   <property name="websocket.spec.version"  value="2.0" />
-  <property name="websocket.revision"      value="M1" />
+  <property name="websocket.revision"      value="0-M1" />
   <property name="jaspic.spec.version"     value="2.0" />
-  <property name="jaspic.revision"         value="M1" />
+  <property name="jaspic.revision"         value="0-M1" />
   <property name="annotation.spec.version" value="2.0" />
-  <property name="annotation.revision"     value="M1" />
+  <property name="annotation.revision"     value="0-M1" />
 
   <!-- Release artifact base names -->
   <property name="final.name"            value="${project}-${version}" />
@@ -747,11 +747,17 @@
     <!-- Filtering tokens for JAR manifests-->
     <filter token="source.jdk" value="${compile.source}"/>
     <filter token="target.jdk" value="${compile.target}"/>
+    <filter token="servlet.spec.version" value="${servlet.spec.version}"/>
     <filter token="servlet.revision" value="${servlet.revision}"/>
+    <filter token="jsp.spec.version" value="${jsp.spec.version}"/>
     <filter token="jsp.revision" value="${jsp.revision}"/>
+    <filter token="el.spec.version" value="${el.spec.version}"/>
     <filter token="el.revision" value="${el.revision}"/>
+    <filter token="websocket.spec.version" value="${websocket.spec.version}"/>
     <filter token="websocket.revision" value="${websocket.revision}"/>
+    <filter token="jaspic.spec.version" value="${jaspic.spec.version}"/>
     <filter token="jaspic.revision" value="${jaspic.revision}"/>
+    <filter token="annotation.spec.version" value="${annotation.spec.version}"/>
     <filter token="annotation.revision" value="${annotation.revision}"/>
 
     <mkdir dir="${tomcat.manifests}" />
diff --git a/res/META-INF/annotations-api.jar.manifest b/res/META-INF/annotations-api.jar.manifest
index 4b43993..dbb3410 100644
--- a/res/META-INF/annotations-api.jar.manifest
+++ b/res/META-INF/annotations-api.jar.manifest
@@ -3,9 +3,9 @@ X-Compile-Source-JDK: @source.jdk@
 X-Compile-Target-JDK: @target.jdk@
 
 Name: jakarta/annotation/
+Specification-Title: Jakarta Annotations
+Specification-Version: @annotation.spec.version@
+Specification-Vendor: Eclipse Foundation
 Implementation-Title: jakarta.annotation
+Implementation-Version: @annotation.spec.version@.@annotation.revision@
 Implementation-Vendor: Apache Software Foundation
-Implementation-Version: 1.3.@annotation.revision@
-Specification-Title: Common Annotations
-Specification-Vendor: Oracle Corporation
-Specification-Version: 1.3
diff --git a/res/META-INF/el-api.jar.manifest b/res/META-INF/el-api.jar.manifest
index 63a6728..d253f13 100644
--- a/res/META-INF/el-api.jar.manifest
+++ b/res/META-INF/el-api.jar.manifest
@@ -3,9 +3,9 @@ X-Compile-Source-JDK: @source.jdk@
 X-Compile-Target-JDK: @target.jdk@
 
 Name: jakarta/el/
-Specification-Title: Expression Language
-Specification-Version: 3.0
-Specification-Vendor: Sun Microsystems, Inc.
-Implementation-Title: jakarta.el
-Implementation-Version: 3.0.@el.revision@
+Specification-Title: Jakarta Expression Language
+Specification-Version: @el.spec.version@
+Specification-Vendor: Eclipse Foundation
+Implementation-Title: jakarta.annotation
+Implementation-Version: @el.spec.version@.@el.revision@
 Implementation-Vendor: Apache Software Foundation
diff --git a/res/META-INF/jaspic-api.jar.manifest b/res/META-INF/jaspic-api.jar.manifest
index a453d16..d315b99 100644
--- a/res/META-INF/jaspic-api.jar.manifest
+++ b/res/META-INF/jaspic-api.jar.manifest
@@ -4,8 +4,8 @@ X-Compile-Target-JDK: @target.jdk@
 
 Name: jakarta/security/auth/message
 Specification-Title: Jakarta Authentication SPI for Containers
-Specification-Version: 1.1
-Specification-Vendor: Sun Microsystems, Inc.
+Specification-Version: @jaspic.spec.version@
+Specification-Vendor: Eclipse Foundation
 Implementation-Title: jakarta.security.auth.message
-Implementation-Version: 1.1.@jaspic.revision@
-Implementation-Vendor: Apache Software Foundation
\ No newline at end of file
+Implementation-Version: @jaspic.spec.version@.@jaspic.revision@
+Implementation-Vendor: Apache Software Foundation
diff --git a/res/META-INF/jsp-api.jar.manifest b/res/META-INF/jsp-api.jar.manifest
index b21c7f1..8156ef2 100644
--- a/res/META-INF/jsp-api.jar.manifest
+++ b/res/META-INF/jsp-api.jar.manifest
@@ -3,9 +3,9 @@ X-Compile-Source-JDK: @source.jdk@
 X-Compile-Target-JDK: @target.jdk@
 
 Name: jakarta/servlet/jsp/
-Specification-Title: Java API for JavaServer Pages
-Specification-Version: 2.3
-Specification-Vendor: Sun Microsystems, Inc.
+Specification-Title: Jakarta Server Pages
+Specification-Version: @jsp.spec.version@
+Specification-Vendor: Eclipse Foundation
 Implementation-Title: jakarta.servlet.jsp
-Implementation-Version: 2.3.@jsp.revision@
+Implementation-Version: @jsp.spec.version@.@jsp.revision@
 Implementation-Vendor: Apache Software Foundation
diff --git a/res/META-INF/servlet-api.jar.manifest b/res/META-INF/servlet-api.jar.manifest
index 0e2b172..3e7733e 100644
--- a/res/META-INF/servlet-api.jar.manifest
+++ b/res/META-INF/servlet-api.jar.manifest
@@ -3,9 +3,9 @@ X-Compile-Source-JDK: @source.jdk@
 X-Compile-Target-JDK: @target.jdk@
 
 Name: jakarta/servlet/
-Specification-Title: Java API for Servlets
-Specification-Version: 4.0
-Specification-Vendor: Sun Microsystems, Inc.
+Specification-Title: Jakarta Servlet
+Specification-Version: @servlet.spec.version@
+Specification-Vendor: Eclipse Foundation
 Implementation-Title: jakarta.servlet
-Implementation-Version: 4.0.@servlet.revision@
+Implementation-Version: @servlet.spec.version@.@servlet.revision@
 Implementation-Vendor: Apache Software Foundation
diff --git a/res/META-INF/websocket-api.jar.manifest b/res/META-INF/websocket-api.jar.manifest
index f0daa6b..882a7dd 100644
--- a/res/META-INF/websocket-api.jar.manifest
+++ b/res/META-INF/websocket-api.jar.manifest
@@ -3,9 +3,9 @@ X-Compile-Source-JDK: @source.jdk@
 X-Compile-Target-JDK: @target.jdk@
 
 Name: jakarta/websocket/
-Specification-Title: WebSocket
-Specification-Version: 1.1
-Specification-Vendor: Oracle, Inc.
+Specification-Title: Jakarta WebSocket
+Specification-Version: @websocket.spec.version@
+Specification-Vendor: Eclipse Foundation
 Implementation-Title: jakarta.websocket
-Implementation-Version: 1.1.@websocket.revision@
+Implementation-Version: @websocket.spec.version@.@websocket.revision@
 Implementation-Vendor: Apache Software Foundation


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org