From 72941de98a4af415b510d380bf765f999d2463e5 Mon Sep 17 00:00:00 2001
From: Aleksandr Nikolaev <>
Date: Mon, 22 Jun 2026 18:33:56 +0300
Subject: [PATCH 1/2] IGNITE-28588 update Spring
---
checkstyle/checkstyle.xml | 2 +-
.../misc/springbean/SpringBeanExample.java | 2 +-
modules/calcite/pom.xml | 6 ++++++
.../ignite/internal/IgniteComponentType.java | 4 ++--
.../uri/tasks/GarHelloWorldTask.java | 7 ++++---
.../uri/tasks/GridUriDeploymentTestTask1.java | 7 +++++--
.../uri/tasks/GridUriDeploymentTestTask2.java | 6 ++++--
.../uri/tasks/GridUriDeploymentTestTask9.java | 6 ++++--
modules/jta/pom.xml | 12 +++++++++---
.../apache/ignite/cache/jta/CacheTmLookup.java | 2 +-
.../cache/jta/jndi/CacheJndiTmFactory.java | 2 +-
.../cache/jta/jndi/CacheJndiTmLookup.java | 2 +-
.../jta/reflect/CacheReflectionTmLookup.java | 2 +-
.../websphere/WebSphereLibertyTmFactory.java | 2 +-
.../jta/websphere/WebSphereTmFactory.java | 18 +++++++++---------
.../processors/cache/jta/CacheJtaManager.java | 8 ++++----
.../processors/cache/jta/CacheJtaResource.java | 4 ++--
.../cache/CacheJndiTmFactorySelfTest.java | 16 ++++++++--------
...acheJtaConfigurationValidationSelfTest.java | 2 +-
...acheJtaFactoryConfigValidationSelfTest.java | 2 +-
.../cache/GridJtaLifecycleAwareSelfTest.java | 2 +-
.../GridJtaTransactionManagerSelfTest.java | 4 ++--
.../cache/jta/AbstractCacheJtaSelfTest.java | 4 ++--
...GridPartitionedCacheJtaFactorySelfTest.java | 2 +-
...itionedCacheJtaLookupClassNameSelfTest.java | 2 +-
.../http/jetty/GridJettyRestHandler.java | 6 +++---
.../GridResourceSpringBeanInjector.java | 6 +++---
.../GridResourceProcessorSelfTest.java | 2 +-
.../uri/GridUriDeploymentSpringDocument.java | 6 +++---
.../uri/GridUriDeploymentSpringParser.java | 10 ++++++----
modules/web/ignite-websphere-test/pom.xml | 12 ++++++++++++
.../ignite/webtest/TestJtaTxServlet.java | 6 +++---
.../cache/websession/WebSessionFilter.java | 8 ++++----
parent/pom.xml | 14 +++++++++++++-
34 files changed, 121 insertions(+), 75 deletions(-)
diff --git a/checkstyle/checkstyle.xml b/checkstyle/checkstyle.xml
index d1423237dadf6..7bb56603bc603 100644
--- a/checkstyle/checkstyle.xml
+++ b/checkstyle/checkstyle.xml
@@ -64,7 +64,7 @@
-
+
diff --git a/examples/src/main/java/org/apache/ignite/examples/misc/springbean/SpringBeanExample.java b/examples/src/main/java/org/apache/ignite/examples/misc/springbean/SpringBeanExample.java
index 66b22fa8681a9..53f6a6999e4dd 100644
--- a/examples/src/main/java/org/apache/ignite/examples/misc/springbean/SpringBeanExample.java
+++ b/examples/src/main/java/org/apache/ignite/examples/misc/springbean/SpringBeanExample.java
@@ -83,7 +83,7 @@ public static void main(String[] args) throws Exception {
}
finally {
// Stop local cluster node.
- ctx.destroy();
+ ctx.close();
}
}
}
diff --git a/modules/calcite/pom.xml b/modules/calcite/pom.xml
index 945451239f846..e038a07db73e5 100644
--- a/modules/calcite/pom.xml
+++ b/modules/calcite/pom.xml
@@ -69,6 +69,12 @@
org.apache.calcite
calcite-core
${calcite.version}
+
+
+ jakarta.transaction
+ jakarta.transaction-api
+
+
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/IgniteComponentType.java b/modules/core/src/main/java/org/apache/ignite/internal/IgniteComponentType.java
index 8e9e483af45ef..6a895088bf711 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/IgniteComponentType.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/IgniteComponentType.java
@@ -208,7 +208,7 @@ public T createIfInClassPath(GridKernalContext ctx, boolean mandatory)
try {
Class.forName(cls);
}
- catch (ClassNotFoundException e) {
+ catch (ClassNotFoundException | LinkageError e) {
if (mandatory)
throw componentException(e);
@@ -263,7 +263,7 @@ private T createOptional0(@Nullable GridKernalContext ctx) throws IgniteChec
try {
cls = Class.forName(clsName);
}
- catch (ClassNotFoundException ignored) {
+ catch (ClassNotFoundException | LinkageError ignored) {
try {
cls = Class.forName(noOpClsName);
}
diff --git a/modules/extdata/uri/src/main/java/org/apache/ignite/spi/deployment/uri/tasks/GarHelloWorldTask.java b/modules/extdata/uri/src/main/java/org/apache/ignite/spi/deployment/uri/tasks/GarHelloWorldTask.java
index df71641a54255..1bcb94160f011 100644
--- a/modules/extdata/uri/src/main/java/org/apache/ignite/spi/deployment/uri/tasks/GarHelloWorldTask.java
+++ b/modules/extdata/uri/src/main/java/org/apache/ignite/spi/deployment/uri/tasks/GarHelloWorldTask.java
@@ -29,8 +29,8 @@
import org.apache.ignite.compute.ComputeTaskName;
import org.apache.ignite.compute.ComputeTaskSplitAdapter;
import org.jetbrains.annotations.Nullable;
-import org.springframework.beans.factory.support.AbstractBeanFactory;
-import org.springframework.beans.factory.xml.XmlBeanFactory;
+import org.springframework.beans.factory.support.DefaultListableBeanFactory;
+import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
import org.springframework.core.io.ClassPathResource;
/**
@@ -43,7 +43,8 @@ public class GarHelloWorldTask extends ComputeTaskSplitAdapter {
/** {@inheritDoc} */
@Override public Collection extends ComputeJob> split(int gridSize, String arg) throws IgniteException {
// Create Spring context.
- AbstractBeanFactory fac = new XmlBeanFactory(
+ DefaultListableBeanFactory fac = new DefaultListableBeanFactory();
+ new XmlBeanDefinitionReader(fac).loadBeanDefinitions(
new ClassPathResource("org/apache/ignite/spi/deployment/uri/tasks/gar-spring-bean.xml", getClass().getClassLoader()));
fac.setBeanClassLoader(getClass().getClassLoader());
diff --git a/modules/extdata/uri/src/main/java/org/apache/ignite/spi/deployment/uri/tasks/GridUriDeploymentTestTask1.java b/modules/extdata/uri/src/main/java/org/apache/ignite/spi/deployment/uri/tasks/GridUriDeploymentTestTask1.java
index d95c411e74c23..1348d7f8066ba 100644
--- a/modules/extdata/uri/src/main/java/org/apache/ignite/spi/deployment/uri/tasks/GridUriDeploymentTestTask1.java
+++ b/modules/extdata/uri/src/main/java/org/apache/ignite/spi/deployment/uri/tasks/GridUriDeploymentTestTask1.java
@@ -23,7 +23,8 @@
import org.apache.ignite.compute.ComputeJob;
import org.apache.ignite.compute.ComputeJobResult;
import org.apache.ignite.compute.ComputeTaskSplitAdapter;
-import org.springframework.beans.factory.xml.XmlBeanFactory;
+import org.springframework.beans.factory.support.DefaultListableBeanFactory;
+import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
import org.springframework.core.io.ClassPathResource;
/**
@@ -32,7 +33,9 @@
public class GridUriDeploymentTestTask1 extends ComputeTaskSplitAdapter
+
+ org.eclipse.jetty.ee11
+ jetty-ee11-servlet
+ ${jetty.version}
+
+
+
org.eclipse.jetty
- jetty-servlet
+ jetty-session
${jetty.version}
@@ -95,8 +103,8 @@
- org.eclipse.jetty.toolchain
- jetty-jakarta-servlet-api
+ jakarta.servlet
+ jakarta.servlet-api
${jetty-jakarta-servlet-api.version}
diff --git a/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestHandler.java b/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestHandler.java
index 6e1948bcf9500..c91ed3ec58762 100644
--- a/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestHandler.java
+++ b/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestHandler.java
@@ -33,6 +33,7 @@
import java.util.UUID;
import jakarta.servlet.ServletOutputStream;
import jakarta.servlet.ServletRequest;
+import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import com.fasterxml.jackson.core.JsonProcessingException;
@@ -72,8 +73,6 @@
import org.apache.ignite.lang.IgniteClosure;
import org.apache.ignite.lang.IgniteUuid;
import org.apache.ignite.plugin.security.SecurityCredentials;
-import org.eclipse.jetty.server.Request;
-import org.eclipse.jetty.server.handler.AbstractHandler;
import org.jetbrains.annotations.Nullable;
import static java.lang.String.format;
@@ -93,7 +92,7 @@
/**
* Jetty REST handler. The following URL format is supported: {@code /ignite?cmd=cmdName¶m1=abc¶m2=123}
*/
-public class GridJettyRestHandler extends AbstractHandler {
+public class GridJettyRestHandler extends HttpServlet {
/** */
public static final String IGNITE_CMD_PATH = "/ignite";
@@ -270,16 +269,13 @@ private static int intValue(String key, Map params, int dfltVal)
}
/** {@inheritDoc} */
- @Override public void handle(String target, Request req, HttpServletRequest srvReq, HttpServletResponse res) {
- if (log.isDebugEnabled())
- log.debug("Handling request [target=" + target + ", req=" + req + ", srvReq=" + srvReq + ']');
+ @Override protected void service(HttpServletRequest srvReq, HttpServletResponse res) {
+ String target = srvReq.getRequestURI();
- if (!target.startsWith(IGNITE_CMD_PATH))
- return;
+ if (log.isDebugEnabled())
+ log.debug("Handling request [target=" + target + ", srvReq=" + srvReq + ']');
processRequest(target, srvReq, res);
-
- req.setHandled(true);
}
/**
diff --git a/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestProtocol.java b/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestProtocol.java
index 2631840cc0b22..5bdad0701d9f7 100644
--- a/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestProtocol.java
+++ b/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestProtocol.java
@@ -44,20 +44,20 @@
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.spi.IgniteSpiException;
+import org.eclipse.jetty.ee11.servlet.FilterHolder;
+import org.eclipse.jetty.ee11.servlet.ServletContextHandler;
+import org.eclipse.jetty.ee11.servlet.ServletHolder;
import org.eclipse.jetty.server.AbstractNetworkConnector;
import org.eclipse.jetty.server.Connector;
-import org.eclipse.jetty.server.Handler;
import org.eclipse.jetty.server.HttpConfiguration;
import org.eclipse.jetty.server.HttpConnectionFactory;
import org.eclipse.jetty.server.NetworkConnector;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.ServerConnector;
import org.eclipse.jetty.server.SslConnectionFactory;
-import org.eclipse.jetty.server.handler.HandlerList;
-import org.eclipse.jetty.servlet.FilterHolder;
-import org.eclipse.jetty.servlet.ServletContextHandler;
-import org.eclipse.jetty.util.MultiException;
+import org.eclipse.jetty.server.handler.ContextHandlerCollection;
import org.eclipse.jetty.util.resource.Resource;
+import org.eclipse.jetty.util.resource.ResourceFactory;
import org.eclipse.jetty.util.thread.QueuedThreadPool;
import org.eclipse.jetty.xml.XmlConfiguration;
import org.jetbrains.annotations.Nullable;
@@ -238,17 +238,6 @@ private boolean startJetty() throws IgniteCheckedException {
catch (Exception e) {
boolean failedToBind = e instanceof SocketException;
- if (e instanceof MultiException) {
- if (log.isDebugEnabled())
- log.debug("Caught multi exception: " + e);
-
- failedToBind = true;
-
- for (Object obj : ((MultiException)e).getThrowables())
- if (!(obj instanceof SocketException))
- failedToBind = false;
- }
-
if (e instanceof IOException && X.hasCause(e, SocketException.class))
failedToBind = true;
@@ -309,7 +298,7 @@ private void loadJettyConfiguration(@Nullable URL cfgUrl) throws IgniteCheckedEx
XmlConfiguration cfg;
try {
- Resource rsrc = Resource.newResource(cfgUrl);
+ Resource rsrc = ResourceFactory.root().newResource(cfgUrl.toURI());
cfg = new XmlConfiguration(rsrc);
}
@@ -336,18 +325,27 @@ private void loadJettyConfiguration(@Nullable URL cfgUrl) throws IgniteCheckedEx
assert httpSrv != null;
- Handler extsHnd = loadExtensions();
- WelcomeHandler welcomeHnd = new WelcomeHandler(log);
+ ContextHandlerCollection hnds = new ContextHandlerCollection();
- httpSrv.setHandler(new HandlerList(jettyHnd, extsHnd, welcomeHnd));
+ loadExtensions(hnds);
+
+ // Main context serves the REST command endpoint and the welcome page.
+ // Its root context path ("/") is matched last, after the more specific extension contexts.
+ ServletContextHandler mainCtx = new ServletContextHandler(ServletContextHandler.NO_SESSIONS);
+
+ mainCtx.setContextPath("/");
+ mainCtx.addServlet(new ServletHolder(jettyHnd), IGNITE_CMD_PATH + "/*");
+ mainCtx.addServlet(new ServletHolder(new WelcomeHandler(log)), "/");
+
+ hnds.addHandler(mainCtx);
+
+ httpSrv.setHandler(hnds);
override(getJettyConnector());
}
- /** */
- private Handler loadExtensions() throws IgniteCheckedException {
- HandlerList extsHnd = new HandlerList();
-
+ /** Discovers REST extensions and registers a dedicated servlet context for each one. */
+ private void loadExtensions(ContextHandlerCollection hnds) throws IgniteCheckedException {
CommonUtils.loadService(IgniteRestExtension.class).forEach(exts::add);
Set paths = new HashSet<>();
@@ -372,13 +370,11 @@ private Handler loadExtensions() throws IgniteCheckedException {
A.ensure(!extCtx.isContextPathDefault(), "The context path must be configured: " + ext.getClass().getName());
A.ensure(paths.add(extCtx.getContextPath()), "Duplicate REST context path: " + extCtx.getContextPath());
- extsHnd.addHandler(extCtx);
+ hnds.addHandler(extCtx);
if (log.isInfoEnabled())
log.info("Configured REST extension: " + ext.getClass().getName());
}
-
- return extsHnd;
}
/**
diff --git a/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/IgniteRestExtension.java b/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/IgniteRestExtension.java
index 275cac62c2274..ee4b749a4f9b2 100644
--- a/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/IgniteRestExtension.java
+++ b/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/IgniteRestExtension.java
@@ -17,7 +17,7 @@
package org.apache.ignite.internal.processors.rest.protocols.http.jetty;
-import org.eclipse.jetty.servlet.ServletContextHandler;
+import org.eclipse.jetty.ee11.servlet.ServletContextHandler;
/**
* Extension point for registering custom HTTP REST endpoints in the Jetty REST protocol.
diff --git a/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/WelcomeHandler.java b/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/WelcomeHandler.java
index 72b162b467ab6..bab9870add8d6 100644
--- a/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/WelcomeHandler.java
+++ b/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/WelcomeHandler.java
@@ -19,16 +19,15 @@
import java.io.IOException;
import java.io.InputStream;
+import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.apache.ignite.IgniteLogger;
-import org.eclipse.jetty.server.Request;
-import org.eclipse.jetty.server.handler.AbstractHandler;
/**
* Handles welcome page.
*/
-public class WelcomeHandler extends AbstractHandler {
+public class WelcomeHandler extends HttpServlet {
/** Default page. */
private final byte[] dfltPage;
@@ -51,14 +50,15 @@ public WelcomeHandler(IgniteLogger log) {
}
/** {@inheritDoc} */
- @Override public void handle(String target, Request req, HttpServletRequest srvReq, HttpServletResponse res) throws IOException {
+ @Override protected void service(HttpServletRequest req, HttpServletResponse res) throws IOException {
if (dfltPage == null || favicon == null || logo == null) {
res.setStatus(HttpServletResponse.SC_NOT_FOUND);
- req.setHandled(true);
return;
}
+ String target = req.getRequestURI();
+
if (target.startsWith("/favicon.ico")) {
res.setContentType("image/x-icon");
res.getOutputStream().write(favicon);
@@ -75,7 +75,6 @@ else if (target.startsWith("/logo.svg")) {
res.getOutputStream().flush();
res.setStatus(HttpServletResponse.SC_OK);
- req.setHandled(true);
}
/** */
diff --git a/modules/rest-http/src/test/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/IgniteRestExtensionTest.java b/modules/rest-http/src/test/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/IgniteRestExtensionTest.java
index c057aa5644362..7ea3a27cda535 100644
--- a/modules/rest-http/src/test/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/IgniteRestExtensionTest.java
+++ b/modules/rest-http/src/test/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/IgniteRestExtensionTest.java
@@ -29,8 +29,8 @@
import org.apache.ignite.plugin.security.SecurityException;
import org.apache.ignite.resources.IgniteInstanceResource;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
-import org.eclipse.jetty.servlet.ServletContextHandler;
-import org.eclipse.jetty.servlet.ServletHolder;
+import org.eclipse.jetty.ee11.servlet.ServletContextHandler;
+import org.eclipse.jetty.ee11.servlet.ServletHolder;
import org.junit.Test;
import static org.apache.ignite.cluster.ClusterState.INACTIVE;
diff --git a/modules/urideploy/src/test/java/org/apache/ignite/spi/deployment/uri/scanners/http/GridHttpDeploymentSelfTest.java b/modules/urideploy/src/test/java/org/apache/ignite/spi/deployment/uri/scanners/http/GridHttpDeploymentSelfTest.java
index b366d4fe2fa93..b7d7fb4c7ab06 100644
--- a/modules/urideploy/src/test/java/org/apache/ignite/spi/deployment/uri/scanners/http/GridHttpDeploymentSelfTest.java
+++ b/modules/urideploy/src/test/java/org/apache/ignite/spi/deployment/uri/scanners/http/GridHttpDeploymentSelfTest.java
@@ -30,6 +30,7 @@
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.ServerConnector;
import org.eclipse.jetty.server.handler.ResourceHandler;
+import org.eclipse.jetty.util.resource.ResourceFactory;
import org.junit.Test;
/**
@@ -86,7 +87,7 @@ public class GridHttpDeploymentSelfTest extends GridUriDeploymentAbstractSelfTes
ResourceHandler hnd = new ResourceHandler();
- hnd.setDirectoriesListed(true);
+ hnd.setDirAllowed(true);
String garPathTmp = GridTestProperties.getProperty("urideployment.path.tmp");
@@ -100,7 +101,7 @@ public class GridHttpDeploymentSelfTest extends GridUriDeploymentAbstractSelfTes
rsrcBase = resourseBaseDir.getPath();
- hnd.setResourceBase(rsrcBase);
+ hnd.setBaseResource(ResourceFactory.root().newResource(rsrcBase));
srv.setHandler(hnd);
diff --git a/modules/web/ignite-appserver-test/src/main/webapp/WEB-INF/web.xml b/modules/web/ignite-appserver-test/src/main/webapp/WEB-INF/web.xml
index 6fe7358724e75..dc0ba867f5dbe 100644
--- a/modules/web/ignite-appserver-test/src/main/webapp/WEB-INF/web.xml
+++ b/modules/web/ignite-appserver-test/src/main/webapp/WEB-INF/web.xml
@@ -15,11 +15,11 @@
~ limitations under the License.
-->
-
-
-
+
Archetype Created Web Application
diff --git a/modules/web/ignite-websphere-test/pom.xml b/modules/web/ignite-websphere-test/pom.xml
index 859531decb414..6495420328842 100644
--- a/modules/web/ignite-websphere-test/pom.xml
+++ b/modules/web/ignite-websphere-test/pom.xml
@@ -33,12 +33,6 @@
http://ignite.apache.org
-
-
- true
- true
-
-
${project.groupId}
@@ -49,12 +43,12 @@
${project.groupId}
ignite-jta
-
-
-
- com.ibm.websphere.appserver.api
- com.ibm.websphere.appserver.api.transaction
- 1.1.113
+
+
+ jakarta.transaction
+ jakarta.transaction-api
+
+
diff --git a/modules/web/ignite-websphere-test/src/main/java/org/apache/ignite/webtest/TestJtaTxServlet.java b/modules/web/ignite-websphere-test/src/main/java/org/apache/ignite/webtest/TestJtaTxServlet.java
index c0559a2da0946..f859bfdab58ae 100644
--- a/modules/web/ignite-websphere-test/src/main/java/org/apache/ignite/webtest/TestJtaTxServlet.java
+++ b/modules/web/ignite-websphere-test/src/main/java/org/apache/ignite/webtest/TestJtaTxServlet.java
@@ -24,8 +24,8 @@
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.transaction.RollbackException;
-import jakarta.transaction.TransactionManager;
-import com.ibm.tx.jta.TransactionManagerFactory;
+import jakarta.transaction.UserTransaction;
+import javax.naming.InitialContext;
import org.apache.ignite.Ignite;
import org.apache.ignite.IgniteCache;
import org.apache.ignite.Ignition;
@@ -56,7 +56,7 @@ public class TestJtaTxServlet extends HttpServlet {
final IgniteCache cache = ignite.cache("tx");
- TransactionManager tmMgr = TransactionManagerFactory.getTransactionManager();
+ UserTransaction tmMgr = (UserTransaction)new InitialContext().lookup("java:comp/UserTransaction");
tmMgr.begin();
diff --git a/modules/web/ignite-websphere-test/src/main/webapp/WEB-INF/web.xml b/modules/web/ignite-websphere-test/src/main/webapp/WEB-INF/web.xml
index 94cb0cf6b6d3f..c4308fe038f4a 100644
--- a/modules/web/ignite-websphere-test/src/main/webapp/WEB-INF/web.xml
+++ b/modules/web/ignite-websphere-test/src/main/webapp/WEB-INF/web.xml
@@ -15,11 +15,11 @@
~ limitations under the License.
-->
-
-
-
+
Archetype Created Web Application
diff --git a/modules/web/pom.xml b/modules/web/pom.xml
index d75e7d4542091..26c082bb43df7 100644
--- a/modules/web/pom.xml
+++ b/modules/web/pom.xml
@@ -47,8 +47,8 @@
- org.eclipse.jetty.toolchain
- jetty-jakarta-servlet-api
+ jakarta.servlet
+ jakarta.servlet-api
${jetty-jakarta-servlet-api.version}
@@ -65,15 +65,15 @@
- org.eclipse.jetty
- jetty-servlets
+ org.eclipse.jetty.ee11
+ jetty-ee11-servlets
${jetty.version}
test
- org.eclipse.jetty
- jetty-webapp
+ org.eclipse.jetty.ee11
+ jetty-ee11-webapp
${jetty.version}
test
diff --git a/modules/web/src/test/java/org/apache/ignite/internal/websession/WebSessionSelfTest.java b/modules/web/src/test/java/org/apache/ignite/internal/websession/WebSessionSelfTest.java
index 45b4ecf838fdf..c5c6e69902d73 100644
--- a/modules/web/src/test/java/org/apache/ignite/internal/websession/WebSessionSelfTest.java
+++ b/modules/web/src/test/java/org/apache/ignite/internal/websession/WebSessionSelfTest.java
@@ -57,12 +57,13 @@
import org.apache.ignite.lang.IgnitePredicate;
import org.apache.ignite.testframework.GridTestUtils;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
+import org.eclipse.jetty.ee11.servlet.ServletHolder;
+import org.eclipse.jetty.ee11.webapp.WebAppContext;
import org.eclipse.jetty.security.HashLoginService;
import org.eclipse.jetty.security.SecurityHandler;
+import org.eclipse.jetty.security.authentication.BasicAuthenticator;
import org.eclipse.jetty.server.Server;
-import org.eclipse.jetty.servlet.ServletHolder;
-import org.eclipse.jetty.util.security.Constraint;
-import org.eclipse.jetty.webapp.WebAppContext;
+import org.eclipse.jetty.util.resource.ResourceFactory;
import org.jetbrains.annotations.Nullable;
import org.junit.Ignore;
import org.junit.Test;
@@ -998,10 +999,10 @@ private Server startServerWithLoginService(
HashLoginService hashLoginSrvc = new HashLoginService();
hashLoginSrvc.setName("Test Realm");
createRealm();
- hashLoginSrvc.setConfig("/tmp/realm.properties");
+ hashLoginSrvc.setConfig(ResourceFactory.root().newResource("/tmp/realm.properties"));
SecurityHandler securityHnd = ctx.getSecurityHandler();
// DefaultAuthenticatorFactory doesn't default to basic auth anymore.
- securityHnd.setAuthMethod(Constraint.__BASIC_AUTH);
+ securityHnd.setAuthenticator(new BasicAuthenticator());
securityHnd.setLoginService(hashLoginSrvc);
srv.setHandler(ctx);
diff --git a/modules/web/src/test/java/org/apache/ignite/internal/websession/WebSessionServerStart.java b/modules/web/src/test/java/org/apache/ignite/internal/websession/WebSessionServerStart.java
index b620085e09e16..a2d0ca6cd39ac 100644
--- a/modules/web/src/test/java/org/apache/ignite/internal/websession/WebSessionServerStart.java
+++ b/modules/web/src/test/java/org/apache/ignite/internal/websession/WebSessionServerStart.java
@@ -25,9 +25,9 @@
import jakarta.servlet.http.HttpSession;
import org.apache.ignite.internal.util.typedef.X;
import org.apache.ignite.internal.util.typedef.internal.U;
+import org.eclipse.jetty.ee11.servlet.ServletHolder;
+import org.eclipse.jetty.ee11.webapp.WebAppContext;
import org.eclipse.jetty.server.Server;
-import org.eclipse.jetty.servlet.ServletHolder;
-import org.eclipse.jetty.webapp.WebAppContext;
/**
* Server starter for web sessions caching test.
diff --git a/modules/web/src/test/webapp2/WEB-INF/web.xml b/modules/web/src/test/webapp2/WEB-INF/web.xml
index d51b87d27a621..16e9b4a4a6334 100644
--- a/modules/web/src/test/webapp2/WEB-INF/web.xml
+++ b/modules/web/src/test/webapp2/WEB-INF/web.xml
@@ -17,11 +17,11 @@
~ limitations under the License.
-->
-
+ xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
+ https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"
+ version="6.0">
diff --git a/parent/pom.xml b/parent/pom.xml
index ee61285c2698e..5a3e49401f2e5 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -85,8 +85,8 @@
1.0.0
1.0.6.Final
26.1.0
- 11.0.25
- 5.0.2
+ 12.1.10
+ 6.1.0
1.37
4.5.2
3.1.15