blob: 7b43a64a714665af93ef6d2f3c429e7d7765a7a8 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<META NAME="ROBOTS" CONTENT="NOINDEX">
<link rel="canonical" href="https://ignite.apache.org/releases/1.7.0/javadoc/org/apache/ignite/cache/store/CacheStoreSessionListener.html" />
<!-- Generated by javadoc (version 1.7.0_80) on Mon Aug 01 20:32:30 MSK 2016 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>CacheStoreSessionListener (Ignite 1.7.0)</title>
<meta name="date" content="2016-08-01">
<link rel="stylesheet" type="text/css" href="../../../../../javadoc.css" title="Style">
<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>
<script type="text/javascript"><!--
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="CacheStoreSessionListener (Ignite 1.7.0)";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar_top">
<!-- -->
</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/CacheStoreSessionListener.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><em>Ignite - In-Memory Data Fabric</em></div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/ignite/cache/store/CacheStoreSession.html" title="interface in org.apache.ignite.cache.store"><span class="strong">Prev Class</span></a></li>
<li>Next Class</li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/ignite/cache/store/CacheStoreSessionListener.html" target="_top">Frames</a></li>
<li><a href="CacheStoreSessionListener.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.ignite.cache.store</div>
<h2 title="Interface CacheStoreSessionListener" class="title">Interface CacheStoreSessionListener</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Known Implementing Classes:</dt>
<dd><a href="../../../../../org/apache/ignite/cache/store/jdbc/CacheJdbcStoreSessionListener.html" title="class in org.apache.ignite.cache.store.jdbc">CacheJdbcStoreSessionListener</a>, <a href="../../../../../org/apache/ignite/cache/store/spring/CacheSpringStoreSessionListener.html" title="class in org.apache.ignite.cache.store.spring">CacheSpringStoreSessionListener</a></dd>
</dl>
<hr>
<br>
<pre>public interface <span class="strong">CacheStoreSessionListener</span></pre>
<div class="block">Cache store session listener that allows to implement callbacks
for session lifecycle.
<p>
The most common use case for session listeners is database
connection and transaction management. Store can be invoked one
or several times during one session, depending on whether it's
executed within cache transaction or not. In any case, you have
to create a connection when session is started and commit it or
rollback when session is finished.
<p>
Cache store session listener allows to implement this and other
scenarios providing two callback methods:
<ul>
<li>
<a href="../../../../../org/apache/ignite/cache/store/CacheStoreSessionListener.html#onSessionStart(org.apache.ignite.cache.store.CacheStoreSession)"><code>onSessionStart(CacheStoreSession)</code></a> - called
when a session is created prior to all operations
within his session.
</li>
<li>
<a href="../../../../../org/apache/ignite/cache/store/CacheStoreSessionListener.html#onSessionEnd(org.apache.ignite.cache.store.CacheStoreSession,%20boolean)"><code>onSessionEnd(CacheStoreSession, boolean)</code></a> - called
after all operations within a session are invoked.
</li>
</ul>
<h2>Implementations</h2>
Ignite provides several out-of-the-box implementations
of session listener (refer to individual JavaDocs for more
details):
<ul>
<li>
<a href="../../../../../org/apache/ignite/cache/store/jdbc/CacheJdbcStoreSessionListener.html" title="class in org.apache.ignite.cache.store.jdbc"><code>CacheJdbcStoreSessionListener</code></a> - JDBC-based session
listener. For each session it gets a new JDBC connection from
provided <a href="http://docs.oracle.com/javase/7/docs/api/javax/sql/DataSource.html?is-external=true" title="class or interface in javax.sql"><code>DataSource</code></a> and commits (or rolls back) it
when session ends.
</li>
<li>
<a href="../../../../../org/apache/ignite/cache/store/spring/CacheSpringStoreSessionListener.html"><code>CacheSpringStoreSessionListener</code></a> -
session listener based on Spring transaction management.
It starts a new DB transaction for each session and commits
(or rolls back) it when session ends. If there is no ongoing
cache transaction, this listener is no-op.
</li>
<li>
<a href="../../../../../org/apache/ignite/cache/store/hibernate/CacheHibernateStoreSessionListener.html"><code>CacheHibernateStoreSessionListener</code></a> -
Hibernate-based session listener. It creates a new Hibernate
session for each Ignite session. If there is an ongoing cache
transaction, a corresponding Hibernate transaction is created
as well.
</li>
</ul>
<h2>Configuration</h2>
There are two ways to configure a session listener:
<ul>
<li>
Provide a global listener for all caches via
<a href="../../../../../org/apache/ignite/configuration/IgniteConfiguration.html#setCacheStoreSessionListenerFactories(javax.cache.configuration.Factory...)"><code>IgniteConfiguration.setCacheStoreSessionListenerFactories(Factory[])</code></a>
configuration property. This will we called for any store
session, not depending on what caches participate in
transaction.
</li>
<li>
Provide a listener for a particular cache via
<a href="../../../../../org/apache/ignite/configuration/CacheConfiguration.html#setCacheStoreSessionListenerFactories(javax.cache.configuration.Factory...)"><code>CacheConfiguration.setCacheStoreSessionListenerFactories(Factory[])</code></a>
configuration property. This will be called only if the
cache participates in transaction.
</li>
</ul>
For example, here is how global <a href="../../../../../org/apache/ignite/cache/store/jdbc/CacheJdbcStoreSessionListener.html" title="class in org.apache.ignite.cache.store.jdbc"><code>CacheJdbcStoreSessionListener</code></a>
can be configured in Spring XML configuration file:
<pre name="code" class="xml">
&lt;bean class="org.apache.ignite.configuration.IgniteConfiguration"&gt;
...
&lt;property name="CacheStoreSessionListenerFactories"&gt;
&lt;list&gt;
&lt;bean class="javax.cache.configuration.FactoryBuilder$SingletonFactory"&gt;
&lt;constructor-arg&gt;
&lt;bean class="org.apache.ignite.cache.store.jdbc.CacheJdbcStoreSessionListener"&gt;
&lt;!-- Inject external data source. --&gt;
&lt;property name="dataSource" ref="jdbc-data-source"/&gt;
&lt;/bean&gt;
&lt;/constructor-arg&gt;
&lt;/bean&gt;
&lt;/list&gt;
&lt;/property&gt;
&lt;/bean&gt;
</pre></div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method_summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/ignite/cache/store/CacheStoreSessionListener.html#onSessionEnd(org.apache.ignite.cache.store.CacheStoreSession,%20boolean)">onSessionEnd</a></strong>(<a href="../../../../../org/apache/ignite/cache/store/CacheStoreSession.html" title="interface in org.apache.ignite.cache.store">CacheStoreSession</a>&nbsp;ses,
boolean&nbsp;commit)</code>
<div class="block">On session end callback.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/ignite/cache/store/CacheStoreSessionListener.html#onSessionStart(org.apache.ignite.cache.store.CacheStoreSession)">onSessionStart</a></strong>(<a href="../../../../../org/apache/ignite/cache/store/CacheStoreSession.html" title="interface in org.apache.ignite.cache.store">CacheStoreSession</a>&nbsp;ses)</code>
<div class="block">On session start callback.</div>
</td>
</tr>
</table>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method_detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="onSessionStart(org.apache.ignite.cache.store.CacheStoreSession)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>onSessionStart</h4>
<pre>void&nbsp;onSessionStart(<a href="../../../../../org/apache/ignite/cache/store/CacheStoreSession.html" title="interface in org.apache.ignite.cache.store">CacheStoreSession</a>&nbsp;ses)</pre>
<div class="block">On session start callback.
<p>
Called before any store operation within a session is invoked.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>ses</code> - Current session.</dd></dl>
</li>
</ul>
<a name="onSessionEnd(org.apache.ignite.cache.store.CacheStoreSession, boolean)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>onSessionEnd</h4>
<pre>void&nbsp;onSessionEnd(<a href="../../../../../org/apache/ignite/cache/store/CacheStoreSession.html" title="interface in org.apache.ignite.cache.store">CacheStoreSession</a>&nbsp;ses,
boolean&nbsp;commit)</pre>
<div class="block">On session end callback.
<p>
Called after all operations within a session are invoked.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>ses</code> - Current session.</dd><dd><code>commit</code> - <code>True</code> if persistence store transaction
should commit, <code>false</code> for rollback.</dd></dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar_bottom">
<!-- -->
</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/CacheStoreSessionListener.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><em>Ignite - In-Memory Data Fabric</em></div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/ignite/cache/store/CacheStoreSession.html" title="interface in org.apache.ignite.cache.store"><span class="strong">Prev Class</span></a></li>
<li>Next Class</li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/ignite/cache/store/CacheStoreSessionListener.html" target="_top">Frames</a></li>
<li><a href="CacheStoreSessionListener.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small><table width="100%" border="0" cellspacing=0 cellpadding=0 style="padding: 5px"> <tr> <td> <table style="padding-left: 0; margin: 0"> <tbody style="padding: 0; margin: 0"> <tr style="padding: 0; margin: 0"> <td> <a target=_blank href="https://ignite.apache.org"><nobr>2015 Copyright &#169; Apache Software Foundation</nobr></a> </td> </tr> </tbody> </table> </td> <td width="100%" align="right" valign="center"> <a href="https://twitter.com/ApacheIgnite" class="twitter-follow-button" data-show-count="false" data-size="large">Follow @ApacheIgnite</a> <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script> </td> </tr> <tr> <td colspan="2" valign="top" align="left"> <table style="padding-left: 0; margin: 0"> <tbody style="padding: 0; margin: 0"> <tr style="padding: 0; margin: 0"> <td> <b>Ignite Fabric</b> </td> <td>:&nbsp;&nbsp; ver. <strong>1.7.0</strong> </td> </tr> <tr style="padding: 0; margin: 0"> <td> <b>Release Date</b> </td> <td>:&nbsp;&nbsp; August 1 2016 </td> </tr> </tbody> </table> </td> </tr> </table></small></p>
</body>
</html>