<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<link rel="canonical" href="https://ignite.apache.org/releases/2.9.1/javadoc/org/apache/ignite/transactions/package-frame.html" />
<META NAME="ROBOTS" CONTENT="NOINDEX">
<!-- Yandex.Metrika counter -->
    <script type="text/javascript" >
      (function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
      m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
      (window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
    
      ym(72949126, "init", {
           clickmap:true,
           trackLinks:true,
           accurateTrackBounce:true,
           webvisor:true
      });
    </script>
    <noscript><div><img src="https://mc.yandex.ru/watch/72949126" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
    <!-- /Yandex.Metrika counter -->
<script type='text/javascript'>
    window.__lo_site_id = 284467;
    
      (function() {
        var wa = document.createElement('script'); wa.type = 'text/javascript'; wa.async = true;
        wa.src = 'https://d10lpsik1i8c69.cloudfront.net/w.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(wa, s);
        })();
      </script>


<!-- Generated by javadoc (1.8.0_261) on Wed Dec 09 14:33:13 MSK 2020 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>org.apache.ignite.transactions (Ignite 2.9.1)</title>
<meta name="date" content="2020-12-09">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
<link rel='shortcut icon' href='https://ignite.apache.org/favicon.ico'/>

<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-61232409-1', 'auto');
  ga('send', 'pageview');

</script></head>

<body>
<h1 class="bar"><a href="../../../../org/apache/ignite/transactions/package-summary.html" target="classFrame">org.apache.ignite.transactions</a></h1>
<div class="indexContainer">
<h2 title="Interfaces">Interfaces</h2>
<ul title="Interfaces">
<li><a href="Transaction.html" title="interface in org.apache.ignite.transactions" target="classFrame"><span class="interfaceName">Transaction</span></a></li>
<li><a href="TransactionMetrics.html" title="interface in org.apache.ignite.transactions" target="classFrame"><span class="interfaceName">TransactionMetrics</span></a></li>
</ul>
<h2 title="Enums">Enums</h2>
<ul title="Enums">
<li><a href="TransactionConcurrency.html" title="enum in org.apache.ignite.transactions" target="classFrame">TransactionConcurrency</a></li>
<li><a href="TransactionIsolation.html" title="enum in org.apache.ignite.transactions" target="classFrame">TransactionIsolation</a></li>
<li><a href="TransactionState.html" title="enum in org.apache.ignite.transactions" target="classFrame">TransactionState</a></li>
</ul>
<h2 title="Exceptions">Exceptions</h2>
<ul title="Exceptions">
<li><a href="TransactionAlreadyCompletedException.html" title="class in org.apache.ignite.transactions" target="classFrame">TransactionAlreadyCompletedException</a></li>
<li><a href="TransactionDeadlockException.html" title="class in org.apache.ignite.transactions" target="classFrame">TransactionDeadlockException</a></li>
<li><a href="TransactionDuplicateKeyException.html" title="class in org.apache.ignite.transactions" target="classFrame">TransactionDuplicateKeyException</a></li>
<li><a href="TransactionException.html" title="class in org.apache.ignite.transactions" target="classFrame">TransactionException</a></li>
<li><a href="TransactionHeuristicException.html" title="class in org.apache.ignite.transactions" target="classFrame">TransactionHeuristicException</a></li>
<li><a href="TransactionMixedModeException.html" title="class in org.apache.ignite.transactions" target="classFrame">TransactionMixedModeException</a></li>
<li><a href="TransactionOptimisticException.html" title="class in org.apache.ignite.transactions" target="classFrame">TransactionOptimisticException</a></li>
<li><a href="TransactionRollbackException.html" title="class in org.apache.ignite.transactions" target="classFrame">TransactionRollbackException</a></li>
<li><a href="TransactionSerializationException.html" title="class in org.apache.ignite.transactions" target="classFrame">TransactionSerializationException</a></li>
<li><a href="TransactionTimeoutException.html" title="class in org.apache.ignite.transactions" target="classFrame">TransactionTimeoutException</a></li>
<li><a href="TransactionUnsupportedConcurrencyException.html" title="class in org.apache.ignite.transactions" target="classFrame">TransactionUnsupportedConcurrencyException</a></li>
</ul>
</div>
</body>
</html>
