<!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.1.0/javadoc/org/apache/ignite/resources/package-frame.html" />
<META NAME="ROBOTS" CONTENT="NOINDEX">

<!-- Generated by javadoc (version 1.7.0_80) on Thu Jul 20 19:37:44 UTC 2017 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>org.apache.ignite.resources (Ignite 2.1.0)</title>
<meta name="date" content="2017-07-20">
<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>
<h1 class="bar"><a href="../../../../org/apache/ignite/resources/package-summary.html" target="classFrame">org.apache.ignite.resources</a></h1>
<div class="indexContainer">
<h2 title="Classes">Classes</h2>
<ul title="Classes">
<li><a href="SpringResource.DEFAULT.html" title="class in org.apache.ignite.resources" target="classFrame">SpringResource.DEFAULT</a></li>
</ul>
<h2 title="Annotation Types">Annotation Types</h2>
<ul title="Annotation Types">
<li><a href="CacheNameResource.html" title="annotation in org.apache.ignite.resources" target="classFrame">CacheNameResource</a></li>
<li><a href="CacheStoreSessionResource.html" title="annotation in org.apache.ignite.resources" target="classFrame">CacheStoreSessionResource</a></li>
<li><a href="FileSystemResource.html" title="annotation in org.apache.ignite.resources" target="classFrame">FileSystemResource</a></li>
<li><a href="IgniteInstanceResource.html" title="annotation in org.apache.ignite.resources" target="classFrame">IgniteInstanceResource</a></li>
<li><a href="JobContextResource.html" title="annotation in org.apache.ignite.resources" target="classFrame">JobContextResource</a></li>
<li><a href="LoadBalancerResource.html" title="annotation in org.apache.ignite.resources" target="classFrame">LoadBalancerResource</a></li>
<li><a href="LoggerResource.html" title="annotation in org.apache.ignite.resources" target="classFrame">LoggerResource</a></li>
<li><a href="ServiceResource.html" title="annotation in org.apache.ignite.resources" target="classFrame">ServiceResource</a></li>
<li><a href="SpringApplicationContextResource.html" title="annotation in org.apache.ignite.resources" target="classFrame">SpringApplicationContextResource</a></li>
<li><a href="SpringResource.html" title="annotation in org.apache.ignite.resources" target="classFrame">SpringResource</a></li>
<li><a href="TaskContinuousMapperResource.html" title="annotation in org.apache.ignite.resources" target="classFrame">TaskContinuousMapperResource</a></li>
<li><a href="TaskSessionResource.html" title="annotation in org.apache.ignite.resources" target="classFrame">TaskSessionResource</a></li>
</ul>
</div>
</body>
</html>
