This is an automated email from the ASF dual-hosted git repository.
zstan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git
The following commit(s) were added to refs/heads/master by this push:
new d6d54fdbbad IGNITE-28588 Update Spring to 6.2.19 (#13342)
d6d54fdbbad is described below
commit d6d54fdbbad43d08832ab9ee6291796e61f363d4
Author: Aleksandr Nikolaev <[email protected]>
AuthorDate: Mon Jul 13 11:40:08 2026 +0300
IGNITE-28588 Update Spring to 6.2.19 (#13342)
---
checkstyle/checkstyle.xml | 2 +-
.../misc/springbean/SpringBeanExample.java | 12 ++----
modules/calcite/pom.xml | 6 +++
.../resources/jetty/rest-jetty-ssl-client-auth.xml | 13 +-----
.../src/test/resources/jetty/rest-jetty-ssl.xml | 17 +-------
.../src/test/resources/jetty/rest-jetty.xml | 14 +-----
.../src/test/resources/jetty/router-jetty-ssl.xml | 17 +-------
.../src/test/resources/jetty/router-jetty.xml | 14 +-----
modules/core/pom.xml | 8 ++--
.../ignite/internal/IgniteComponentType.java | 4 +-
.../processors/rest/GridRestProcessor.java | 4 ++
modules/core/src/test/webapp/WEB-INF/web.xml | 8 ++--
.../deployment/uri/tasks/GarHelloWorldTask.java | 7 +--
.../uri/tasks/GridUriDeploymentTestTask1.java | 7 ++-
.../uri/tasks/GridUriDeploymentTestTask2.java | 6 ++-
.../uri/tasks/GridUriDeploymentTestTask9.java | 6 ++-
modules/jta/pom.xml | 27 ++++--------
.../org/apache/ignite/cache/jta/CacheTmLookup.java | 2 +-
.../ignite/cache/jta/jndi/CacheJndiTmFactory.java | 2 +-
.../ignite/cache/jta/jndi/CacheJndiTmLookup.java | 2 +-
.../cache/jta/reflect/CacheReflectionTmLookup.java | 2 +-
.../jta/websphere/WebSphereLibertyTmFactory.java | 2 +-
.../cache/jta/websphere/WebSphereTmFactory.java | 18 ++++----
.../processors/cache/jta/CacheJtaManager.java | 8 ++--
.../processors/cache/jta/CacheJtaResource.java | 4 +-
.../cache/CacheJndiTmFactorySelfTest.java | 16 +++----
...ridCacheJtaConfigurationValidationSelfTest.java | 2 +-
...ridCacheJtaFactoryConfigValidationSelfTest.java | 2 +-
.../cache/GridJtaLifecycleAwareSelfTest.java | 6 +--
.../cache/GridJtaTransactionManagerSelfTest.java | 50 ++++++++++++++--------
.../cache/jta/AbstractCacheJtaSelfTest.java | 32 +++++++-------
.../GridPartitionedCacheJtaFactorySelfTest.java | 4 +-
...PartitionedCacheJtaLookupClassNameSelfTest.java | 4 +-
modules/rest-http/pom.xml | 12 ++++--
.../protocols/http/jetty/GridJettyRestHandler.java | 22 ++++------
.../http/jetty/GridJettyRestProtocol.java | 50 ++++++++++------------
.../protocols/http/jetty/IgniteRestExtension.java | 2 +-
.../rest/protocols/http/jetty/WelcomeHandler.java | 15 +++----
.../http/jetty/IgniteRestExtensionTest.java | 4 +-
.../resource/GridResourceSpringBeanInjector.java | 6 +--
.../resource/GridResourceProcessorSelfTest.java | 2 +-
.../uri/GridUriDeploymentSpringDocument.java | 6 +--
.../uri/GridUriDeploymentSpringParser.java | 10 +++--
.../scanners/http/GridHttpDeploymentSelfTest.java | 5 ++-
.../src/main/webapp/WEB-INF/web.xml | 10 ++---
modules/web/ignite-websphere-test/pom.xml | 12 ++++--
.../apache/ignite/webtest/TestJtaTxServlet.java | 8 ++--
.../src/main/webapp/WEB-INF/web.xml | 10 ++---
modules/web/pom.xml | 12 +++---
.../ignite/cache/websession/WebSessionFilter.java | 8 ++--
.../internal/websession/WebSessionSelfTest.java | 11 ++---
.../internal/websession/WebSessionServerStart.java | 4 +-
modules/web/src/test/webapp2/WEB-INF/web.xml | 8 ++--
parent/pom.xml | 21 +++++++--
54 files changed, 270 insertions(+), 296 deletions(-)
diff --git a/checkstyle/checkstyle.xml b/checkstyle/checkstyle.xml
index d1423237dad..7bb56603bc6 100644
--- a/checkstyle/checkstyle.xml
+++ b/checkstyle/checkstyle.xml
@@ -64,7 +64,7 @@
<property name="customImportOrderRules"
value="STANDARD_JAVA_PACKAGE###SPECIAL_IMPORTS###THIRD_PARTY_PACKAGE###STATIC"/>
<property name="standardPackageRegExp" value="^java\."/>
- <property name="specialImportsRegExp" value="^javax\."/>
+ <property name="specialImportsRegExp" value="^(javax|jakarta)\."/>
<property name="sortImportsInGroupAlphabetically" value="true"/>
<property name="separateLineBetweenGroups" value="false"/>
</module>
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 66b22fa8681..d514db2512c 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
@@ -53,11 +53,9 @@ public final class SpringBeanExample {
System.out.println();
System.out.println(">>> Spring bean example started.");
- // Initialize Spring factory.
- ClassPathXmlApplicationContext ctx =
- new
ClassPathXmlApplicationContext("org/apache/ignite/examples/misc/springbean/spring-bean.xml");
-
- try {
+ // Initialize Spring factory (closed automatically, which stops the
local cluster node).
+ try (ClassPathXmlApplicationContext ctx =
+ new
ClassPathXmlApplicationContext("org/apache/ignite/examples/misc/springbean/spring-bean.xml"))
{
// Get ignite from Spring (note that local cluster node is already
started).
Ignite ignite = (Ignite)ctx.getBean("mySpringBean");
@@ -81,9 +79,5 @@ public final class SpringBeanExample {
System.out.println(">>> Check all nodes for output (this node is
also part of the cluster).");
System.out.println(">>>");
}
- finally {
- // Stop local cluster node.
- ctx.destroy();
- }
}
}
diff --git a/modules/calcite/pom.xml b/modules/calcite/pom.xml
index c178cef41dc..27c49c5b415 100644
--- a/modules/calcite/pom.xml
+++ b/modules/calcite/pom.xml
@@ -69,6 +69,12 @@
<groupId>org.apache.calcite</groupId>
<artifactId>calcite-core</artifactId>
<version>${calcite.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-dbcp2</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
diff --git
a/modules/clients/src/test/resources/jetty/rest-jetty-ssl-client-auth.xml
b/modules/clients/src/test/resources/jetty/rest-jetty-ssl-client-auth.xml
index 00158a85cc2..b95d81dd1ef 100644
--- a/modules/clients/src/test/resources/jetty/rest-jetty-ssl-client-auth.xml
+++ b/modules/clients/src/test/resources/jetty/rest-jetty-ssl-client-auth.xml
@@ -19,7 +19,7 @@
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN"
"http://www.eclipse.org/jetty/configure.dtd">
<Configure id="Server" class="org.eclipse.jetty.server.Server">
- <Arg name="threadpool">
+ <Arg>
<New class="org.eclipse.jetty.util.thread.QueuedThreadPool">
<Set name="minThreads">5</Set>
<Set name="maxThreads">10</Set>
@@ -76,17 +76,6 @@
</Arg>
</Call>
- <Set name="handler">
- <New id="Handlers"
class="org.eclipse.jetty.server.handler.HandlerCollection">
- <Set name="handlers">
- <Array type="org.eclipse.jetty.server.Handler">
- <Item>
- <New id="Contexts"
class="org.eclipse.jetty.server.handler.ContextHandlerCollection"/>
- </Item>
- </Array>
- </Set>
- </New>
- </Set>
<Set name="stopAtShutdown">false</Set>
</Configure>
diff --git a/modules/clients/src/test/resources/jetty/rest-jetty-ssl.xml
b/modules/clients/src/test/resources/jetty/rest-jetty-ssl.xml
index d84df0d48b3..d34d2c9ada2 100644
--- a/modules/clients/src/test/resources/jetty/rest-jetty-ssl.xml
+++ b/modules/clients/src/test/resources/jetty/rest-jetty-ssl.xml
@@ -20,7 +20,7 @@
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN"
"http://www.eclipse.org/jetty/configure.dtd">
<Configure id="Server" class="org.eclipse.jetty.server.Server">
- <Arg name="threadpool">
+ <Arg>
<!-- Default queued blocking thread pool -->
<New class="org.eclipse.jetty.util.thread.QueuedThreadPool">
<Set name="minThreads">10</Set>
@@ -38,7 +38,7 @@
</Call>
</New>
- <New id="sslContextFactory"
class="org.eclipse.jetty.util.ssl.SslContextFactory">
+ <New id="sslContextFactory"
class="org.eclipse.jetty.util.ssl.SslContextFactory$Server">
<Set name="keyStorePath"><SystemProperty
name="CLIENTS_MODULE_PATH"/>/src/test/keystore/server.jks</Set>
<Set name="keyStorePassword">123456</Set>
<Set name="keyManagerPassword">123456</Set>
@@ -77,18 +77,5 @@
</New>
</Arg>
</Call>
-
- <Set name="handler">
- <New id="Handlers"
class="org.eclipse.jetty.server.handler.HandlerCollection">
- <Set name="handlers">
- <Array type="org.eclipse.jetty.server.Handler">
- <Item>
- <New id="Contexts"
class="org.eclipse.jetty.server.handler.ContextHandlerCollection"/>
- </Item>
- </Array>
- </Set>
- </New>
- </Set>
-
<Set name="stopAtShutdown">false</Set>
</Configure>
diff --git a/modules/clients/src/test/resources/jetty/rest-jetty.xml
b/modules/clients/src/test/resources/jetty/rest-jetty.xml
index d84bf8ae49c..c4dcc0f37af 100644
--- a/modules/clients/src/test/resources/jetty/rest-jetty.xml
+++ b/modules/clients/src/test/resources/jetty/rest-jetty.xml
@@ -20,7 +20,7 @@
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN"
"http://www.eclipse.org/jetty/configure.dtd">
<Configure id="Server" class="org.eclipse.jetty.server.Server">
- <Arg name="threadpool">
+ <Arg>
<!-- Default queued blocking thread pool -->
<New class="org.eclipse.jetty.util.thread.QueuedThreadPool">
<Set name="minThreads">20</Set>
@@ -61,17 +61,5 @@
</Arg>
</Call>
- <Set name="handler">
- <New id="Handlers"
class="org.eclipse.jetty.server.handler.HandlerCollection">
- <Set name="handlers">
- <Array type="org.eclipse.jetty.server.Handler">
- <Item>
- <New id="Contexts"
class="org.eclipse.jetty.server.handler.ContextHandlerCollection"/>
- </Item>
- </Array>
- </Set>
- </New>
- </Set>
-
<Set name="stopAtShutdown">false</Set>
</Configure>
diff --git a/modules/clients/src/test/resources/jetty/router-jetty-ssl.xml
b/modules/clients/src/test/resources/jetty/router-jetty-ssl.xml
index 093fa181535..85081526a7d 100644
--- a/modules/clients/src/test/resources/jetty/router-jetty-ssl.xml
+++ b/modules/clients/src/test/resources/jetty/router-jetty-ssl.xml
@@ -20,7 +20,7 @@
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN"
"http://www.eclipse.org/jetty/configure.dtd">
<Configure id="Server" class="org.eclipse.jetty.server.Server">
- <Arg name="threadpool">
+ <Arg>
<!-- Default queued blocking thread pool -->
<New class="org.eclipse.jetty.util.thread.QueuedThreadPool">
<Set name="minThreads">10</Set>
@@ -38,7 +38,7 @@
</Call>
</New>
- <New id="sslContextFactory"
class="org.eclipse.jetty.util.ssl.SslContextFactory">
+ <New id="sslContextFactory"
class="org.eclipse.jetty.util.ssl.SslContextFactory$Server">
<Set name="keyStorePath"><SystemProperty
name="CLIENTS_MODULE_PATH"/>/src/test/keystore/server.jks</Set>
<Set name="keyStorePassword">123456</Set>
<Set name="keyManagerPassword">123456</Set>
@@ -77,18 +77,5 @@
</New>
</Arg>
</Call>
-
- <Set name="handler">
- <New id="Handlers"
class="org.eclipse.jetty.server.handler.HandlerCollection">
- <Set name="handlers">
- <Array type="org.eclipse.jetty.server.Handler">
- <Item>
- <New id="Contexts"
class="org.eclipse.jetty.server.handler.ContextHandlerCollection"/>
- </Item>
- </Array>
- </Set>
- </New>
- </Set>
-
<Set name="stopAtShutdown">false</Set>
</Configure>
diff --git a/modules/clients/src/test/resources/jetty/router-jetty.xml
b/modules/clients/src/test/resources/jetty/router-jetty.xml
index 8815431069b..eecb262972c 100644
--- a/modules/clients/src/test/resources/jetty/router-jetty.xml
+++ b/modules/clients/src/test/resources/jetty/router-jetty.xml
@@ -20,7 +20,7 @@
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN"
"http://www.eclipse.org/jetty/configure.dtd">
<Configure id="Server" class="org.eclipse.jetty.server.Server">
- <Arg name="threadpool">
+ <Arg>
<!-- Default queued blocking thread pool -->
<New class="org.eclipse.jetty.util.thread.QueuedThreadPool">
<Set name="minThreads">20</Set>
@@ -61,17 +61,5 @@
</Arg>
</Call>
- <Set name="handler">
- <New id="Handlers"
class="org.eclipse.jetty.server.handler.HandlerCollection">
- <Set name="handlers">
- <Array type="org.eclipse.jetty.server.Handler">
- <Item>
- <New id="Contexts"
class="org.eclipse.jetty.server.handler.ContextHandlerCollection"/>
- </Item>
- </Array>
- </Set>
- </New>
- </Set>
-
<Set name="stopAtShutdown">false</Set>
</Configure>
diff --git a/modules/core/pom.xml b/modules/core/pom.xml
index cb39794de74..4f5c28a4125 100644
--- a/modules/core/pom.xml
+++ b/modules/core/pom.xml
@@ -162,15 +162,15 @@
</dependency>
<dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-servlets</artifactId>
+ <groupId>org.eclipse.jetty.ee11</groupId>
+ <artifactId>jetty-ee11-servlets</artifactId>
<version>${jetty.version}</version>
<scope>test</scope>
</dependency>
<dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-webapp</artifactId>
+ <groupId>org.eclipse.jetty.ee11</groupId>
+ <artifactId>jetty-ee11-webapp</artifactId>
<version>${jetty.version}</version>
<scope>test</scope>
</dependency>
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 8e9e483af45..6a895088bf7 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 enum IgniteComponentType {
try {
Class.forName(cls);
}
- catch (ClassNotFoundException e) {
+ catch (ClassNotFoundException | LinkageError e) {
if (mandatory)
throw componentException(e);
@@ -263,7 +263,7 @@ public enum IgniteComponentType {
try {
cls = Class.forName(clsName);
}
- catch (ClassNotFoundException ignored) {
+ catch (ClassNotFoundException | LinkageError ignored) {
try {
cls = Class.forName(noOpClsName);
}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java
index a7e0cc58d9d..e417ede2f6e 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java
@@ -1017,6 +1017,10 @@ public class GridRestProcessor extends
GridProcessorAdapter implements IgniteRes
log.debug("Failed to initialize HTTP REST protocol (consider
adding ignite-rest-http " +
"module to classpath).");
}
+ catch (LinkageError e) {
+ U.warn(log, "Failed to initialize HTTP REST protocol (consider
adding ignite-rest-http " +
+ "module and its dependencies to classpath).", e);
+ }
catch (NoSuchMethodException | InvocationTargetException |
InstantiationException | IllegalAccessException e) {
throw new IgniteCheckedException("Failed to initialize HTTP REST
protocol.", e);
}
diff --git a/modules/core/src/test/webapp/WEB-INF/web.xml
b/modules/core/src/test/webapp/WEB-INF/web.xml
index e3523c76af0..a1451584cc4 100644
--- a/modules/core/src/test/webapp/WEB-INF/web.xml
+++ b/modules/core/src/test/webapp/WEB-INF/web.xml
@@ -17,11 +17,11 @@
limitations under the License.
-->
-<web-app xmlns="http://java.sun.com/xml/ns/javaee"
+<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
- http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
- version="3.0">
+ xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
+
https://jakarta.ee/xml/ns/jakartaee/web-app_6_1.xsd"
+ version="6.1">
<!-- Declare listener for web sessions caching. -->
<listener>
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 df71641a542..1bcb94160f0 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.ComputeJobResult;
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<String, String> {
/** {@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 d95c411e74c..1348d7f8066 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 java.util.Map;
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 @@ import org.springframework.core.io.ClassPathResource;
public class GridUriDeploymentTestTask1 extends
ComputeTaskSplitAdapter<Object, Object> {
/** */
public GridUriDeploymentTestTask1() {
- XmlBeanFactory factory = new XmlBeanFactory(new
ClassPathResource("spring1.xml", getClass().getClassLoader()));
+ DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
+ new XmlBeanDefinitionReader(factory).loadBeanDefinitions(
+ new ClassPathResource("spring1.xml", getClass().getClassLoader()));
factory.setBeanClassLoader(getClass().getClassLoader());
diff --git
a/modules/extdata/uri/src/main/java/org/apache/ignite/spi/deployment/uri/tasks/GridUriDeploymentTestTask2.java
b/modules/extdata/uri/src/main/java/org/apache/ignite/spi/deployment/uri/tasks/GridUriDeploymentTestTask2.java
index 1325efd17aa..cf661982b4a 100644
---
a/modules/extdata/uri/src/main/java/org/apache/ignite/spi/deployment/uri/tasks/GridUriDeploymentTestTask2.java
+++
b/modules/extdata/uri/src/main/java/org/apache/ignite/spi/deployment/uri/tasks/GridUriDeploymentTestTask2.java
@@ -23,7 +23,8 @@ import java.util.Map;
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;
/**
@@ -35,7 +36,8 @@ public class GridUriDeploymentTestTask2 extends
ComputeTaskSplitAdapter<Object,
/** */
public GridUriDeploymentTestTask2() {
- XmlBeanFactory factory = new XmlBeanFactory(
+ DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
+ new XmlBeanDefinitionReader(factory).loadBeanDefinitions(
new
ClassPathResource("org/apache/ignite/spi/deployment/uri/tasks/spring2.xml",
getClass().getClassLoader()));
diff --git
a/modules/extdata/uri/src/main/java/org/apache/ignite/spi/deployment/uri/tasks/GridUriDeploymentTestTask9.java
b/modules/extdata/uri/src/main/java/org/apache/ignite/spi/deployment/uri/tasks/GridUriDeploymentTestTask9.java
index e3469516d91..93b277c9f85 100644
---
a/modules/extdata/uri/src/main/java/org/apache/ignite/spi/deployment/uri/tasks/GridUriDeploymentTestTask9.java
+++
b/modules/extdata/uri/src/main/java/org/apache/ignite/spi/deployment/uri/tasks/GridUriDeploymentTestTask9.java
@@ -23,7 +23,8 @@ import java.util.Map;
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;
/**
@@ -35,7 +36,8 @@ public class GridUriDeploymentTestTask9 extends
ComputeTaskSplitAdapter<Object,
/** */
public GridUriDeploymentTestTask9() {
- XmlBeanFactory factory = new XmlBeanFactory(
+ DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
+ new XmlBeanDefinitionReader(factory).loadBeanDefinitions(
new
ClassPathResource("org/apache/ignite/spi/deployment/uri/tasks/spring9.xml",
getClass().getClassLoader()));
diff --git a/modules/jta/pom.xml b/modules/jta/pom.xml
index 5a031057f2a..21909a7f794 100644
--- a/modules/jta/pom.xml
+++ b/modules/jta/pom.xml
@@ -41,9 +41,9 @@
</dependency>
<dependency>
- <groupId>javax.transaction</groupId>
- <artifactId>jta</artifactId>
- <version>1.1</version>
+ <groupId>jakarta.transaction</groupId>
+ <artifactId>jakarta.transaction-api</artifactId>
+ <version>2.0.1</version>
</dependency>
<dependency>
@@ -53,16 +53,16 @@
</dependency>
<dependency>
- <groupId>org.ow2.jotm</groupId>
- <artifactId>jotm-core</artifactId>
- <version>${jotm.version}</version>
+ <groupId>org.jboss.narayana.jta</groupId>
+ <artifactId>narayana-jta</artifactId>
+ <version>${narayana.version}</version>
<scope>test</scope>
</dependency>
<dependency>
- <groupId>javax.resource</groupId>
- <artifactId>connector-api</artifactId>
- <version>1.5</version>
+ <groupId>org.jboss.logging</groupId>
+ <artifactId>jboss-logging</artifactId>
+ <version>${jboss.logging.version}</version>
<scope>test</scope>
</dependency>
@@ -100,15 +100,6 @@
<scope>test</scope>
</dependency>
- <!-- JDK9+ -->
-
- <dependency>
- <groupId>org.jboss.spec.javax.rmi</groupId>
- <artifactId>jboss-rmi-api_1.0_spec</artifactId>
- <version>${jboss.rmi.version}</version>
- <scope>test</scope>
- </dependency>
-
</dependencies>
<build>
diff --git
a/modules/jta/src/main/java/org/apache/ignite/cache/jta/CacheTmLookup.java
b/modules/jta/src/main/java/org/apache/ignite/cache/jta/CacheTmLookup.java
index 7f973848a84..8a0659e2a9c 100644
--- a/modules/jta/src/main/java/org/apache/ignite/cache/jta/CacheTmLookup.java
+++ b/modules/jta/src/main/java/org/apache/ignite/cache/jta/CacheTmLookup.java
@@ -17,7 +17,7 @@
package org.apache.ignite.cache.jta;
-import javax.transaction.TransactionManager;
+import jakarta.transaction.TransactionManager;
import org.apache.ignite.IgniteException;
import org.apache.ignite.configuration.TransactionConfiguration;
import org.jetbrains.annotations.Nullable;
diff --git
a/modules/jta/src/main/java/org/apache/ignite/cache/jta/jndi/CacheJndiTmFactory.java
b/modules/jta/src/main/java/org/apache/ignite/cache/jta/jndi/CacheJndiTmFactory.java
index 10f3f86c779..b6c778c7ba6 100644
---
a/modules/jta/src/main/java/org/apache/ignite/cache/jta/jndi/CacheJndiTmFactory.java
+++
b/modules/jta/src/main/java/org/apache/ignite/cache/jta/jndi/CacheJndiTmFactory.java
@@ -20,10 +20,10 @@ package org.apache.ignite.cache.jta.jndi;
import java.util.Arrays;
import java.util.Hashtable;
import java.util.Map;
+import jakarta.transaction.TransactionManager;
import javax.cache.configuration.Factory;
import javax.naming.InitialContext;
import javax.naming.NamingException;
-import javax.transaction.TransactionManager;
import org.apache.ignite.IgniteException;
import org.apache.ignite.internal.util.typedef.internal.U;
diff --git
a/modules/jta/src/main/java/org/apache/ignite/cache/jta/jndi/CacheJndiTmLookup.java
b/modules/jta/src/main/java/org/apache/ignite/cache/jta/jndi/CacheJndiTmLookup.java
index dfd8b5e3cca..db01b36d484 100644
---
a/modules/jta/src/main/java/org/apache/ignite/cache/jta/jndi/CacheJndiTmLookup.java
+++
b/modules/jta/src/main/java/org/apache/ignite/cache/jta/jndi/CacheJndiTmLookup.java
@@ -18,9 +18,9 @@
package org.apache.ignite.cache.jta.jndi;
import java.util.List;
+import jakarta.transaction.TransactionManager;
import javax.naming.InitialContext;
import javax.naming.NamingException;
-import javax.transaction.TransactionManager;
import org.apache.ignite.IgniteException;
import org.apache.ignite.cache.jta.CacheTmLookup;
import org.jetbrains.annotations.Nullable;
diff --git
a/modules/jta/src/main/java/org/apache/ignite/cache/jta/reflect/CacheReflectionTmLookup.java
b/modules/jta/src/main/java/org/apache/ignite/cache/jta/reflect/CacheReflectionTmLookup.java
index 25b06de2201..96cf03de0d6 100644
---
a/modules/jta/src/main/java/org/apache/ignite/cache/jta/reflect/CacheReflectionTmLookup.java
+++
b/modules/jta/src/main/java/org/apache/ignite/cache/jta/reflect/CacheReflectionTmLookup.java
@@ -18,7 +18,7 @@
package org.apache.ignite.cache.jta.reflect;
import java.lang.reflect.InvocationTargetException;
-import javax.transaction.TransactionManager;
+import jakarta.transaction.TransactionManager;
import org.apache.ignite.IgniteException;
import org.apache.ignite.cache.jta.CacheTmLookup;
import org.apache.ignite.internal.util.typedef.internal.A;
diff --git
a/modules/jta/src/main/java/org/apache/ignite/cache/jta/websphere/WebSphereLibertyTmFactory.java
b/modules/jta/src/main/java/org/apache/ignite/cache/jta/websphere/WebSphereLibertyTmFactory.java
index aa579ade02f..581078a97e2 100644
---
a/modules/jta/src/main/java/org/apache/ignite/cache/jta/websphere/WebSphereLibertyTmFactory.java
+++
b/modules/jta/src/main/java/org/apache/ignite/cache/jta/websphere/WebSphereLibertyTmFactory.java
@@ -18,8 +18,8 @@
package org.apache.ignite.cache.jta.websphere;
import java.lang.reflect.InvocationTargetException;
+import jakarta.transaction.TransactionManager;
import javax.cache.configuration.Factory;
-import javax.transaction.TransactionManager;
import org.apache.ignite.IgniteException;
/**
diff --git
a/modules/jta/src/main/java/org/apache/ignite/cache/jta/websphere/WebSphereTmFactory.java
b/modules/jta/src/main/java/org/apache/ignite/cache/jta/websphere/WebSphereTmFactory.java
index 85886df7eed..7276e12932f 100644
---
a/modules/jta/src/main/java/org/apache/ignite/cache/jta/websphere/WebSphereTmFactory.java
+++
b/modules/jta/src/main/java/org/apache/ignite/cache/jta/websphere/WebSphereTmFactory.java
@@ -21,16 +21,16 @@ import java.lang.reflect.InvocationHandler;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
+import jakarta.transaction.HeuristicMixedException;
+import jakarta.transaction.HeuristicRollbackException;
+import jakarta.transaction.InvalidTransactionException;
+import jakarta.transaction.NotSupportedException;
+import jakarta.transaction.RollbackException;
+import jakarta.transaction.Synchronization;
+import jakarta.transaction.SystemException;
+import jakarta.transaction.Transaction;
+import jakarta.transaction.TransactionManager;
import javax.cache.configuration.Factory;
-import javax.transaction.HeuristicMixedException;
-import javax.transaction.HeuristicRollbackException;
-import javax.transaction.InvalidTransactionException;
-import javax.transaction.NotSupportedException;
-import javax.transaction.RollbackException;
-import javax.transaction.Synchronization;
-import javax.transaction.SystemException;
-import javax.transaction.Transaction;
-import javax.transaction.TransactionManager;
import javax.transaction.xa.XAResource;
import org.apache.ignite.IgniteException;
diff --git
a/modules/jta/src/main/java/org/apache/ignite/internal/processors/cache/jta/CacheJtaManager.java
b/modules/jta/src/main/java/org/apache/ignite/internal/processors/cache/jta/CacheJtaManager.java
index b98a7f8b006..854773ad259 100644
---
a/modules/jta/src/main/java/org/apache/ignite/internal/processors/cache/jta/CacheJtaManager.java
+++
b/modules/jta/src/main/java/org/apache/ignite/internal/processors/cache/jta/CacheJtaManager.java
@@ -18,11 +18,11 @@
package org.apache.ignite.internal.processors.cache.jta;
import java.util.concurrent.atomic.AtomicReference;
+import jakarta.transaction.RollbackException;
+import jakarta.transaction.SystemException;
+import jakarta.transaction.Transaction;
+import jakarta.transaction.TransactionManager;
import javax.cache.configuration.Factory;
-import javax.transaction.RollbackException;
-import javax.transaction.SystemException;
-import javax.transaction.Transaction;
-import javax.transaction.TransactionManager;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.cache.jta.CacheTmLookup;
import org.apache.ignite.configuration.CacheConfiguration;
diff --git
a/modules/jta/src/main/java/org/apache/ignite/internal/processors/cache/jta/CacheJtaResource.java
b/modules/jta/src/main/java/org/apache/ignite/internal/processors/cache/jta/CacheJtaResource.java
index 5b1b37a15db..81edfc40833 100644
---
a/modules/jta/src/main/java/org/apache/ignite/internal/processors/cache/jta/CacheJtaResource.java
+++
b/modules/jta/src/main/java/org/apache/ignite/internal/processors/cache/jta/CacheJtaResource.java
@@ -18,9 +18,9 @@
package org.apache.ignite.internal.processors.cache.jta;
import java.util.concurrent.atomic.AtomicReference;
+import jakarta.transaction.Status;
+import jakarta.transaction.Synchronization;
import javax.cache.CacheException;
-import javax.transaction.Status;
-import javax.transaction.Synchronization;
import javax.transaction.xa.XAException;
import javax.transaction.xa.XAResource;
import javax.transaction.xa.Xid;
diff --git
a/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/CacheJndiTmFactorySelfTest.java
b/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/CacheJndiTmFactorySelfTest.java
index f3781d4af58..8f3ba701440 100644
---
a/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/CacheJndiTmFactorySelfTest.java
+++
b/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/CacheJndiTmFactorySelfTest.java
@@ -18,16 +18,16 @@
package org.apache.ignite.internal.processors.cache;
import java.util.concurrent.Callable;
+import jakarta.transaction.HeuristicMixedException;
+import jakarta.transaction.HeuristicRollbackException;
+import jakarta.transaction.InvalidTransactionException;
+import jakarta.transaction.NotSupportedException;
+import jakarta.transaction.RollbackException;
+import jakarta.transaction.SystemException;
+import jakarta.transaction.Transaction;
+import jakarta.transaction.TransactionManager;
import javax.naming.Context;
import javax.naming.InitialContext;
-import javax.transaction.HeuristicMixedException;
-import javax.transaction.HeuristicRollbackException;
-import javax.transaction.InvalidTransactionException;
-import javax.transaction.NotSupportedException;
-import javax.transaction.RollbackException;
-import javax.transaction.SystemException;
-import javax.transaction.Transaction;
-import javax.transaction.TransactionManager;
import org.apache.ignite.IgniteException;
import org.apache.ignite.cache.jta.jndi.CacheJndiTmFactory;
import org.apache.ignite.testframework.GridTestUtils;
diff --git
a/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheJtaConfigurationValidationSelfTest.java
b/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheJtaConfigurationValidationSelfTest.java
index db41a0cd4e7..c7957891836 100644
---
a/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheJtaConfigurationValidationSelfTest.java
+++
b/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheJtaConfigurationValidationSelfTest.java
@@ -18,7 +18,7 @@
package org.apache.ignite.internal.processors.cache;
import java.util.concurrent.Callable;
-import javax.transaction.TransactionManager;
+import jakarta.transaction.TransactionManager;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.cache.jta.CacheTmLookup;
import org.apache.ignite.configuration.CacheConfiguration;
diff --git
a/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheJtaFactoryConfigValidationSelfTest.java
b/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheJtaFactoryConfigValidationSelfTest.java
index ffb08e7da91..e7617f531bc 100644
---
a/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheJtaFactoryConfigValidationSelfTest.java
+++
b/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheJtaFactoryConfigValidationSelfTest.java
@@ -18,8 +18,8 @@
package org.apache.ignite.internal.processors.cache;
import java.util.concurrent.Callable;
+import jakarta.transaction.TransactionManager;
import javax.cache.configuration.Factory;
-import javax.transaction.TransactionManager;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
diff --git
a/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/GridJtaLifecycleAwareSelfTest.java
b/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/GridJtaLifecycleAwareSelfTest.java
index 695e9953298..9a4658e98d5 100644
---
a/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/GridJtaLifecycleAwareSelfTest.java
+++
b/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/GridJtaLifecycleAwareSelfTest.java
@@ -17,8 +17,8 @@
package org.apache.ignite.internal.processors.cache;
+import jakarta.transaction.TransactionManager;
import javax.cache.configuration.Factory;
-import javax.transaction.TransactionManager;
import org.apache.ignite.Ignite;
import org.apache.ignite.cache.CacheMode;
import org.apache.ignite.cache.jta.CacheTmLookup;
@@ -142,8 +142,8 @@ public class GridJtaLifecycleAwareSelfTest extends
GridAbstractLifecycleAwareSel
/** {@inheritDoc} */
@Test
- @Override public void testLifecycleAware() throws Exception {
- // No-op, see anothre tests.
+ @Override public void testLifecycleAware() {
+ // No-op, see other tests.
}
/** */
diff --git
a/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/GridJtaTransactionManagerSelfTest.java
b/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/GridJtaTransactionManagerSelfTest.java
index e85d196880f..cab956e9f0f 100644
---
a/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/GridJtaTransactionManagerSelfTest.java
+++
b/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/GridJtaTransactionManagerSelfTest.java
@@ -19,9 +19,10 @@ package org.apache.ignite.internal.processors.cache;
import java.util.Arrays;
import java.util.Collection;
+import jakarta.transaction.Transaction;
+import jakarta.transaction.TransactionManager;
import javax.cache.configuration.Factory;
-import javax.transaction.Transaction;
-import javax.transaction.TransactionManager;
+import
com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionManagerImple;
import org.apache.ignite.IgniteCache;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.configuration.TransactionConfiguration;
@@ -31,9 +32,6 @@ import org.apache.ignite.transactions.TransactionIsolation;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
-import org.objectweb.jotm.Current;
-import org.objectweb.jotm.Jotm;
-import org.objectweb.jotm.rmi.RmiLocalConfiguration;
import static org.apache.ignite.cache.CacheMode.PARTITIONED;
import static org.apache.ignite.transactions.TransactionConcurrency.OPTIMISTIC;
@@ -45,8 +43,8 @@ import static
org.apache.ignite.transactions.TransactionState.ACTIVE;
*/
@RunWith(Parameterized.class)
public class GridJtaTransactionManagerSelfTest extends GridCommonAbstractTest {
- /** Java Open Transaction Manager facade. */
- private static Jotm jotm;
+ /** Transaction manager. */
+ private static TransactionManager txMgr;
/**
* @return Test parameters.
@@ -77,18 +75,11 @@ public class GridJtaTransactionManagerSelfTest extends
GridCommonAbstractTest {
@Override protected void beforeTestsStarted() throws Exception {
super.beforeTestsStarted();
- jotm = new Jotm(true, false, new RmiLocalConfiguration());
-
- Current.setAppServer(false);
+ txMgr = new TransactionManagerImple();
startGrid();
}
- /** {@inheritDoc} */
- @Override protected void afterTestsStopped() throws Exception {
- jotm.stop();
- }
-
/**
* Test for switching tx context by JTA Manager.
*
@@ -102,7 +93,7 @@ public class GridJtaTransactionManagerSelfTest extends
GridCommonAbstractTest {
cfg.setDefaultTxConcurrency(txConcurrency);
cfg.setDefaultTxIsolation(isolation);
- TransactionManager jtaTm = jotm.getTransactionManager();
+ TransactionManager jtaTm = txMgr;
IgniteCache<Integer, String> cache = jcache();
@@ -120,8 +111,21 @@ public class GridJtaTransactionManagerSelfTest extends
GridCommonAbstractTest {
assertEquals(Integer.toString(1), cache.get(1));
+ org.apache.ignite.transactions.Transaction igniteTx =
grid().transactions().tx();
+
jtaTm.suspend();
+ // Narayana's TransactionManagerImple.suspend() only detaches the
JTA transaction from the
+ // current thread context without calling XAResource.end(xid,
TMSUSPEND) on enlisted
+ // XA resources. This behavior is fully compliant with the JTA
specification: the spec
+ // defines TransactionManager.suspend() as "suspend the current
transaction and return
+ // it" without requiring end() callbacks on XA resources.
+ // The previous JTA provider (JOTM) called end(TMSUSPEND) as an
implementation detail
+ // (not because the spec required it), which is why this test
worked out of the box
+ // with JOTM. To compensate for Narayana's spec-compliant
behavior, we must explicitly
+ // suspend the Ignite transaction to detach it from the thread.
+ igniteTx.suspend();
+
assertNull(grid().transactions().tx());
assertNull(cache.get(1));
@@ -148,6 +152,16 @@ public class GridJtaTransactionManagerSelfTest extends
GridCommonAbstractTest {
jtaTm.resume(tx1);
+ // Narayana's TransactionManagerImple.resume() only reattaches the
JTA transaction to the
+ // current thread context without calling XAResource.start(xid,
TMRESUME) on previously
+ // enlisted XA resources. This is also fully compliant with the
JTA specification:
+ // TransactionManager.resume() is defined as "resume a previously
suspended transaction"
+ // without requiring start() callbacks on XA resources.
+ // Similarly to suspend(), JOTM called start(TMRESUME) as an
implementation detail,
+ // not because the spec required it. To compensate for Narayana's
behavior, we must
+ // explicitly resume the Ignite transaction to reattach it to the
thread.
+ igniteTx.resume();
+
assertNotNull(grid().transactions().tx());
assertEquals(ACTIVE, grid().transactions().tx().state());
@@ -177,7 +191,7 @@ public class GridJtaTransactionManagerSelfTest extends
GridCommonAbstractTest {
cfg.setDefaultTxConcurrency(txConcurrency);
cfg.setDefaultTxIsolation(isolation);
- TransactionManager jtaTm = jotm.getTransactionManager();
+ TransactionManager jtaTm = txMgr;
IgniteCache<Integer, String> cache = jcache();
@@ -231,7 +245,7 @@ public class GridJtaTransactionManagerSelfTest extends
GridCommonAbstractTest {
/** {@inheritDoc} */
@Override public TransactionManager create() {
- return jotm.getTransactionManager();
+ return txMgr;
}
}
}
diff --git
a/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/jta/AbstractCacheJtaSelfTest.java
b/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/jta/AbstractCacheJtaSelfTest.java
index 8fb9f1e7b6c..0a2e9a4b421 100644
---
a/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/jta/AbstractCacheJtaSelfTest.java
+++
b/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/jta/AbstractCacheJtaSelfTest.java
@@ -19,8 +19,11 @@ package org.apache.ignite.internal.processors.cache.jta;
import java.util.concurrent.Callable;
import java.util.concurrent.CountDownLatch;
-import javax.transaction.Status;
-import javax.transaction.UserTransaction;
+import jakarta.transaction.Status;
+import jakarta.transaction.TransactionManager;
+import jakarta.transaction.UserTransaction;
+import
com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionManagerImple;
+import com.arjuna.ats.internal.jta.transaction.arjunacore.UserTransactionImple;
import org.apache.ignite.IgniteCache;
import org.apache.ignite.cache.CacheMode;
import org.apache.ignite.configuration.CacheConfiguration;
@@ -30,8 +33,6 @@ import
org.apache.ignite.internal.processors.cache.GridCacheAbstractSelfTest;
import org.apache.ignite.testframework.GridTestSafeThreadFactory;
import org.apache.ignite.transactions.Transaction;
import org.junit.Test;
-import org.objectweb.jotm.Jotm;
-import org.objectweb.jotm.rmi.RmiLocalConfiguration;
import static org.apache.ignite.cache.CacheMode.PARTITIONED;
import static
org.apache.ignite.transactions.TransactionConcurrency.PESSIMISTIC;
@@ -45,23 +46,20 @@ public abstract class AbstractCacheJtaSelfTest extends
GridCacheAbstractSelfTest
/** */
private static final int GRID_CNT = 1;
- /** Java Open Transaction Manager facade. */
- protected static Jotm jotm;
+ /** Transaction manager. */
+ protected static TransactionManager txMgr;
+
+ /** User transaction. */
+ protected static UserTransaction userTx;
/** {@inheritDoc} */
@Override protected void beforeTestsStarted() throws Exception {
- jotm = new Jotm(true, false, new RmiLocalConfiguration());
+ txMgr = new TransactionManagerImple();
+ userTx = new UserTransactionImple();
super.beforeTestsStarted();
}
- /** {@inheritDoc} */
- @Override protected void afterTestsStopped() throws Exception {
- super.afterTestsStopped();
-
- jotm.stop();
- }
-
/** {@inheritDoc} */
@Override protected int gridCount() {
return GRID_CNT;
@@ -101,7 +99,7 @@ public abstract class AbstractCacheJtaSelfTest extends
GridCacheAbstractSelfTest
*/
@Test
public void testJta() throws Exception {
- UserTransaction jtaTx = jotm.getUserTransaction();
+ UserTransaction jtaTx = userTx;
IgniteCache<String, Integer> cache = jcache();
@@ -145,7 +143,7 @@ public abstract class AbstractCacheJtaSelfTest extends
GridCacheAbstractSelfTest
*/
@Test
public void testJtaTwoCaches() throws Exception {
- UserTransaction jtaTx = jotm.getUserTransaction();
+ UserTransaction jtaTx = userTx;
IgniteEx ignite = grid(0);
@@ -205,7 +203,7 @@ public abstract class AbstractCacheJtaSelfTest extends
GridCacheAbstractSelfTest
@Override public Object call() throws Exception {
assertNull(grid(0).transactions().tx());
- UserTransaction jtaTx = jotm.getUserTransaction();
+ UserTransaction jtaTx = userTx;
jtaTx.begin();
diff --git
a/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/jta/GridPartitionedCacheJtaFactorySelfTest.java
b/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/jta/GridPartitionedCacheJtaFactorySelfTest.java
index ec9f8e8761d..df090fc0fd0 100644
---
a/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/jta/GridPartitionedCacheJtaFactorySelfTest.java
+++
b/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/jta/GridPartitionedCacheJtaFactorySelfTest.java
@@ -17,8 +17,8 @@
package org.apache.ignite.internal.processors.cache.jta;
+import jakarta.transaction.TransactionManager;
import javax.cache.configuration.Factory;
-import javax.transaction.TransactionManager;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.configuration.TransactionConfiguration;
@@ -42,7 +42,7 @@ public class GridPartitionedCacheJtaFactorySelfTest extends
AbstractCacheJtaSelf
/** {@inheritDoc} */
@Override public TransactionManager create() {
- return jotm.getTransactionManager();
+ return txMgr;
}
}
}
diff --git
a/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/jta/GridPartitionedCacheJtaLookupClassNameSelfTest.java
b/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/jta/GridPartitionedCacheJtaLookupClassNameSelfTest.java
index 573a5433189..09bc63a0d3b 100644
---
a/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/jta/GridPartitionedCacheJtaLookupClassNameSelfTest.java
+++
b/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/jta/GridPartitionedCacheJtaLookupClassNameSelfTest.java
@@ -18,7 +18,7 @@
package org.apache.ignite.internal.processors.cache.jta;
import java.util.concurrent.Callable;
-import javax.transaction.TransactionManager;
+import jakarta.transaction.TransactionManager;
import org.apache.ignite.IgniteException;
import org.apache.ignite.cache.CacheAtomicityMode;
import org.apache.ignite.cache.jta.CacheTmLookup;
@@ -66,7 +66,7 @@ public class GridPartitionedCacheJtaLookupClassNameSelfTest
extends AbstractCach
public static class TestTmLookup implements CacheTmLookup {
/** {@inheritDoc} */
@Override public TransactionManager getTm() {
- return jotm.getTransactionManager();
+ return txMgr;
}
}
diff --git a/modules/rest-http/pom.xml b/modules/rest-http/pom.xml
index 24610347ac0..0125e003c89 100644
--- a/modules/rest-http/pom.xml
+++ b/modules/rest-http/pom.xml
@@ -82,9 +82,15 @@
<version>${jetty.version}</version>
</dependency>
+ <dependency>
+ <groupId>org.eclipse.jetty.ee11</groupId>
+ <artifactId>jetty-ee11-servlet</artifactId>
+ <version>${jetty.version}</version>
+ </dependency>
+
<dependency>
<groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-servlet</artifactId>
+ <artifactId>jetty-session</artifactId>
<version>${jetty.version}</version>
</dependency>
@@ -95,8 +101,8 @@
</dependency>
<dependency>
- <groupId>org.eclipse.jetty.toolchain</groupId>
- <artifactId>jetty-jakarta-servlet-api</artifactId>
+ <groupId>jakarta.servlet</groupId>
+ <artifactId>jakarta.servlet-api</artifactId>
<version>${jetty-jakarta-servlet-api.version}</version>
</dependency>
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 dcb5d1d6e4b..c91ed3ec587 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
@@ -31,13 +31,14 @@ import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.UUID;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.InjectableValues;
-import com.fasterxml.jackson.databind.ObjectMapper;
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;
+import com.fasterxml.jackson.databind.InjectableValues;
+import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteLogger;
import org.apache.ignite.IgniteSystemProperties;
@@ -72,8 +73,6 @@ import org.apache.ignite.lang.IgniteBiTuple;
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 @@ import static
org.apache.ignite.internal.processors.rest.GridRestResponse.STATUS
/**
* 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 @@ public class GridJettyRestHandler extends AbstractHandler
{
}
/** {@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 2631840cc0b..5bdad0701d9 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.A;
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 @@ public class GridJettyRestProtocol extends
GridRestProtocolAdapter {
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 @@ public class GridJettyRestProtocol extends
GridRestProtocolAdapter {
XmlConfiguration cfg;
try {
- Resource rsrc = Resource.newResource(cfgUrl);
+ Resource rsrc =
ResourceFactory.root().newResource(cfgUrl.toURI());
cfg = new XmlConfiguration(rsrc);
}
@@ -336,18 +325,27 @@ public class GridJettyRestProtocol extends
GridRestProtocolAdapter {
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<String> paths = new HashSet<>();
@@ -372,13 +370,11 @@ public class GridJettyRestProtocol extends
GridRestProtocolAdapter {
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 275cac62c22..ee4b749a4f9 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 72b162b467a..ed137e252cb 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 @@ package
org.apache.ignite.internal.processors.rest.protocols.http.jetty;
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,17 @@ public class WelcomeHandler extends AbstractHandler {
}
/** {@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();
+
+ res.setStatus(HttpServletResponse.SC_OK);
+
if (target.startsWith("/favicon.ico")) {
res.setContentType("image/x-icon");
res.getOutputStream().write(favicon);
@@ -73,9 +75,6 @@ public class WelcomeHandler extends AbstractHandler {
}
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 c057aa56443..7ea3a27cda5 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.internal.util.typedef.T2;
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/spring/src/main/java/org/apache/ignite/internal/processors/resource/GridResourceSpringBeanInjector.java
b/modules/spring/src/main/java/org/apache/ignite/internal/processors/resource/GridResourceSpringBeanInjector.java
index 876e79fc093..9980bf9598e 100644
---
a/modules/spring/src/main/java/org/apache/ignite/internal/processors/resource/GridResourceSpringBeanInjector.java
+++
b/modules/spring/src/main/java/org/apache/ignite/internal/processors/resource/GridResourceSpringBeanInjector.java
@@ -21,12 +21,12 @@ import java.io.Serializable;
import java.lang.reflect.Modifier;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.internal.managers.deployment.GridDeployment;
+import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.resources.SpringResource;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.beans.factory.NoUniqueBeanDefinitionException;
import org.springframework.context.ApplicationContext;
-import org.springframework.util.StringUtils;
/**
* Spring bean injector implementation works with resources provided
@@ -111,7 +111,7 @@ public class GridResourceSpringBeanInjector implements
GridResourceInjector {
String beanName = annotation.resourceName();
Class<?> beanCls = annotation.resourceClass();
- boolean oneParamSet = !StringUtils.isEmpty(beanName) ^ beanCls !=
SpringResource.DEFAULT.class;
+ boolean oneParamSet = !F.isEmpty(beanName) ^ beanCls !=
SpringResource.DEFAULT.class;
if (!oneParamSet) {
throw new IgniteCheckedException("Either bean name or its class
must be specified in @SpringResource, " +
@@ -119,7 +119,7 @@ public class GridResourceSpringBeanInjector implements
GridResourceInjector {
}
try {
- return !StringUtils.isEmpty(beanName) ?
springCtx.getBean(beanName) : springCtx.getBean(beanCls);
+ return !F.isEmpty(beanName) ? springCtx.getBean(beanName) :
springCtx.getBean(beanCls);
}
catch (NoUniqueBeanDefinitionException e) {
throw e;
diff --git
a/modules/spring/src/test/java/org/apache/ignite/internal/processors/resource/GridResourceProcessorSelfTest.java
b/modules/spring/src/test/java/org/apache/ignite/internal/processors/resource/GridResourceProcessorSelfTest.java
index 828bf600bb5..15e9e324063 100644
---
a/modules/spring/src/test/java/org/apache/ignite/internal/processors/resource/GridResourceProcessorSelfTest.java
+++
b/modules/spring/src/test/java/org/apache/ignite/internal/processors/resource/GridResourceProcessorSelfTest.java
@@ -406,7 +406,7 @@ public class GridResourceProcessorSelfTest extends
GridCommonAbstractTest {
try {
// Should not be null if task has been completed successfully
(meaning all resources have been injected).
- Assert.notNull(g.compute().execute(TestTask.class, null));
+ Assert.notNull(g.compute().execute(TestTask.class, null), "must
not be null");
}
finally {
stopGrid();
diff --git
a/modules/urideploy/src/main/java/org/apache/ignite/spi/deployment/uri/GridUriDeploymentSpringDocument.java
b/modules/urideploy/src/main/java/org/apache/ignite/spi/deployment/uri/GridUriDeploymentSpringDocument.java
index 0143537c522..0a315901351 100644
---
a/modules/urideploy/src/main/java/org/apache/ignite/spi/deployment/uri/GridUriDeploymentSpringDocument.java
+++
b/modules/urideploy/src/main/java/org/apache/ignite/spi/deployment/uri/GridUriDeploymentSpringDocument.java
@@ -24,7 +24,7 @@ import org.apache.ignite.compute.ComputeTask;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.spi.IgniteSpiException;
import org.springframework.beans.BeansException;
-import org.springframework.beans.factory.xml.XmlBeanFactory;
+import org.springframework.beans.factory.support.DefaultListableBeanFactory;
/**
* Helper class which helps to read deployer and tasks information from
@@ -32,7 +32,7 @@ import org.springframework.beans.factory.xml.XmlBeanFactory;
*/
class GridUriDeploymentSpringDocument {
/** Initialized springs beans factory. */
- private final XmlBeanFactory factory;
+ private final DefaultListableBeanFactory factory;
/** List of tasks from package description. */
private List<Class<? extends ComputeTask<?, ?>>> tasks;
@@ -42,7 +42,7 @@ class GridUriDeploymentSpringDocument {
*
* @param factory Configuration factory.
*/
- GridUriDeploymentSpringDocument(XmlBeanFactory factory) {
+ GridUriDeploymentSpringDocument(DefaultListableBeanFactory factory) {
assert factory != null;
this.factory = factory;
diff --git
a/modules/urideploy/src/main/java/org/apache/ignite/spi/deployment/uri/GridUriDeploymentSpringParser.java
b/modules/urideploy/src/main/java/org/apache/ignite/spi/deployment/uri/GridUriDeploymentSpringParser.java
index 842a8cf9be0..f62ce2a146a 100644
---
a/modules/urideploy/src/main/java/org/apache/ignite/spi/deployment/uri/GridUriDeploymentSpringParser.java
+++
b/modules/urideploy/src/main/java/org/apache/ignite/spi/deployment/uri/GridUriDeploymentSpringParser.java
@@ -24,7 +24,8 @@ import org.apache.ignite.IgniteLogger;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.spi.IgniteSpiException;
import org.springframework.beans.BeansException;
-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.ByteArrayResource;
import org.springframework.core.io.InputStreamResource;
@@ -52,8 +53,8 @@ final class GridUriDeploymentSpringParser {
* @param log Logger
* @return Grid wrapper for the input stream.
* @throws org.apache.ignite.spi.IgniteSpiException Thrown if incoming
input stream could not be
- * read or parsed by {@code Spring} {@link XmlBeanFactory}.
- * @see XmlBeanFactory
+ * read or parsed by {@code Spring} {@link
DefaultListableBeanFactory}.
+ * @see DefaultListableBeanFactory
*/
static GridUriDeploymentSpringDocument parseTasksDocument(InputStream in,
IgniteLogger log) throws
IgniteSpiException {
@@ -65,7 +66,8 @@ final class GridUriDeploymentSpringParser {
try {
U.copy(in, out);
- XmlBeanFactory factory = new XmlBeanFactory(new
ByteArrayResource(out.toByteArray()));
+ DefaultListableBeanFactory factory = new
DefaultListableBeanFactory();
+ new XmlBeanDefinitionReader(factory).loadBeanDefinitions(new
ByteArrayResource(out.toByteArray()));
return new GridUriDeploymentSpringDocument(factory);
}
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 b366d4fe2fa..b7d7fb4c7ab 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.apache.ignite.testframework.junits.spi.GridSpiTestConfig;
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 6fe7358724e..44b1dd498ed 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.
-->
-<!DOCTYPE web-app PUBLIC
- "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
- "http://java.sun.com/dtd/web-app_2_3.dtd" >
-
-<web-app>
+<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
+
https://jakarta.ee/xml/ns/jakartaee/web-app_6_1.xsd"
+ version="6.1">
<display-name>Archetype Created Web Application</display-name>
<listener>
diff --git a/modules/web/ignite-websphere-test/pom.xml
b/modules/web/ignite-websphere-test/pom.xml
index 84dad0d4b6c..64954203288 100644
--- a/modules/web/ignite-websphere-test/pom.xml
+++ b/modules/web/ignite-websphere-test/pom.xml
@@ -43,12 +43,18 @@
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>ignite-jta</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>jakarta.transaction</groupId>
+ <artifactId>jakarta.transaction-api</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
- <groupId>com.ibm.websphere.appserver.api</groupId>
-
<artifactId>com.ibm.websphere.appserver.api.transaction</artifactId>
- <version>1.1.113</version>
+ <groupId>jakarta.transaction</groupId>
+ <artifactId>jakarta.transaction-api</artifactId>
+ <version>2.0.1</version>
</dependency>
</dependencies>
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 e7f33aa3fc3..f859bfdab58 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
@@ -19,13 +19,13 @@ package org.apache.ignite.webtest;
import java.io.IOException;
import java.io.PrintWriter;
-import javax.transaction.RollbackException;
-import javax.transaction.TransactionManager;
-import com.ibm.tx.jta.TransactionManagerFactory;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
+import jakarta.transaction.RollbackException;
+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<Integer, String> 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 94cb0cf6b6d..c4d24ea9bd3 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.
-->
-<!DOCTYPE web-app PUBLIC
- "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
- "http://java.sun.com/dtd/web-app_2_3.dtd" >
-
-<web-app>
+<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
+
https://jakarta.ee/xml/ns/jakartaee/web-app_6_1.xsd"
+ version="6.1">
<display-name>Archetype Created Web Application</display-name>
<listener>
diff --git a/modules/web/pom.xml b/modules/web/pom.xml
index d75e7d45420..26c082bb43d 100644
--- a/modules/web/pom.xml
+++ b/modules/web/pom.xml
@@ -47,8 +47,8 @@
</dependency>
<dependency>
- <groupId>org.eclipse.jetty.toolchain</groupId>
- <artifactId>jetty-jakarta-servlet-api</artifactId>
+ <groupId>jakarta.servlet</groupId>
+ <artifactId>jakarta.servlet-api</artifactId>
<version>${jetty-jakarta-servlet-api.version}</version>
</dependency>
@@ -65,15 +65,15 @@
</dependency>
<dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-servlets</artifactId>
+ <groupId>org.eclipse.jetty.ee11</groupId>
+ <artifactId>jetty-ee11-servlets</artifactId>
<version>${jetty.version}</version>
<scope>test</scope>
</dependency>
<dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-webapp</artifactId>
+ <groupId>org.eclipse.jetty.ee11</groupId>
+ <artifactId>jetty-ee11-webapp</artifactId>
<version>${jetty.version}</version>
<scope>test</scope>
</dependency>
diff --git
a/modules/web/src/main/java/org/apache/ignite/cache/websession/WebSessionFilter.java
b/modules/web/src/main/java/org/apache/ignite/cache/websession/WebSessionFilter.java
index f4ce1f55a2f..c297f5c5c53 100644
---
a/modules/web/src/main/java/org/apache/ignite/cache/websession/WebSessionFilter.java
+++
b/modules/web/src/main/java/org/apache/ignite/cache/websession/WebSessionFilter.java
@@ -21,10 +21,6 @@ import java.io.IOException;
import java.util.Collection;
import java.util.Map;
import java.util.Objects;
-import javax.cache.CacheException;
-import javax.cache.expiry.Duration;
-import javax.cache.expiry.ExpiryPolicy;
-import javax.cache.expiry.ModifiedExpiryPolicy;
import jakarta.servlet.Filter;
import jakarta.servlet.FilterChain;
import jakarta.servlet.FilterConfig;
@@ -35,6 +31,10 @@ import jakarta.servlet.ServletResponse;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletRequestWrapper;
import jakarta.servlet.http.HttpSession;
+import javax.cache.CacheException;
+import javax.cache.expiry.Duration;
+import javax.cache.expiry.ExpiryPolicy;
+import javax.cache.expiry.ModifiedExpiryPolicy;
import org.apache.ignite.Ignite;
import org.apache.ignite.IgniteCache;
import org.apache.ignite.IgniteClientDisconnectedException;
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 45b4ecf838f..c5c6e69902d 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.internal.util.typedef.internal.U;
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 @@ public class WebSessionSelfTest extends
GridCommonAbstractTest {
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 b620085e09e..a2d0ca6cd39 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.HttpServletResponse;
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 d51b87d27a6..bb1e5ee85d8 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.
-->
-<web-app xmlns="http://java.sun.com/xml/ns/javaee"
+<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
- http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
- version="3.0">
+ xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
+
https://jakarta.ee/xml/ns/jakartaee/web-app_6_1.xsd"
+ version="6.1">
<!-- Declare listener for web sessions caching. -->
<listener>
diff --git a/parent/pom.xml b/parent/pom.xml
index feef581d691..6acf8838ec5 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -83,10 +83,10 @@
<javax.cache.bundle.version>1.0.0_1</javax.cache.bundle.version>
<javax.cache.tck.version>1.1.1</javax.cache.tck.version>
<javax.cache.version>1.0.0</javax.cache.version>
- <jboss.rmi.version>1.0.6.Final</jboss.rmi.version>
+ <jboss.logging.version>3.6.3.Final</jboss.logging.version>
<jetbrains.annotations.version>26.1.0</jetbrains.annotations.version>
- <jetty.version>11.0.25</jetty.version>
-
<jetty-jakarta-servlet-api.version>5.0.2</jetty-jakarta-servlet-api.version>
+ <jetty.version>12.1.10</jetty.version>
+
<jetty-jakarta-servlet-api.version>6.1.0</jetty-jakarta-servlet-api.version>
<jmh.version>1.37</jmh.version>
<jna.version>4.5.2</jna.version>
<jnr.posix.version>3.1.15</jnr.posix.version>
@@ -107,7 +107,7 @@
<postgres.connector.version>42.7.3</postgres.connector.version>
<slf4j.version>2.0.17</slf4j.version>
<snappy.version>1.1.10.8</snappy.version>
- <spring.version>5.3.39</spring.version>
+ <spring.version>6.2.19</spring.version>
<surefire.version>3.5.6</surefire.version>
<tomcat.version>10.0.27</tomcat.version>
<yardstick.version>0.8.3</yardstick.version>
@@ -117,6 +117,7 @@
<commons.lang3.version>3.20.0</commons.lang3.version>
<ignite-kafka-ext.version>1.0.0</ignite-kafka-ext.version>
<xstream.version>1.4.17</xstream.version>
+ <narayana.version>7.3.4.Final</narayana.version>
<!-- Maven plugins versions -->
<maven.javadoc.plugin.version>3.12.0</maven.javadoc.plugin.version>
@@ -683,6 +684,18 @@
<requireMavenVersion>
<version>[3.9.6,)</version>
</requireMavenVersion>
+ <bannedDependencies>
+ <excludes>
+ <exclude>javax.transaction:jta</exclude>
+
<exclude>javax.transaction:javax.transaction-api</exclude>
+
<exclude>jakarta.transaction:jakarta.transaction-api:(,2.0.1)</exclude>
+ </excludes>
+ <message>
+ Use
jakarta.transaction:jakarta.transaction-api:2.0.1+ only.
+ Add <exclusions> to the transitive
source if this fails.
+ </message>
+ </bannedDependencies>
+
</rules>
</configuration>
<executions>