| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| <!DOCTYPE html> |
| |
| |
| |
| <html lang="en"> |
| <head> |
| <!-- Global site tag (gtag.js) - Google Analytics --> |
| <script async src="https://www.googletagmanager.com/gtag/js?id=UA-1382082-1"></script> |
| <script> |
| window.dataLayer = window.dataLayer || []; |
| function gtag(){dataLayer.push(arguments);} |
| gtag('js', new Date()); |
| |
| gtag('config', 'UA-61232409-1'); |
| </script> |
| |
| |
| |
| <meta charset="UTF-8"> |
| <title>Apache Ignite with Spring Transactions | Ignite Documentation</title> |
| |
| <link rel="canonical" href="/docs/spring/spring-tx" /> |
| |
| |
| <link rel="stylesheet" href="/assets/css/styles.css?1658382976"> |
| <link rel="stylesheet" href="/assets/css/asciidoc-pygments.css"> |
| <link rel="shortcut icon" href="/favicon.ico"> |
| <meta name='viewport' content='width=device-width, height=device-height, initial-scale=1.0, minimum-scale=1.0'> |
| |
| <link rel="stylesheet" |
| href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"> |
| |
| <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> |
| <script type="text/javascript" src="/assets/js/jquery.swiftype.autocomplete.js?1658382976"></script> |
| <script type="text/javascript" src="/assets/js/anchor.min.js?1658382976"></script> |
| |
| |
| </head> |
| <body> |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| |
| <header> |
| <!--#include virtual="/includes/promotion_banner.html" --> |
| <div class="container"> |
| <button type='button' class='menu' title='Docs menu'> |
| <img src="{{'assets/images/menu-icon.svg'|relative_url}}" width="18" height="12" alt="menu icon" /> |
| </button> |
| <div class='home'> |
| <a href="/" class='home' title='Apache Ignite home'> |
| <img src="{{'assets/images/apache_ignite_logo.svg'|relative_url}}" alt="Apache Ignite logo" width="103" height="36" > |
| </a> |
| </div> |
| <form class='search'> |
| <button class="search-close" type='button'><img src='{{"assets/images/cancel.svg"|relative_url}}' alt="close" width="10" height="10" /></button> |
| <input type="search" placeholder="Search…" id="search-input"> |
| </form> |
| <button type='button' class='top-nav-toggle'>⋮</button> |
| </div> |
| </header> |
| |
| |
| |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| <link rel="stylesheet" href="/assets/css/docs.css"> |
| <section class='page-docs'> |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| |
| |
| |
| |
| <nav class='left-nav' data-swiftype-index='false'> |
| |
| |
| <li> |
| |
| |
| <a href="/docs/extensions/aws/aws" class=''>Amazon S3 IP Finder</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/extensions/camel/camel-streamer" class=''>Apache Camel Streamer</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/extensions/flink/flink-streamer" class=''>Apache Flink Streamer</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/extensions/flume/flume-sink" class=''>Apache Flume Sink</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/extensions/azure/azure" class=''>Apache Ignite Azure Module</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/extensions/gce/gce" class=''>Apache Ignite GCE Module</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/extensions/pub-sub/pub-sub" class=''>Apache Ignite Pub/Sub Module</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/extensions/spring/spring-boot" class=''>Apache Ignite and Spring Boot</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/extensions/spring/spring-data" class=''>Apache Ignite and Spring Data</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/extensions/spring/spring-caching" class=''>Apache Ignite and Spring Cache</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/extensions/spring/spring-sessions" class=''>Apache Ignite and Spring Session</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/extensions/spring/spring-tx" class=''>Apache Ignite and Spring Transactions</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/extensions/kafka/kafka-streamer" class=''>Apache Kafka Streamer</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/extensions/storm/storm-streamer" class=''>Apache Storm Streamer</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/extensions/cdc/change-data-capture-extensions" class=''>Change Data Capture Extension</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/extensions/jms/jms-streamer" class=''>JMS Streamer</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/extensions/mqtt/mqtt-streamer" class=''>MQTT Streamer</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/extensions/perf-statistics/performance-statistics" class=''>Performance Statistics Extension</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/extensions/rocketmq/rocketmq-streamer" class=''>RocketMQ Streamer</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/extensions/topology-validator/topology-validator" class=''>Topology Validator</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/extensions/twitter/twitter-streamer" class=''>Twitter Streamer</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/extensions/zeromq/zeromq-streamer" class=''>ZeroMQ Streamer</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/extensions/zookeeper/zookeeper-ip" class=''>ZooKeeper IP Finder</a> |
| |
| </li> |
| |
| </nav> |
| <div class="left-nav__overlay"></div> |
| |
| |
| <article data-swiftype-index='true'> |
| <a class='edit-link' href="/_docs/spring/spring-tx.adoc" target="_blank">Edit</a> |
| |
| <h1>Apache Ignite with Spring Transactions</h1> |
| |
| <div class="sect1"> |
| <h2 id="overview">Overview</h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p><a href="http://docs.spring.io/spring/docs/current/spring-framework-reference/html/transaction.html" target="_blank" rel="noopener">Spring Transactions</a> |
| abstraction allows you to use a declarative transaction management to concentrate on business logic rather than |
| transaction life-cycle.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Apache Ignite provides the <code>ignite-spring-tx-ext</code> extension that allows to manage |
| <a href="https://ignite.apache.org/docs/latest/key-value-api/transactions#performing-transactions" target="_blank" rel="noopener">Apache Ignite Transactions</a> |
| through the Spring Transactions abstraction. The mentioned above integration is achieved by providing implementations of the |
| <code>TransactionManager</code> Spring Transactions interface. There are two such implementations: <code>SpringTransactionManager</code> and |
| <code>IgniteClientSpringTransactionManager</code>, which use either Apache Ignite node or Apache Ignite thin client to connect to the |
| Apache Ignite cluster and manage the Apache Ignite transactions.</p> |
| </div> |
| <div class="paragraph"> |
| <p>To enable declarative transaction management in your Spring application, create and configure |
| <code>SpringTransactionManager</code> or <code>IgniteClientSpringTransactionManager</code> bean in the Spring application context. The choice |
| of implementation depends on your preferable way to access the Apache Ignite cluster.</p> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="maven-configuration">Maven Configuration</h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>If you use Maven to manage dependencies in your project, you can add Spring Transactions extension dependencies to |
| the application’s <code>pom.xml</code> file like this:</p> |
| </div> |
| <code-tabs><code-tab data-tab='For all Apache Ignite versions since 2.12.0'><div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight"><code data-lang="xml"><span class="nt"><dependency></span> |
| <span class="nt"><groupId></span>org.apache.ignite<span class="nt"></groupId></span> |
| <span class="nt"><artifactId></span>ignite-spring-tx-ext<span class="nt"></artifactId></span> |
| <span class="nt"><version></span>${ignite-spring-tx-ext.version}<span class="nt"></version></span> |
| <span class="nt"></dependency></span> |
| |
| <span class="nt"><dependency></span> |
| <span class="nt"><groupId></span>org.apache.ignite<span class="nt"></groupId></span> |
| <span class="nt"><artifactId></span>ignite-core<span class="nt"></artifactId></span> |
| <span class="nt"><version></span>${ignite.version}<span class="nt"></version></span> |
| <span class="nt"></dependency></span> |
| |
| <span class="nt"><dependency></span> |
| <span class="nt"><groupId></span>org.apache.ignite<span class="nt"></groupId></span> |
| <span class="nt"><artifactId></span>ignite-spring<span class="nt"></artifactId></span> |
| <span class="nt"><version></span>${ignite.version}<span class="nt"></version></span> |
| <span class="nt"><exclusions></span> |
| <span class="nt"><exclusion></span> |
| <span class="nt"><groupId></span>org.springframework<span class="nt"></groupId></span> |
| <span class="nt"><artifactId></span>spring-context<span class="nt"></artifactId></span> |
| <span class="nt"></exclusion></span> |
| <span class="nt"></exclusions></span> |
| <span class="nt"></dependency></span> |
| |
| <span class="nt"><dependency></span> |
| <span class="nt"><groupId></span>org.springframework<span class="nt"></groupId></span> |
| <span class="nt"><artifactId></span>spring-context<span class="nt"></artifactId></span> |
| <span class="nt"><version></span>${spring.version}<span class="nt"></version></span> |
| <span class="nt"></dependency></span> |
| |
| <span class="nt"><dependency></span> |
| <span class="nt"><groupId></span>org.springframework<span class="nt"></groupId></span> |
| <span class="nt"><artifactId></span>spring-tx<span class="nt"></artifactId></span> |
| <span class="nt"><version></span>${spring.version}<span class="nt"></version></span> |
| <span class="nt"></dependency></span></code></pre> |
| </div> |
| </div></code-tab><code-tab data-tab=' For Apache Ignite 2.11.0'><div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight"><code data-lang="xml"><span class="nt"><dependency></span> |
| <span class="nt"><groupId></span>org.apache.ignite<span class="nt"></groupId></span> |
| <span class="nt"><artifactId></span>ignite-spring-tx-ext<span class="nt"></artifactId></span> |
| <span class="nt"><version></span>${ignite-spring-tx-ext.version}<span class="nt"></version></span> |
| <span class="nt"></dependency></span> |
| |
| <span class="nt"><dependency></span> |
| <span class="nt"><groupId></span>org.apache.ignite<span class="nt"></groupId></span> |
| <span class="nt"><artifactId></span>ignite-core<span class="nt"></artifactId></span> |
| <span class="nt"><version></span>${ignite.version}<span class="nt"></version></span> |
| <span class="nt"></dependency></span> |
| |
| <span class="nt"><dependency></span> |
| <span class="nt"><groupId></span>org.apache.ignite<span class="nt"></groupId></span> |
| <span class="nt"><artifactId></span>ignite-spring<span class="nt"></artifactId></span> |
| <span class="nt"><version></span>${ignite.version}<span class="nt"></version></span> |
| <span class="nt"><exclusions></span> |
| <span class="nt"><exclusion></span> |
| <span class="nt"><groupId></span>org.springframework<span class="nt"></groupId></span> |
| <span class="nt"><artifactId></span>spring-context<span class="nt"></artifactId></span> |
| <span class="nt"></exclusion></span> |
| <span class="nt"><exclusion></span> |
| <span class="nt"><groupId></span>org.springframework<span class="nt"></groupId></span> |
| <span class="nt"><artifactId></span>spring-core<span class="nt"></artifactId></span> |
| <span class="nt"></exclusion></span> |
| <span class="nt"><exclusion></span> |
| <span class="nt"><groupId></span>org.springframework<span class="nt"></groupId></span> |
| <span class="nt"><artifactId></span>spring-aop<span class="nt"></artifactId></span> |
| <span class="nt"></exclusion></span> |
| <span class="nt"><exclusion></span> |
| <span class="nt"><groupId></span>org.springframework<span class="nt"></groupId></span> |
| <span class="nt"><artifactId></span>spring-expressions<span class="nt"></artifactId></span> |
| <span class="nt"></exclusion></span> |
| <span class="nt"><exclusion></span> |
| <span class="nt"><groupId></span>org.springframework<span class="nt"></groupId></span> |
| <span class="nt"><artifactId></span>spring-beans<span class="nt"></artifactId></span> |
| <span class="nt"></exclusion></span> |
| <span class="nt"><exclusion></span> |
| <span class="nt"><groupId></span>org.springframework<span class="nt"></groupId></span> |
| <span class="nt"><artifactId></span>spring-jdbc<span class="nt"></artifactId></span> |
| <span class="nt"></exclusion></span> |
| <span class="nt"><exclusion></span> |
| <span class="nt"><groupId></span>org.springframework<span class="nt"></groupId></span> |
| <span class="nt"><artifactId></span>spring-tx<span class="nt"></artifactId></span> |
| <span class="nt"></exclusion></span> |
| <span class="nt"></exclusions></span> |
| <span class="nt"></dependency></span> |
| |
| <span class="nt"><dependency></span> |
| <span class="nt"><groupId></span>org.springframework<span class="nt"></groupId></span> |
| <span class="nt"><artifactId></span>spring-context<span class="nt"></artifactId></span> |
| <span class="nt"><version></span>${spring.version}<span class="nt"></version></span> |
| <span class="nt"></dependency></span> |
| |
| <span class="nt"><dependency></span> |
| <span class="nt"><groupId></span>org.springframework<span class="nt"></groupId></span> |
| <span class="nt"><artifactId></span>spring-tx<span class="nt"></artifactId></span> |
| <span class="nt"><version></span>${spring.version}<span class="nt"></version></span> |
| <span class="nt"></dependency></span></code></pre> |
| </div> |
| </div></code-tab></code-tabs> |
| <div class="paragraph"> |
| <p>Replace <code>${ignite-spring-tx-ext.version}</code>, <code>${spring.version}</code>, and |
| <code>${ignite.version}</code> with an actual version of Apache Ignite Spring Transactions extension, Spring, and |
| Apache Ignite dependency you need, respectively.</p> |
| </div> |
| <div class="paragraph"> |
| <p>The table below shows available versions of the Apache Ignite Spring Transactions extension and compatible versions |
| of the Apache Ignite and Spring.</p> |
| </div> |
| <table class="tableblock frame-all grid-all stripes-even stretch"> |
| <colgroup> |
| <col style="width: 28.5714%;"> |
| <col style="width: 35.7142%;"> |
| <col style="width: 35.7144%;"> |
| </colgroup> |
| <thead> |
| <tr> |
| <th class="tableblock halign-left valign-top">Apache Ignite Spring Transactions extension version</th> |
| <th class="tableblock halign-left valign-top">Apache Ignite versions</th> |
| <th class="tableblock halign-left valign-top">Spring versions</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">1.0.0</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">All versions since 2.11.0</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">All versions since 4.3.0</p></td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="apache-ignite-node-transaction-manager-configuration">Apache Ignite Node Transaction Manager Configuration</h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>This chapter shows how to set up <code>SpringTransactionManager</code> that relies on Apache Ignite node to connect to the cluster |
| and to manage transactions. The configuration consists of two steps - |
| <a href="/docs/extensions/extensions-and-integrations/spring/spring-tx#cluster-connection-configuration">Cluster connection configuration</a> |
| and <a href="/docs/extensions/extensions-and-integrations/spring/spring-tx#transaction-concurrency-mode-configuration">Transaction concurrency mode configuration</a>.</p> |
| </div> |
| <div class="sect2"> |
| <h3 id="cluster-connection-configuration">Cluster Connection Configuration</h3> |
| <div class="paragraph"> |
| <p>Cluster connection configuration defines Apache Ignite node used by <code>SpringTransactionManager</code> to access the cluster. |
| There are several approaches to do this:</p> |
| </div> |
| <div class="admonitionblock note"> |
| <table> |
| <tr> |
| <td class="icon"> |
| <div class="title">Note</div> |
| </td> |
| <td class="content"> |
| <div class="paragraph"> |
| <p>Mixing of multiple approaches is incorrect and results in the exception during the manager startup.</p> |
| </div> |
| </td> |
| </tr> |
| </table> |
| </div> |
| <h3 id="1-specifying-name-of-the-manually-started-apache-ignite-node-instance" class="discrete">1. Specifying Name of the Manually Started Apache Ignite Node Instance</h3> |
| <div class="paragraph"> |
| <p>This approach is suitable if you have Apache Ignite node instance already running in your application.</p> |
| </div> |
| <code-tabs><code-tab data-tab='Java'><div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight"><code data-lang="java"><span class="nd">@Configuration</span> |
| <span class="nd">@EnableTransactionManagement</span> |
| <span class="kd">public</span> <span class="kd">class</span> <span class="nc">SpringApplicationConfiguration</span> <span class="o">{</span> |
| <span class="nd">@Bean</span> |
| <span class="kd">public</span> <span class="nc">SpringTransactionManager</span> <span class="nf">transactionManager</span><span class="o">()</span> <span class="o">{</span> |
| <span class="nc">SpringTransactionManager</span> <span class="n">mgr</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">SpringTransactionManager</span><span class="o">();</span> |
| |
| <span class="n">mgr</span><span class="o">.</span><span class="na">setIgniteInstanceName</span><span class="o">(</span><span class="s">"<name of the Apache Ignite node instance>"</span><span class="o">);</span> |
| |
| <span class="k">return</span> <span class="n">mgr</span><span class="o">;</span> |
| <span class="o">}</span> |
| <span class="o">}</span></code></pre> |
| </div> |
| </div></code-tab><code-tab data-tab='XML'><div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight"><code data-lang="xml"><span class="nt"><beans</span> <span class="na">xmlns=</span><span class="s">"http://www.springframework.org/schema/beans"</span> |
| <span class="na">xmlns:xsi=</span><span class="s">"http://www.w3.org/2001/XMLSchema-instance"</span> |
| <span class="na">xmlns:tx=</span><span class="s">"http://www.springframework.org/schema/tx"</span> |
| <span class="na">xsi:schemaLocation=</span><span class="s">" |
| http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd |
| http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"</span><span class="nt">></span> |
| <span class="c"><!-- Provide Apache Ignite instance name. --></span> |
| <span class="nt"><bean</span> <span class="na">id=</span><span class="s">"transactionManager"</span> <span class="na">class=</span><span class="s">"org.apache.ignite.transactions.spring.SpringTransactionManager"</span><span class="nt">></span> |
| <span class="nt"><property</span> |
| <span class="na">name=</span><span class="s">"igniteInstanceName"</span> |
| <span class="na">value=</span><span class="s">"<name of the Apache Ignite node instance>"</span><span class="nt">/></span> |
| <span class="nt"></bean></span> |
| |
| <span class="c"><!-- Use annotation-driven transaction configuration. --></span> |
| <span class="nt"><tx:annotation-driven/></span> |
| <span class="nt"></beans></span></code></pre> |
| </div> |
| </div></code-tab></code-tabs> |
| <h3 id="2-specifying-apache-ignite-node-configuration" class="discrete">2. Specifying Apache Ignite Node Configuration</h3> |
| <div class="paragraph"> |
| <p>In this case, Apache Ignite node instance is started automatically by the manager based on the provided configuration.</p> |
| </div> |
| <code-tabs><code-tab data-tab='Java'><div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight"><code data-lang="java"><span class="nd">@Configuration</span> |
| <span class="nd">@EnableTransactionManagement</span> |
| <span class="kd">public</span> <span class="kd">class</span> <span class="nc">SpringApplicationConfiguration</span> <span class="o">{</span> |
| <span class="nd">@Bean</span> |
| <span class="kd">public</span> <span class="nc">SpringTransactionManager</span> <span class="nf">transactionManager</span><span class="o">()</span> <span class="o">{</span> |
| <span class="nc">SpringTransactionManager</span> <span class="n">mgr</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">SpringTransactionManager</span><span class="o">();</span> |
| |
| <span class="n">mgr</span><span class="o">.</span><span class="na">setConfiguration</span><span class="o">(</span><span class="k">new</span> <span class="nc">IgniteConfiguration</span><span class="o">()</span> |
| <span class="o">.</span><span class="na">setIgniteInstanceName</span><span class="o">(</span><span class="s">"<name of the Ignite node instance>"</span><span class="o">)</span> |
| <span class="c1">// Other required configuration parameters.</span> |
| <span class="o">);</span> |
| |
| <span class="k">return</span> <span class="n">mgr</span><span class="o">;</span> |
| <span class="o">}</span> |
| <span class="o">}</span></code></pre> |
| </div> |
| </div></code-tab><code-tab data-tab='XML'><div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight"><code data-lang="xml"><span class="nt"><beans</span> <span class="na">xmlns=</span><span class="s">"http://www.springframework.org/schema/beans"</span> |
| <span class="na">xmlns:xsi=</span><span class="s">"http://www.w3.org/2001/XMLSchema-instance"</span> |
| <span class="na">xmlns:tx=</span><span class="s">"http://www.springframework.org/schema/tx"</span> |
| <span class="na">xsi:schemaLocation=</span><span class="s">" |
| http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd |
| http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"</span><span class="nt">></span> |
| <span class="c"><!-- Provide configuration bean. --></span> |
| <span class="nt"><bean</span> <span class="na">id=</span><span class="s">"transactionManager"</span> <span class="na">class=</span><span class="s">"org.apache.ignite.transactions.spring.SpringTransactionManager"</span><span class="nt">></span> |
| <span class="nt"><property</span> <span class="na">name=</span><span class="s">"configuration"</span><span class="nt">></span> |
| <span class="nt"><bean</span> <span class="na">id=</span><span class="s">"gridCfg"</span> <span class="na">class=</span><span class="s">"org.apache.ignite.configuration.IgniteConfiguration"</span><span class="nt">></span> |
| ... |
| <span class="nt"></bean></span> |
| <span class="nt"></property></span> |
| <span class="nt"></bean></span> |
| |
| <span class="c"><!-- Use annotation-driven transaction configuration. --></span> |
| <span class="nt"><tx:annotation-driven/></span> |
| <span class="nt"></beans></span></code></pre> |
| </div> |
| </div></code-tab></code-tabs> |
| <h3 id="3-specifying-path-to-apache-ignite-xml-node-configuration-file" class="discrete">3. Specifying Path to Apache Ignite XML Node Configuration File</h3> |
| <div class="paragraph"> |
| <p>In this case, Apache Ignite node instance is started automatically by the manager based on the provided configuration.</p> |
| </div> |
| <code-tabs><code-tab data-tab='Java'><div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight"><code data-lang="java"><span class="nd">@Configuration</span> |
| <span class="nd">@EnableTransactionManagement</span> |
| <span class="kd">public</span> <span class="kd">class</span> <span class="nc">SpringApplicationConfiguration</span> <span class="o">{</span> |
| <span class="nd">@Bean</span> |
| <span class="kd">public</span> <span class="nc">SpringTransactionManager</span> <span class="nf">transactionManager</span><span class="o">()</span> <span class="o">{</span> |
| <span class="nc">SpringTransactionManager</span> <span class="n">mgr</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">SpringTransactionManager</span><span class="o">();</span> |
| |
| <span class="n">mgr</span><span class="o">.</span><span class="na">setConfigurationPath</span><span class="o">(</span><span class="s">"<path to an Apache Ignite configuration XML file (path can be absolute or relative to `IGNITE_HOME`)>"</span><span class="o">)</span> |
| |
| <span class="k">return</span> <span class="n">mgr</span><span class="o">;</span> |
| <span class="o">}</span> |
| <span class="o">}</span></code></pre> |
| </div> |
| </div></code-tab><code-tab data-tab='XML'><div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight"><code data-lang="xml"><span class="nt"><beans</span> <span class="na">xmlns=</span><span class="s">"http://www.springframework.org/schema/beans"</span> |
| <span class="na">xmlns:xsi=</span><span class="s">"http://www.w3.org/2001/XMLSchema-instance"</span> |
| <span class="na">xmlns:tx=</span><span class="s">"http://www.springframework.org/schema/tx"</span> |
| <span class="na">xsi:schemaLocation=</span><span class="s">" |
| http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd |
| http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"</span><span class="nt">></span> |
| <span class="c"><!-- Provide configuration file path. --></span> |
| <span class="nt"><bean</span> <span class="na">id=</span><span class="s">"transactionManager"</span> <span class="na">class=</span><span class="s">"org.apache.ignite.transactions.spring.SpringTransactionManager"</span><span class="nt">></span> |
| <span class="nt"><property</span> |
| <span class="na">name=</span><span class="s">"configurationPath"</span> |
| <span class="na">value=</span><span class="s">"<path to an Apache Ignite configuration XML file (path can be absolute or relative to `IGNITE_HOME`)"</span><span class="nt">/></span> |
| <span class="nt"></bean></span> |
| |
| <span class="c"><!-- Use annotation-driven transaction configuration. --></span> |
| <span class="nt"><tx:annotation-driven/></span> |
| <span class="nt"></beans></span></code></pre> |
| </div> |
| </div></code-tab></code-tabs> |
| <div class="admonitionblock note"> |
| <table> |
| <tr> |
| <td class="icon"> |
| <div class="title">Note</div> |
| </td> |
| <td class="content"> |
| <div class="paragraph"> |
| <p>If no connection configuration is specified, <code>SpringTransactionManager</code> uses Apache Ignite node instance with the |
| default name. If it does not exist, an exception is thrown during the <code>SpringTransactionManager</code> startup.</p> |
| </div> |
| </td> |
| </tr> |
| </table> |
| </div> |
| <div class="admonitionblock important"> |
| <table> |
| <tr> |
| <td class="icon"> |
| <div class="title">Important</div> |
| </td> |
| <td class="content"> |
| <div class="paragraph"> |
| <p>Regardless the configuration approach you chose, the same Apache Ignite node instance must be used to initialize the |
| transaction manager and perform the transactional operations. In case Apache Ignite node was started by the transaction manager, |
| you can obtain its instance in your application through <code>Ignition.ignite("<name of the Apache Ignite node instance>");</code>.</p> |
| </div> |
| </td> |
| </tr> |
| </table> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="transaction-concurrency-mode-configuration">Transaction Concurrency Mode Configuration</h3> |
| <div class="paragraph"> |
| <p>The transaction concurrency mode configuration defines the |
| <a href="https://ignite.apache.org/docs/latest/key-value-api/transactions#concurrency-modes-and-isolation-levels" target="_blank" rel="noopener">Apache Ignite transaction concurrency mode</a> |
| that a manager will apply to all transactions that it processes.</p> |
| </div> |
| <code-tabs><code-tab data-tab='Java'><div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight"><code data-lang="java"><span class="nd">@Configuration</span> |
| <span class="nd">@EnableTransactionManagement</span> |
| <span class="kd">public</span> <span class="kd">class</span> <span class="nc">SpringApplicationConfiguration</span> <span class="o">{</span> |
| <span class="nd">@Bean</span> |
| <span class="kd">public</span> <span class="nc">SpringTransactionManager</span> <span class="nf">transactionManager</span><span class="o">()</span> <span class="o">{</span> |
| <span class="nc">SpringTransactionManager</span> <span class="n">mgr</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">SpringTransactionManager</span><span class="o">();</span> |
| |
| <span class="n">mgr</span><span class="o">.</span><span class="na">setTransactionConcurrency</span><span class="o">(</span><span class="nc">TransactionConcurrency</span><span class="o">.</span><span class="na">OPTIMISTIC</span><span class="o">);</span> |
| |
| <span class="k">return</span> <span class="n">mgr</span><span class="o">;</span> |
| <span class="o">}</span> |
| <span class="o">}</span></code></pre> |
| </div> |
| </div></code-tab><code-tab data-tab='XML'><div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight"><code data-lang="xml"><span class="nt"><beans</span> <span class="na">xmlns=</span><span class="s">"http://www.springframework.org/schema/beans"</span> |
| <span class="na">xmlns:xsi=</span><span class="s">"http://www.w3.org/2001/XMLSchema-instance"</span> |
| <span class="na">xmlns:tx=</span><span class="s">"http://www.springframework.org/schema/tx"</span> |
| <span class="na">xsi:schemaLocation=</span><span class="s">" |
| http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd |
| http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"</span><span class="nt">></span> |
| <span class="c"><!-- Provide Apache Ignite instance name. --></span> |
| <span class="nt"><bean</span> <span class="na">id=</span><span class="s">"transactionManager"</span> <span class="na">class=</span><span class="s">"org.apache.ignite.transactions.spring.SpringTransactionManager"</span><span class="nt">></span> |
| <span class="c"><!-- Here is appropriate connection configuration. --></span> |
| <span class="nt"><property</span> <span class="na">name=</span><span class="s">"transactionConcurrency"</span> <span class="na">value=</span><span class="s">"OPTIMISTIC"</span><span class="nt">/></span> |
| <span class="nt"></bean></span> |
| |
| <span class="c"><!-- Use annotation-driven transaction configuration. --></span> |
| <span class="nt"><tx:annotation-driven/></span> |
| <span class="nt"></beans></span></code></pre> |
| </div> |
| </div></code-tab></code-tabs> |
| <div class="admonitionblock note"> |
| <table> |
| <tr> |
| <td class="icon"> |
| <div class="title">Note</div> |
| </td> |
| <td class="content"> |
| <div class="paragraph"> |
| <p>If no transaction concurrency mode configuration is specified, <code>PESSIMISTIC</code> concurrency mode is used.</p> |
| </div> |
| </td> |
| </tr> |
| </table> |
| </div> |
| <div class="paragraph"> |
| <p>In case you need to support multiple transaction concurrency modes in your application, create separate |
| transaction managers for each transaction concurrency mode that you need, and for each Spring transaction specify the |
| manager that will process it.</p> |
| </div> |
| <code-tabs><code-tab data-tab='Java'><div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight"><code data-lang="java"><span class="nd">@Configuration</span> |
| <span class="nd">@EnableTransactionManagement</span> |
| <span class="kd">public</span> <span class="kd">class</span> <span class="nc">SpringApplicationConfiguration</span> <span class="o">{</span> |
| <span class="nd">@Bean</span> |
| <span class="kd">public</span> <span class="nc">SpringTransactionManager</span> <span class="nf">pessimisticTransactionManager</span><span class="o">()</span> <span class="o">{</span> |
| <span class="nc">SpringTransactionManager</span> <span class="n">mgr</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">SpringTransactionManager</span><span class="o">();</span> |
| |
| <span class="n">mgr</span><span class="o">.</span><span class="na">setTransactionConcurrency</span><span class="o">(</span><span class="nc">TransactionConcurrency</span><span class="o">.</span><span class="na">PESSIMISTIC</span><span class="o">);</span> |
| |
| <span class="k">return</span> <span class="n">mgr</span><span class="o">;</span> |
| <span class="o">}</span> |
| |
| <span class="nd">@Bean</span> |
| <span class="kd">public</span> <span class="nc">SpringTransactionManager</span> <span class="nf">optimisticTransactionManager</span><span class="o">()</span> <span class="o">{</span> |
| <span class="nc">SpringTransactionManager</span> <span class="n">mgr</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">SpringTransactionManager</span><span class="o">();</span> |
| |
| <span class="n">mgr</span><span class="o">.</span><span class="na">setTransactionConcurrency</span><span class="o">(</span><span class="nc">TransactionConcurrency</span><span class="o">.</span><span class="na">OPTIMISTIC</span><span class="o">);</span> |
| |
| <span class="k">return</span> <span class="n">mgr</span><span class="o">;</span> |
| <span class="o">}</span> |
| <span class="o">}</span></code></pre> |
| </div> |
| </div></code-tab><code-tab data-tab='XML'><div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight"><code data-lang="xml"><span class="nt"><beans</span> <span class="na">xmlns=</span><span class="s">"http://www.springframework.org/schema/beans"</span> |
| <span class="na">xmlns:xsi=</span><span class="s">"http://www.w3.org/2001/XMLSchema-instance"</span> |
| <span class="na">xmlns:tx=</span><span class="s">"http://www.springframework.org/schema/tx"</span> |
| <span class="na">xsi:schemaLocation=</span><span class="s">" |
| http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd |
| http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"</span><span class="nt">></span> |
| <span class="nt"><bean</span> <span class="na">id=</span><span class="s">"optimisticTransactionManager"</span> <span class="na">class=</span><span class="s">"org.apache.ignite.transactions.spring.SpringTransactionManager"</span><span class="nt">></span> |
| <span class="c"><!-- Here is appropriate connection configuration --></span> |
| <span class="nt"><property</span> <span class="na">name=</span><span class="s">"transactionConcurrency"</span> <span class="na">value=</span><span class="s">"OPTIMISTIC"</span><span class="nt">/></span> |
| <span class="nt"></bean></span> |
| |
| <span class="nt"><bean</span> <span class="na">id=</span><span class="s">"pessimisticTransactionManager"</span> <span class="na">class=</span><span class="s">"org.apache.ignite.transactions.spring.SpringTransactionManager"</span><span class="nt">></span> |
| <span class="c"><!-- Here is appropriate connection configuration configuration. --></span> |
| <span class="nt"><property</span> <span class="na">name=</span><span class="s">"transactionConcurrency"</span> <span class="na">value=</span><span class="s">"PESSIMISTIC"</span><span class="nt">/></span> |
| <span class="nt"></bean></span> |
| |
| <span class="c"><!-- Use annotation-driven transaction configuration. --></span> |
| <span class="nt"><tx:annotation-driven/></span> |
| <span class="nt"></beans></span></code></pre> |
| </div> |
| </div></code-tab></code-tabs> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight"><code data-lang="java"><span class="kd">public</span> <span class="kd">class</span> <span class="nc">TransactionalService</span> <span class="o">{</span> |
| <span class="nd">@Transactional</span><span class="o">(</span><span class="s">"optimisticTransactionManager"</span><span class="o">)</span> |
| <span class="kd">public</span> <span class="kt">void</span> <span class="nf">doOptimistically</span><span class="o">()</span> <span class="o">{</span> |
| <span class="c1">// Method body.</span> |
| <span class="o">}</span> |
| |
| <span class="nd">@Transactional</span><span class="o">(</span><span class="s">"pessimisticTransactionManager"</span><span class="o">)</span> |
| <span class="kd">public</span> <span class="kt">void</span> <span class="nf">doPessimistically</span><span class="o">()</span> <span class="o">{</span> |
| <span class="c1">// Method body.</span> |
| <span class="o">}</span> |
| <span class="o">}</span></code></pre> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="apache-ignite-thin-client-transaction-manager-configuration">Apache Ignite Thin Client Transaction Manager Configuration</h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>This chapter shows how to set up <code>IgniteClientSpringTransactionManager</code> that relies on Ignite thin client to connect |
| to the cluster and manage transactions.</p> |
| </div> |
| <div class="sect2"> |
| <h3 id="cluster-connection-configuration-2">Cluster Connection Configuration</h3> |
| <div class="paragraph"> |
| <p>Cluster connection configuration defines Apache Ignite thin client instance used by <code>IgniteClientSpringTransactionManager</code> |
| to access the cluster.</p> |
| </div> |
| <code-tabs><code-tab data-tab='Java'><div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight"><code data-lang="java"><span class="nd">@Configuration</span> |
| <span class="nd">@EnableTransactionManagement</span> |
| <span class="kd">public</span> <span class="kd">static</span> <span class="kd">class</span> <span class="nc">SpringApplicationConfiguration</span> <span class="o">{</span> |
| <span class="nd">@Bean</span> |
| <span class="kd">public</span> <span class="nc">IgniteClient</span> <span class="nf">igniteClient</span><span class="o">()</span> <span class="o">{</span> |
| <span class="k">return</span> <span class="nc">Ignition</span><span class="o">.</span><span class="na">startClient</span><span class="o">(</span><span class="k">new</span> <span class="nc">ClientConfiguration</span><span class="o">().</span><span class="na">setAddresses</span><span class="o">(</span><span class="s">"127.0.0.1:10800"</span><span class="o">));</span> |
| <span class="o">}</span> |
| |
| <span class="nd">@Bean</span> |
| <span class="kd">public</span> <span class="nc">IgniteClientSpringTransactionManager</span> <span class="nf">transactionManager</span><span class="o">(</span><span class="nc">IgniteClient</span> <span class="n">cli</span><span class="o">)</span> <span class="o">{</span> |
| <span class="nc">IgniteClientSpringTransactionManager</span> <span class="n">mgr</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">IgniteClientSpringTransactionManager</span><span class="o">();</span> |
| |
| <span class="n">mgr</span><span class="o">.</span><span class="na">setClientInstance</span><span class="o">(</span><span class="n">cli</span><span class="o">);</span> |
| |
| <span class="k">return</span> <span class="n">mgr</span><span class="o">;</span> |
| <span class="o">}</span> |
| <span class="o">}</span></code></pre> |
| </div> |
| </div></code-tab><code-tab data-tab='XML'><div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight"><code data-lang="xml"><span class="nt"><beans</span> <span class="na">xmlns=</span><span class="s">"http://www.springframework.org/schema/beans"</span> |
| <span class="na">xmlns:xsi=</span><span class="s">"http://www.w3.org/2001/XMLSchema-instance"</span> |
| <span class="na">xmlns:tx=</span><span class="s">"http://www.springframework.org/schema/tx"</span> |
| <span class="na">xsi:schemaLocation=</span><span class="s">" |
| http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd |
| http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"</span><span class="nt">></span> |
| <span class="c"><!-- |
| Note that org.apache.ignite.IgniteClientSpringBean is available since Apache Ignite 2.11.0 version. |
| For Apache Ignite 2.10.0 and earlier `org.apache.ignite.client.IgniteClient` bean should be created |
| manually with concern of its connection to the Ignite cluster. |
| --></span> |
| <span class="nt"><bean</span> <span class="na">id=</span><span class="s">"igniteClient"</span> <span class="na">class=</span><span class="s">"org.apache.ignite.IgniteClientSpringBean"</span><span class="nt">></span> |
| <span class="nt"><property</span> <span class="na">name=</span><span class="s">"clientConfiguration"</span><span class="nt">></span> |
| <span class="nt"><bean</span> <span class="na">class=</span><span class="s">"org.apache.ignite.configuration.ClientConfiguration"</span><span class="nt">></span> |
| <span class="nt"><property</span> <span class="na">name=</span><span class="s">"addresses"</span><span class="nt">></span> |
| <span class="nt"><list></span> |
| <span class="nt"><value></span>127.0.0.1:10800<span class="nt"></value></span> |
| <span class="nt"></list></span> |
| <span class="nt"></property></span> |
| <span class="nt"></bean></span> |
| <span class="nt"></property></span> |
| <span class="nt"></bean></span> |
| |
| <span class="c"><!-- Provide Apache Ignite client instance. --></span> |
| <span class="nt"><bean</span> <span class="na">id=</span><span class="s">"transactionManager"</span> <span class="na">class=</span><span class="s">"org.apache.ignite.transactions.spring.IgniteClientSpringTransactionManager"</span><span class="nt">></span> |
| <span class="nt"><property</span> <span class="na">name=</span><span class="s">"clientInstance"</span> <span class="na">ref=</span><span class="s">"igniteClientBean"</span><span class="nt">/></span> |
| <span class="nt"></bean></span> |
| |
| <span class="c"><!-- Use annotation-driven transaction configuration. --></span> |
| <span class="nt"><tx:annotation-driven/></span> |
| <span class="nt"></beans></span></code></pre> |
| </div> |
| </div></code-tab></code-tabs> |
| <div class="admonitionblock important"> |
| <table> |
| <tr> |
| <td class="icon"> |
| <div class="title">Important</div> |
| </td> |
| <td class="content"> |
| <div class="paragraph"> |
| <p>The same Apache Ignite thin client instance must be used to initialize the transaction manager and to perform |
| transactional operations.</p> |
| </div> |
| </td> |
| </tr> |
| </table> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="transaction-concurrency-mode-configuration-2">Transaction Concurrency Mode Configuration</h3> |
| <div class="paragraph"> |
| <p>Transaction concurrency mode configuration for <code>IgniteClientSpringTransactionManager</code> is performed the same way as for |
| <a href="/docs/extensions/extensions-and-integrations/spring/spring-tx#transaction-concurrency-mode-configuration">SpringTransactionManager</a> |
| that uses Apache Ignite node instance to access the cluster.</p> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="examples">Examples</h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>The example of using Apache Ignite Spring Transactions integration is available on <a href="https://github.com/apache/ignite-extensions/tree/master/modules/spring-tx-ext/examples/main/java/org/apache/ignite/transactions/spring/examples" target="_blank" rel="noopener">GitHub</a>.</p> |
| </div> |
| </div> |
| </div> |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| |
| <div class="copyright"> |
| © 2022 The Apache Software Foundation.<br/> |
| Apache, Apache Ignite, the Apache feather and the Apache Ignite logo are either registered trademarks or trademarks of The Apache Software Foundation. |
| |
| </div> |
| |
| </article> |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| |
| <nav class="right-nav" data-swiftype-index='false'> |
| <ul class="sectlevel1"> |
| <li><a href="#overview">Overview</a></li> |
| <li><a href="#maven-configuration">Maven Configuration</a></li> |
| <li><a href="#apache-ignite-node-transaction-manager-configuration">Apache Ignite Node Transaction Manager Configuration</a> |
| <ul class="sectlevel2"> |
| <li><a href="#cluster-connection-configuration">Cluster Connection Configuration</a></li> |
| <li><a href="#transaction-concurrency-mode-configuration">Transaction Concurrency Mode Configuration</a></li> |
| </ul> |
| </li> |
| <li><a href="#apache-ignite-thin-client-transaction-manager-configuration">Apache Ignite Thin Client Transaction Manager Configuration</a> |
| <ul class="sectlevel2"> |
| <li><a href="#cluster-connection-configuration-2">Cluster Connection Configuration</a></li> |
| <li><a href="#transaction-concurrency-mode-configuration-2">Transaction Concurrency Mode Configuration</a></li> |
| </ul> |
| </li> |
| <li><a href="#examples">Examples</a></li> |
| </ul> |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| |
| |
| <footer> |
| </footer> |
| |
| </nav> |
| |
| </section> |
| <script type='module' src='/assets/js/code-copy-to-clipboard.js' async></script> |
| |
| <script> |
| // inits deep anchors -- needs to be done here because of https://www.bryanbraun.com/anchorjs/#dont-run-it-too-late |
| anchors.add('.page-docs h1, .page-docs h2, .page-docs h3:not(.discrete), .page-docs h4, .page-docs h5'); |
| anchors.options = { |
| placement: 'right', |
| visible: 'always' |
| }; |
| </script> |
| </body> |
| <script type='module' src='/assets/js/index.js?1658382976' async></script> |
| </html> |