<!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.0/javadoc/org/apache/ignite/IgniteServices.html" />
<META NAME="ROBOTS" CONTENT="NOINDEX">

<!-- Generated by javadoc (1.8.0_241) on Thu Oct 15 12:23:29 MSK 2020 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>IgniteServices (Ignite 2.9.0)</title>
<meta name="date" content="2020-10-15">
<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>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="IgniteServices (Ignite 2.9.0)";
        }
    }
    catch(err) {
    }
//-->
var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6,"i6":6,"i7":6,"i8":6,"i9":6,"i10":6,"i11":6,"i12":6,"i13":6,"i14":6,"i15":6,"i16":6,"i17":6,"i18":6,"i19":6,"i20":6,"i21":6,"i22":6,"i23":6,"i24":38};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"],32:["t6","Deprecated Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<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/IgniteServices.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>
<div class="subNav">
<ul class="navList">
<li><a href="../../../org/apache/ignite/IgniteSemaphore.html" title="interface in org.apache.ignite"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../org/apache/ignite/IgniteSet.html" title="interface in org.apache.ignite"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?org/apache/ignite/IgniteServices.html" target="_top">Frames</a></li>
<li><a href="IgniteServices.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../allclasses-noframe.html">All&nbsp;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</div>
<h2 title="Interface IgniteServices" class="title">Interface IgniteServices</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Superinterfaces:</dt>
<dd><a href="../../../org/apache/ignite/lang/IgniteAsyncSupport.html" title="interface in org.apache.ignite.lang">IgniteAsyncSupport</a></dd>
</dl>
<hr>
<br>
<pre>public interface <span class="typeNameLabel">IgniteServices</span>
extends <a href="../../../org/apache/ignite/lang/IgniteAsyncSupport.html" title="interface in org.apache.ignite.lang">IgniteAsyncSupport</a></pre>
<div class="block">Defines functionality necessary to deploy distributed services on the grid.
 <p>
 Instance of <code>IgniteServices</code> which spans all cluster nodes can be obtained from Ignite as follows:
 <pre class="brush:java">
 Ignite ignite = Ignition.ignite();

 IgniteServices svcs = ignite.services();
 </pre>
 You can also obtain an instance of the services facade over a specific cluster group:
 <pre class="brush:java">
 // Cluster group over remote nodes (excluding the local node).
 ClusterGroup remoteNodes = ignite.cluster().forRemotes();

 // Services instance spanning all remote cluster nodes.
 IgniteServices svcs = ignite.services(remoteNodes);
 </pre>
 <p>
 With distributed services you can do the following:
 <ul>
 <li>Automatically deploy any number of service instances on the grid.</li>
 <li>
     Automatically deploy singletons, including <b>cluster-singleton</b>,
     <b>node-singleton</b>, or <b>key-affinity-singleton</b>.
 </li>
 <li>Automatically deploy services on node start-up by specifying them in grid configuration.</li>
 <li>Undeploy any of the deployed services.</li>
 <li>Get information about service deployment topology within the grid.</li>
 </ul>
 <h1 class="header">Deployment From Configuration</h1>
 In addition to deploying managed services by calling any of the provided <code>deploy(...)</code> methods,
 you can also automatically deploy services on startup by specifying them in <a href="../../../org/apache/ignite/configuration/IgniteConfiguration.html" title="class in org.apache.ignite.configuration"><code>IgniteConfiguration</code></a>
 like so:
 <pre name="code" class="java">
 IgniteConfiguration cfg = new IgniteConfiguration();

 ServiceConfiguration svcCfg1 = new ServiceConfiguration();

 // Cluster-wide singleton configuration.
 svcCfg1.setName("myClusterSingletonService");
 svcCfg1.setMaxPerNodeCount(1);
 svcCfg1.setTotalCount(1);
 svcCfg1.setService(new MyClusterSingletonService());

 ServiceConfiguration svcCfg2 = new ServiceConfiguration();

 // Per-node singleton configuration.
 svcCfg2.setName("myNodeSingletonService");
 svcCfg2.setMaxPerNodeCount(1);
 svcCfg2.setService(new MyNodeSingletonService());

 cfg.setServiceConfiguration(svcCfg1, svcCfg2);
 ...
 Ignition.start(cfg);
 </pre>
 <h1 class="header">Load Balancing</h1>
 In all cases, other than singleton service deployment, Ignite will automatically make sure that
 an about equal number of services are deployed on each node within the grid. Whenever cluster topology
 changes, Ignite will re-evaluate service deployments and may re-deploy an already deployed service
 on another node for better load balancing.
 <h1 class="header">Fault Tolerance</h1>
 Ignite guarantees that services are deployed according to specified configuration regardless
 of any topology changes, including node crashes.
 <h1 class="header">Resource Injection</h1>
 All distributed services can be injected with
 ignite resources. Both, field and method based injections are supported. The following ignite
 resources can be injected:
 <ul>
 <li><a href="../../../org/apache/ignite/resources/IgniteInstanceResource.html" title="annotation in org.apache.ignite.resources"><code>IgniteInstanceResource</code></a></li>
 <li><a href="../../../org/apache/ignite/resources/LoggerResource.html" title="annotation in org.apache.ignite.resources"><code>LoggerResource</code></a></li>
 <li><a href="../../../org/apache/ignite/resources/SpringApplicationContextResource.html" title="annotation in org.apache.ignite.resources"><code>SpringApplicationContextResource</code></a></li>
 <li><a href="../../../org/apache/ignite/resources/SpringResource.html" title="annotation in org.apache.ignite.resources"><code>SpringResource</code></a></li>
 </ul>
 Refer to corresponding resource documentation for more information.
 <h1 class="header">Service Example</h1>
 Here is an example of how an distributed service may be implemented and deployed:
 <pre name="code" class="java">
 // Simple service implementation.
 public class MyIgniteService implements Service {
      ...
      // Example of ignite resource injection. All resources are optional.
      // You should inject resources only as needed.
      &#64;IgniteInstanceResource
      private Ignite ignite;
      ...
      &#64;Override public void cancel(ServiceContext ctx) {
          // No-op.
      }

      &#64;Override public void execute(ServiceContext ctx) {
          // Loop until service is cancelled.
          while (!ctx.isCancelled()) {
              // Do something.
              ...
          }
      }
  }
 ...
 IgniteServices svcs = ignite.services();

 svcs.deployClusterSingleton("mySingleton", new MyIgniteService());
 </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="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t6" class="tableTab"><span><a href="javascript:show(32);">Deprecated Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/ignite/IgniteServices.html#cancel-java.lang.String-">cancel</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>
<div class="block">Cancels service deployment.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/ignite/IgniteServices.html#cancelAll--">cancelAll</a></span>()</code>
<div class="block">Cancels all deployed services.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/ignite/IgniteServices.html#cancelAll-java.util.Collection-">cancelAll</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a><span class='angle_bracket'>&lt;</span><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a><span class='angle_bracket'>&gt;</span>&nbsp;names)</code>
<div class="block">Cancels services with specified names.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="../../../org/apache/ignite/lang/IgniteFuture.html" title="interface in org.apache.ignite.lang">IgniteFuture</a><span class='angle_bracket'>&lt;</span><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a><span class='angle_bracket'>&gt;</span></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/ignite/IgniteServices.html#cancelAllAsync--">cancelAllAsync</a></span>()</code>
<div class="block">Asynchronously cancels all deployed services.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code><a href="../../../org/apache/ignite/lang/IgniteFuture.html" title="interface in org.apache.ignite.lang">IgniteFuture</a><span class='angle_bracket'>&lt;</span><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a><span class='angle_bracket'>&gt;</span></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/ignite/IgniteServices.html#cancelAllAsync-java.util.Collection-">cancelAllAsync</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a><span class='angle_bracket'>&lt;</span><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a><span class='angle_bracket'>&gt;</span>&nbsp;names)</code>
<div class="block">Asynchronously cancels services with specified names.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code><a href="../../../org/apache/ignite/lang/IgniteFuture.html" title="interface in org.apache.ignite.lang">IgniteFuture</a><span class='angle_bracket'>&lt;</span><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a><span class='angle_bracket'>&gt;</span></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/ignite/IgniteServices.html#cancelAsync-java.lang.String-">cancelAsync</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>
<div class="block">Asynchronously cancels service deployment.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code><a href="../../../org/apache/ignite/cluster/ClusterGroup.html" title="interface in org.apache.ignite.cluster">ClusterGroup</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/ignite/IgniteServices.html#clusterGroup--">clusterGroup</a></span>()</code>
<div class="block">Gets the cluster group to which this <code>IgniteServices</code> instance belongs.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/ignite/IgniteServices.html#deploy-org.apache.ignite.services.ServiceConfiguration-">deploy</a></span>(<a href="../../../org/apache/ignite/services/ServiceConfiguration.html" title="class in org.apache.ignite.services">ServiceConfiguration</a>&nbsp;cfg)</code>
<div class="block">Deploys multiple instances of the service on the grid according to provided
 configuration.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/ignite/IgniteServices.html#deployAll-java.util.Collection-">deployAll</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a><span class='angle_bracket'>&lt;</span><a href="../../../org/apache/ignite/services/ServiceConfiguration.html" title="class in org.apache.ignite.services">ServiceConfiguration</a><span class='angle_bracket'>&gt;</span>&nbsp;cfgs)</code>
<div class="block">Deploys multiple services described by provided configurations.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code><a href="../../../org/apache/ignite/lang/IgniteFuture.html" title="interface in org.apache.ignite.lang">IgniteFuture</a><span class='angle_bracket'>&lt;</span><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a><span class='angle_bracket'>&gt;</span></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/ignite/IgniteServices.html#deployAllAsync-java.util.Collection-">deployAllAsync</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a><span class='angle_bracket'>&lt;</span><a href="../../../org/apache/ignite/services/ServiceConfiguration.html" title="class in org.apache.ignite.services">ServiceConfiguration</a><span class='angle_bracket'>&gt;</span>&nbsp;cfgs)</code>
<div class="block">Asynchronously deploys multiple services described by provided configurations.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code><a href="../../../org/apache/ignite/lang/IgniteFuture.html" title="interface in org.apache.ignite.lang">IgniteFuture</a><span class='angle_bracket'>&lt;</span><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a><span class='angle_bracket'>&gt;</span></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/ignite/IgniteServices.html#deployAsync-org.apache.ignite.services.ServiceConfiguration-">deployAsync</a></span>(<a href="../../../org/apache/ignite/services/ServiceConfiguration.html" title="class in org.apache.ignite.services">ServiceConfiguration</a>&nbsp;cfg)</code>
<div class="block">Asynchronously deploys multiple instances of the service on the grid according to provided
 configuration.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/ignite/IgniteServices.html#deployClusterSingleton-java.lang.String-org.apache.ignite.services.Service-">deployClusterSingleton</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                      <a href="../../../org/apache/ignite/services/Service.html" title="interface in org.apache.ignite.services">Service</a>&nbsp;svc)</code>
<div class="block">Deploys a cluster-wide singleton service.</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code><a href="../../../org/apache/ignite/lang/IgniteFuture.html" title="interface in org.apache.ignite.lang">IgniteFuture</a><span class='angle_bracket'>&lt;</span><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a><span class='angle_bracket'>&gt;</span></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/ignite/IgniteServices.html#deployClusterSingletonAsync-java.lang.String-org.apache.ignite.services.Service-">deployClusterSingletonAsync</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                           <a href="../../../org/apache/ignite/services/Service.html" title="interface in org.apache.ignite.services">Service</a>&nbsp;svc)</code>
<div class="block">Asynchronously deploys a cluster-wide singleton service.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/ignite/IgniteServices.html#deployKeyAffinitySingleton-java.lang.String-org.apache.ignite.services.Service-java.lang.String-java.lang.Object-">deployKeyAffinitySingleton</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                          <a href="../../../org/apache/ignite/services/Service.html" title="interface in org.apache.ignite.services">Service</a>&nbsp;svc,
                          @Nullable <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;cacheName,
                          <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;affKey)</code>
<div class="block">Deploys one instance of this service on the primary node for a given affinity key.</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code><a href="../../../org/apache/ignite/lang/IgniteFuture.html" title="interface in org.apache.ignite.lang">IgniteFuture</a><span class='angle_bracket'>&lt;</span><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a><span class='angle_bracket'>&gt;</span></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/ignite/IgniteServices.html#deployKeyAffinitySingletonAsync-java.lang.String-org.apache.ignite.services.Service-java.lang.String-java.lang.Object-">deployKeyAffinitySingletonAsync</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                               <a href="../../../org/apache/ignite/services/Service.html" title="interface in org.apache.ignite.services">Service</a>&nbsp;svc,
                               @Nullable <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;cacheName,
                               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;affKey)</code>
<div class="block">Asynchronously deploys one instance of this service on the primary node for a given affinity key.</div>
</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/ignite/IgniteServices.html#deployMultiple-java.lang.String-org.apache.ignite.services.Service-int-int-">deployMultiple</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
              <a href="../../../org/apache/ignite/services/Service.html" title="interface in org.apache.ignite.services">Service</a>&nbsp;svc,
              int&nbsp;totalCnt,
              int&nbsp;maxPerNodeCnt)</code>
<div class="block">Deploys multiple instances of the service on the grid.</div>
</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code><a href="../../../org/apache/ignite/lang/IgniteFuture.html" title="interface in org.apache.ignite.lang">IgniteFuture</a><span class='angle_bracket'>&lt;</span><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a><span class='angle_bracket'>&gt;</span></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/ignite/IgniteServices.html#deployMultipleAsync-java.lang.String-org.apache.ignite.services.Service-int-int-">deployMultipleAsync</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                   <a href="../../../org/apache/ignite/services/Service.html" title="interface in org.apache.ignite.services">Service</a>&nbsp;svc,
                   int&nbsp;totalCnt,
                   int&nbsp;maxPerNodeCnt)</code>
<div class="block">Asynchronously deploys multiple instances of the service on the grid.</div>
</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/ignite/IgniteServices.html#deployNodeSingleton-java.lang.String-org.apache.ignite.services.Service-">deployNodeSingleton</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                   <a href="../../../org/apache/ignite/services/Service.html" title="interface in org.apache.ignite.services">Service</a>&nbsp;svc)</code>
<div class="block">Deploys a per-node singleton service.</div>
</td>
</tr>
<tr id="i18" class="altColor">
<td class="colFirst"><code><a href="../../../org/apache/ignite/lang/IgniteFuture.html" title="interface in org.apache.ignite.lang">IgniteFuture</a><span class='angle_bracket'>&lt;</span><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a><span class='angle_bracket'>&gt;</span></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/ignite/IgniteServices.html#deployNodeSingletonAsync-java.lang.String-org.apache.ignite.services.Service-">deployNodeSingletonAsync</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                        <a href="../../../org/apache/ignite/services/Service.html" title="interface in org.apache.ignite.services">Service</a>&nbsp;svc)</code>
<div class="block">Asynchronously deploys a per-node singleton service.</div>
</td>
</tr>
<tr id="i19" class="rowColor">
<td class="colFirst"><code><span class='angle_bracket'>&lt;</span>T<span class='angle_bracket'>&gt;</span>&nbsp;T</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/ignite/IgniteServices.html#service-java.lang.String-">service</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>
<div class="block">Gets locally deployed service with specified name.</div>
</td>
</tr>
<tr id="i20" class="altColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a><span class='angle_bracket'>&lt;</span><a href="../../../org/apache/ignite/services/ServiceDescriptor.html" title="interface in org.apache.ignite.services">ServiceDescriptor</a><span class='angle_bracket'>&gt;</span></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/ignite/IgniteServices.html#serviceDescriptors--">serviceDescriptors</a></span>()</code>
<div class="block">Gets metadata about all deployed services in the grid.</div>
</td>
</tr>
<tr id="i21" class="rowColor">
<td class="colFirst"><code><span class='angle_bracket'>&lt;</span>T<span class='angle_bracket'>&gt;</span>&nbsp;T</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/ignite/IgniteServices.html#serviceProxy-java.lang.String-java.lang.Class-boolean-">serviceProxy</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
            <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a><span class='angle_bracket'>&lt;</span>? super T<span class='angle_bracket'>&gt;</span>&nbsp;svcItf,
            boolean&nbsp;sticky)</code>
<div class="block">Gets a remote handle on the service.</div>
</td>
</tr>
<tr id="i22" class="altColor">
<td class="colFirst"><code><span class='angle_bracket'>&lt;</span>T<span class='angle_bracket'>&gt;</span>&nbsp;T</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/ignite/IgniteServices.html#serviceProxy-java.lang.String-java.lang.Class-boolean-long-">serviceProxy</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
            <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a><span class='angle_bracket'>&lt;</span>? super T<span class='angle_bracket'>&gt;</span>&nbsp;svcItf,
            boolean&nbsp;sticky,
            long&nbsp;timeout)</code>
<div class="block">Gets a remote handle on the service with timeout.</div>
</td>
</tr>
<tr id="i23" class="rowColor">
<td class="colFirst"><code><span class='angle_bracket'>&lt;</span>T<span class='angle_bracket'>&gt;</span>&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a><span class='angle_bracket'>&lt;</span>T<span class='angle_bracket'>&gt;</span></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/ignite/IgniteServices.html#services-java.lang.String-">services</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>
<div class="block">Gets all locally deployed services with specified name.</div>
</td>
</tr>
<tr id="i24" class="altColor">
<td class="colFirst"><code><a href="../../../org/apache/ignite/IgniteServices.html" title="interface in org.apache.ignite">IgniteServices</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/ignite/IgniteServices.html#withAsync--">withAsync</a></span>()</code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.apache.ignite.lang.IgniteAsyncSupport">
<!--   -->
</a>
<h3>Methods inherited from interface&nbsp;org.apache.ignite.lang.<a href="../../../org/apache/ignite/lang/IgniteAsyncSupport.html" title="interface in org.apache.ignite.lang">IgniteAsyncSupport</a></h3>
<code><a href="../../../org/apache/ignite/lang/IgniteAsyncSupport.html#future--">future</a>, <a href="../../../org/apache/ignite/lang/IgniteAsyncSupport.html#isAsync--">isAsync</a></code></li>
</ul>
</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="clusterGroup--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>clusterGroup</h4>
<pre><a href="../../../org/apache/ignite/cluster/ClusterGroup.html" title="interface in org.apache.ignite.cluster">ClusterGroup</a>&nbsp;clusterGroup()</pre>
<div class="block">Gets the cluster group to which this <code>IgniteServices</code> instance belongs.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Cluster group to which this <code>IgniteServices</code> instance belongs.</dd>
</dl>
</li>
</ul>
<a name="deployClusterSingleton-java.lang.String-org.apache.ignite.services.Service-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>deployClusterSingleton</h4>
<pre><a href="../../../org/apache/ignite/lang/IgniteAsyncSupported.html" title="annotation in org.apache.ignite.lang">@IgniteAsyncSupported</a>
void&nbsp;deployClusterSingleton(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                                                  <a href="../../../org/apache/ignite/services/Service.html" title="interface in org.apache.ignite.services">Service</a>&nbsp;svc)
                                           throws <a href="../../../org/apache/ignite/services/ServiceDeploymentException.html" title="class in org.apache.ignite.services">ServiceDeploymentException</a></pre>
<div class="block">Deploys a cluster-wide singleton service. Ignite will guarantee that there is always
 one instance of the service in the cluster. In case if grid node on which the service
 was deployed crashes or stops, Ignite will automatically redeploy it on another node.
 However, if the node on which the service is deployed remains in topology, then the
 service will always be deployed on that node only, regardless of topology changes.
 <p>
 Note that in case of topology changes, due to network delays, there may be a temporary situation
 when a singleton service instance will be active on more than one node (e.g. crash detection delay).
 <p>
 This method is analogous to calling
 <a href="../../../org/apache/ignite/IgniteServices.html#deployMultiple-java.lang.String-org.apache.ignite.services.Service-int-int-"><code>deployMultiple(name, svc, 1, 1)</code></a>
 method.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - Service name.</dd>
<dd><code>svc</code> - Service instance.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../org/apache/ignite/services/ServiceDeploymentException.html" title="class in org.apache.ignite.services">ServiceDeploymentException</a></code> - If failed to deploy service.</dd>
</dl>
</li>
</ul>
<a name="deployClusterSingletonAsync-java.lang.String-org.apache.ignite.services.Service-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>deployClusterSingletonAsync</h4>
<pre><a href="../../../org/apache/ignite/lang/IgniteFuture.html" title="interface in org.apache.ignite.lang">IgniteFuture</a><span class='angle_bracket'>&lt;</span><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a><span class='angle_bracket'>&gt;</span>&nbsp;deployClusterSingletonAsync(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                                               <a href="../../../org/apache/ignite/services/Service.html" title="interface in org.apache.ignite.services">Service</a>&nbsp;svc)</pre>
<div class="block">Asynchronously deploys a cluster-wide singleton service. Ignite will guarantee that there is always
 one instance of the service in the cluster. In case if grid node on which the service
 was deployed crashes or stops, Ignite will automatically redeploy it on another node.
 However, if the node on which the service is deployed remains in topology, then the
 service will always be deployed on that node only, regardless of topology changes.
 <p>
 Note that in case of topology changes, due to network delays, there may be a temporary situation
 when a singleton service instance will be active on more than one node (e.g. crash detection delay).
 <p>
 This method is analogous to calling
 <a href="../../../org/apache/ignite/IgniteServices.html#deployMultipleAsync-java.lang.String-org.apache.ignite.services.Service-int-int-"><code>deployMultipleAsync(name, svc, 1, 1)</code></a> method.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - Service name.</dd>
<dd><code>svc</code> - Service instance.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a Future representing pending completion of the operation.</dd>
</dl>
</li>
</ul>
<a name="deployNodeSingleton-java.lang.String-org.apache.ignite.services.Service-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>deployNodeSingleton</h4>
<pre><a href="../../../org/apache/ignite/lang/IgniteAsyncSupported.html" title="annotation in org.apache.ignite.lang">@IgniteAsyncSupported</a>
void&nbsp;deployNodeSingleton(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                                               <a href="../../../org/apache/ignite/services/Service.html" title="interface in org.apache.ignite.services">Service</a>&nbsp;svc)
                                        throws <a href="../../../org/apache/ignite/services/ServiceDeploymentException.html" title="class in org.apache.ignite.services">ServiceDeploymentException</a></pre>
<div class="block">Deploys a per-node singleton service. Ignite will guarantee that there is always
 one instance of the service running on each node. Whenever new nodes are started
 within the underlying cluster group, Ignite will automatically deploy one instance of
 the service on every new node.
 <p>
 This method is analogous to calling
 <a href="../../../org/apache/ignite/IgniteServices.html#deployMultiple-java.lang.String-org.apache.ignite.services.Service-int-int-"><code>deployMultiple(name, svc, 0, 1)</code></a>
 method.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - Service name.</dd>
<dd><code>svc</code> - Service instance.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../org/apache/ignite/services/ServiceDeploymentException.html" title="class in org.apache.ignite.services">ServiceDeploymentException</a></code> - If failed to deploy service.</dd>
</dl>
</li>
</ul>
<a name="deployNodeSingletonAsync-java.lang.String-org.apache.ignite.services.Service-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>deployNodeSingletonAsync</h4>
<pre><a href="../../../org/apache/ignite/lang/IgniteFuture.html" title="interface in org.apache.ignite.lang">IgniteFuture</a><span class='angle_bracket'>&lt;</span><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a><span class='angle_bracket'>&gt;</span>&nbsp;deployNodeSingletonAsync(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                                            <a href="../../../org/apache/ignite/services/Service.html" title="interface in org.apache.ignite.services">Service</a>&nbsp;svc)</pre>
<div class="block">Asynchronously deploys a per-node singleton service. Ignite will guarantee that there is always
 one instance of the service running on each node. Whenever new nodes are started
 within the underlying cluster group, Ignite will automatically deploy one instance of
 the service on every new node.
 <p>
 This method is analogous to calling
 <a href="../../../org/apache/ignite/IgniteServices.html#deployMultipleAsync-java.lang.String-org.apache.ignite.services.Service-int-int-"><code>deployMultipleAsync(name, svc, 0, 1)</code></a> method.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - Service name.</dd>
<dd><code>svc</code> - Service instance.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a Future representing pending completion of the operation.</dd>
</dl>
</li>
</ul>
<a name="deployKeyAffinitySingleton-java.lang.String-org.apache.ignite.services.Service-java.lang.String-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>deployKeyAffinitySingleton</h4>
<pre><a href="../../../org/apache/ignite/lang/IgniteAsyncSupported.html" title="annotation in org.apache.ignite.lang">@IgniteAsyncSupported</a>
void&nbsp;deployKeyAffinitySingleton(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                                                      <a href="../../../org/apache/ignite/services/Service.html" title="interface in org.apache.ignite.services">Service</a>&nbsp;svc,
                                                      @Nullable
                                                      @Nullable <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;cacheName,
                                                      <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;affKey)
                                               throws <a href="../../../org/apache/ignite/services/ServiceDeploymentException.html" title="class in org.apache.ignite.services">ServiceDeploymentException</a></pre>
<div class="block">Deploys one instance of this service on the primary node for a given affinity key.
 Whenever topology changes and primary node assignment changes, Ignite will always
 make sure that the service is undeployed on the previous primary node and deployed
 on the new primary node.
 <p>
 Note that in case of topology changes, due to network delays, there may be a temporary situation
 when a service instance will be active on more than one node (e.g. crash detection delay).
 <p>
 This method is analogous to the invocation of <a href="../../../org/apache/ignite/IgniteServices.html#deploy-org.apache.ignite.services.ServiceConfiguration-"><code>deploy(org.apache.ignite.services.ServiceConfiguration)</code></a>
 method as follows:
 <pre name="code" class="java">
     ServiceConfiguration cfg = new ServiceConfiguration();

     cfg.setName(name);
     cfg.setService(svc);
     cfg.setCacheName(cacheName);
     cfg.setAffinityKey(affKey);
     cfg.setTotalCount(1);
     cfg.setMaxPerNodeCount(1);

     ignite.services().deploy(cfg);
 </pre></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - Service name.</dd>
<dd><code>svc</code> - Service instance.</dd>
<dd><code>cacheName</code> - Name of the cache on which affinity for key should be calculated, <code>null</code> for
      default cache.</dd>
<dd><code>affKey</code> - Affinity cache key.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../org/apache/ignite/services/ServiceDeploymentException.html" title="class in org.apache.ignite.services">ServiceDeploymentException</a></code> - If failed to deploy service.</dd>
</dl>
</li>
</ul>
<a name="deployKeyAffinitySingletonAsync-java.lang.String-org.apache.ignite.services.Service-java.lang.String-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>deployKeyAffinitySingletonAsync</h4>
<pre><a href="../../../org/apache/ignite/lang/IgniteFuture.html" title="interface in org.apache.ignite.lang">IgniteFuture</a><span class='angle_bracket'>&lt;</span><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a><span class='angle_bracket'>&gt;</span>&nbsp;deployKeyAffinitySingletonAsync(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                                                   <a href="../../../org/apache/ignite/services/Service.html" title="interface in org.apache.ignite.services">Service</a>&nbsp;svc,
                                                   @Nullable
                                                   @Nullable <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;cacheName,
                                                   <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;affKey)</pre>
<div class="block">Asynchronously deploys one instance of this service on the primary node for a given affinity key.
 Whenever topology changes and primary node assignment changes, Ignite will always
 make sure that the service is undeployed on the previous primary node and deployed
 on the new primary node.
 <p>
 Note that in case of topology changes, due to network delays, there may be a temporary situation
 when a service instance will be active on more than one node (e.g. crash detection delay).
 <p>
 This method is analogous to the invocation of
 <a href="../../../org/apache/ignite/IgniteServices.html#deployAsync-org.apache.ignite.services.ServiceConfiguration-"><code>deployAsync(org.apache.ignite.services.ServiceConfiguration)</code></a> method as follows:
 <pre name="code" class="java">
     ServiceConfiguration cfg = new ServiceConfiguration();

     cfg.setName(name);
     cfg.setService(svc);
     cfg.setCacheName(cacheName);
     cfg.setAffinityKey(affKey);
     cfg.setTotalCount(1);
     cfg.setMaxPerNodeCount(1);

     ignite.services().deployAsync(cfg);
 </pre></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - Service name.</dd>
<dd><code>svc</code> - Service instance.</dd>
<dd><code>cacheName</code> - Name of the cache on which affinity for key should be calculated, <code>null</code> for
      default cache.</dd>
<dd><code>affKey</code> - Affinity cache key.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a Future representing pending completion of the operation.</dd>
</dl>
</li>
</ul>
<a name="deployMultiple-java.lang.String-org.apache.ignite.services.Service-int-int-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>deployMultiple</h4>
<pre><a href="../../../org/apache/ignite/lang/IgniteAsyncSupported.html" title="annotation in org.apache.ignite.lang">@IgniteAsyncSupported</a>
void&nbsp;deployMultiple(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                                          <a href="../../../org/apache/ignite/services/Service.html" title="interface in org.apache.ignite.services">Service</a>&nbsp;svc,
                                          int&nbsp;totalCnt,
                                          int&nbsp;maxPerNodeCnt)
                                   throws <a href="../../../org/apache/ignite/services/ServiceDeploymentException.html" title="class in org.apache.ignite.services">ServiceDeploymentException</a></pre>
<div class="block">Deploys multiple instances of the service on the grid. Ignite will deploy a
 maximum amount of services equal to <code>'totalCnt'</code> parameter making sure that
 there are no more than <code>'maxPerNodeCnt'</code> service instances running
 on each node. Whenever topology changes, Ignite will automatically rebalance
 the deployed services within cluster to make sure that each node will end up with
 about equal number of deployed instances whenever possible.
 <p>
 Note that at least one of <code>'totalCnt'</code> or <code>'maxPerNodeCnt'</code> parameters must have
 value greater than <code>0</code>.
 <p>
 This method is analogous to the invocation of <a href="../../../org/apache/ignite/IgniteServices.html#deploy-org.apache.ignite.services.ServiceConfiguration-"><code>deploy(org.apache.ignite.services.ServiceConfiguration)</code></a>
 method as follows:
 <pre name="code" class="java">
     ServiceConfiguration cfg = new ServiceConfiguration();

     cfg.setName(name);
     cfg.setService(svc);
     cfg.setTotalCount(totalCnt);
     cfg.setMaxPerNodeCount(maxPerNodeCnt);

     ignite.services().deploy(cfg);
 </pre></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - Service name.</dd>
<dd><code>svc</code> - Service instance.</dd>
<dd><code>totalCnt</code> - Maximum number of deployed services in the grid, <code>0</code> for unlimited.</dd>
<dd><code>maxPerNodeCnt</code> - Maximum number of deployed services on each node, <code>0</code> for unlimited.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../org/apache/ignite/services/ServiceDeploymentException.html" title="class in org.apache.ignite.services">ServiceDeploymentException</a></code> - If failed to deploy service.</dd>
</dl>
</li>
</ul>
<a name="deployMultipleAsync-java.lang.String-org.apache.ignite.services.Service-int-int-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>deployMultipleAsync</h4>
<pre><a href="../../../org/apache/ignite/lang/IgniteFuture.html" title="interface in org.apache.ignite.lang">IgniteFuture</a><span class='angle_bracket'>&lt;</span><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a><span class='angle_bracket'>&gt;</span>&nbsp;deployMultipleAsync(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                                       <a href="../../../org/apache/ignite/services/Service.html" title="interface in org.apache.ignite.services">Service</a>&nbsp;svc,
                                       int&nbsp;totalCnt,
                                       int&nbsp;maxPerNodeCnt)</pre>
<div class="block">Asynchronously deploys multiple instances of the service on the grid. Ignite will deploy a
 maximum amount of services equal to <code>'totalCnt'</code> parameter making sure that
 there are no more than <code>'maxPerNodeCnt'</code> service instances running
 on each node. Whenever topology changes, Ignite will automatically rebalance
 the deployed services within cluster to make sure that each node will end up with
 about equal number of deployed instances whenever possible.
 <p>
 Note that at least one of <code>'totalCnt'</code> or <code>'maxPerNodeCnt'</code> parameters must have
 value greater than <code>0</code>.
 <p>
 This method is analogous to the invocation of
 <a href="../../../org/apache/ignite/IgniteServices.html#deployAsync-org.apache.ignite.services.ServiceConfiguration-"><code>deployAsync(org.apache.ignite.services.ServiceConfiguration)</code></a> method as follows:
 <pre name="code" class="java">
     ServiceConfiguration cfg = new ServiceConfiguration();

     cfg.setName(name);
     cfg.setService(svc);
     cfg.setTotalCount(totalCnt);
     cfg.setMaxPerNodeCount(maxPerNodeCnt);

     ignite.services().deployAsync(cfg);
 </pre></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - Service name.</dd>
<dd><code>svc</code> - Service instance.</dd>
<dd><code>totalCnt</code> - Maximum number of deployed services in the grid, <code>0</code> for unlimited.</dd>
<dd><code>maxPerNodeCnt</code> - Maximum number of deployed services on each node, <code>0</code> for unlimited.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a Future representing pending completion of the operation.</dd>
</dl>
</li>
</ul>
<a name="deploy-org.apache.ignite.services.ServiceConfiguration-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>deploy</h4>
<pre><a href="../../../org/apache/ignite/lang/IgniteAsyncSupported.html" title="annotation in org.apache.ignite.lang">@IgniteAsyncSupported</a>
void&nbsp;deploy(<a href="../../../org/apache/ignite/services/ServiceConfiguration.html" title="class in org.apache.ignite.services">ServiceConfiguration</a>&nbsp;cfg)
                           throws <a href="../../../org/apache/ignite/services/ServiceDeploymentException.html" title="class in org.apache.ignite.services">ServiceDeploymentException</a></pre>
<div class="block">Deploys multiple instances of the service on the grid according to provided
 configuration. Ignite will deploy a maximum amount of services equal to
 <a href="../../../org/apache/ignite/services/ServiceConfiguration.html#getTotalCount--"><code>cfg.getTotalCount()</code></a>  parameter
 making sure that there are no more than
 <a href="../../../org/apache/ignite/services/ServiceConfiguration.html#getMaxPerNodeCount--"><code>cfg.getMaxPerNodeCount()</code></a>
 service instances running on each node. Whenever topology changes, Ignite will automatically rebalance
 the deployed services within cluster to make sure that each node will end up with
 about equal number of deployed instances whenever possible.
 <p>
 If <a href="../../../org/apache/ignite/services/ServiceConfiguration.html#getAffinityKey--"><code>cfg.getAffinityKey()</code></a>
 is not <code>null</code>, then Ignite  will deploy the service on the primary node for given affinity key.
 The affinity will be calculated on the cache with
 <a href="../../../org/apache/ignite/services/ServiceConfiguration.html#getCacheName--"><code>cfg.getCacheName()</code></a> name.
 <p>
 If <a href="../../../org/apache/ignite/services/ServiceConfiguration.html#getNodeFilter--"><code>cfg.getNodeFilter()</code></a>
 is not <code>null</code>, then  Ignite will deploy service on all grid nodes for which
 the provided filter evaluates to <code>true</code>.
 The node filter will be checked in addition to the underlying cluster group filter, or the
 whole grid, if the underlying cluster group includes all the cluster nodes.
 <p>
 Note that at least one of <code>'totalCnt'</code> or <code>'maxPerNodeCnt'</code> parameters must have
 value greater than <code>0</code>.
 <p>
 Here is an example of creating service deployment configuration:
 <pre name="code" class="java">
     ServiceConfiguration cfg = new ServiceConfiguration();

     cfg.setName(name);
     cfg.setService(svc);
     cfg.setTotalCount(0); // Unlimited.
     cfg.setMaxPerNodeCount(2); // Deploy 2 instances of service on each node.

     ignite.services().deploy(cfg);
 </pre></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>cfg</code> - Service configuration.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../org/apache/ignite/services/ServiceDeploymentException.html" title="class in org.apache.ignite.services">ServiceDeploymentException</a></code> - If failed to deploy service.</dd>
</dl>
</li>
</ul>
<a name="deployAsync-org.apache.ignite.services.ServiceConfiguration-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>deployAsync</h4>
<pre><a href="../../../org/apache/ignite/lang/IgniteFuture.html" title="interface in org.apache.ignite.lang">IgniteFuture</a><span class='angle_bracket'>&lt;</span><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a><span class='angle_bracket'>&gt;</span>&nbsp;deployAsync(<a href="../../../org/apache/ignite/services/ServiceConfiguration.html" title="class in org.apache.ignite.services">ServiceConfiguration</a>&nbsp;cfg)</pre>
<div class="block">Asynchronously deploys multiple instances of the service on the grid according to provided
 configuration. Ignite will deploy a maximum amount of services equal to
 <a href="../../../org/apache/ignite/services/ServiceConfiguration.html#getTotalCount--"><code>cfg.getTotalCount()</code></a>  parameter
 making sure that there are no more than
 <a href="../../../org/apache/ignite/services/ServiceConfiguration.html#getMaxPerNodeCount--"><code>cfg.getMaxPerNodeCount()</code></a>
 service instances running on each node. Whenever topology changes, Ignite will automatically rebalance
 the deployed services within cluster to make sure that each node will end up with
 about equal number of deployed instances whenever possible.
 <p>
 If <a href="../../../org/apache/ignite/services/ServiceConfiguration.html#getAffinityKey--"><code>cfg.getAffinityKey()</code></a>
 is not <code>null</code>, then Ignite
 will deploy the service on the primary node for given affinity key. The affinity will be calculated
 on the cache with <a href="../../../org/apache/ignite/services/ServiceConfiguration.html#getCacheName--"><code>cfg.getCacheName()</code></a> name.
 <p>
 If <a href="../../../org/apache/ignite/services/ServiceConfiguration.html#getNodeFilter--"><code>cfg.getNodeFilter()</code></a>
 is not <code>null</code>, then Ignite will deploy service on all grid nodes
 for which the provided filter evaluates to <code>true</code>.
 The node filter will be checked in addition to the underlying cluster group filter, or the
 whole grid, if the underlying cluster group includes all the cluster nodes.
 <p>
 Note that at least one of <code>'totalCnt'</code> or <code>'maxPerNodeCnt'</code> parameters must have
 value greater than <code>0</code>.
 <p>
 Here is an example of creating service deployment configuration:
 <pre name="code" class="java">
     ServiceConfiguration cfg = new ServiceConfiguration();

     cfg.setName(name);
     cfg.setService(svc);
     cfg.setTotalCount(0); // Unlimited.
     cfg.setMaxPerNodeCount(2); // Deploy 2 instances of service on each node.

     ignite.services().deployAsync(cfg);
 </pre></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>cfg</code> - Service configuration.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a Future representing pending completion of the operation.</dd>
</dl>
</li>
</ul>
<a name="deployAll-java.util.Collection-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>deployAll</h4>
<pre>void&nbsp;deployAll(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a><span class='angle_bracket'>&lt;</span><a href="../../../org/apache/ignite/services/ServiceConfiguration.html" title="class in org.apache.ignite.services">ServiceConfiguration</a><span class='angle_bracket'>&gt;</span>&nbsp;cfgs)
        throws <a href="../../../org/apache/ignite/services/ServiceDeploymentException.html" title="class in org.apache.ignite.services">ServiceDeploymentException</a></pre>
<div class="block">Deploys multiple services described by provided configurations. Depending on specified parameters, multiple
 instances of the same service may be deployed (see <a href="../../../org/apache/ignite/services/ServiceConfiguration.html" title="class in org.apache.ignite.services"><code>ServiceConfiguration</code></a>). Whenever topology changes,
 Ignite will automatically rebalance the deployed services within cluster to make sure that each node will end up
 with about equal number of deployed instances whenever possible.

 If deployment of some of the provided services fails, then <a href="../../../org/apache/ignite/services/ServiceDeploymentException.html" title="class in org.apache.ignite.services"><code>ServiceDeploymentException</code></a> containing a list
 of failed services will be thrown. It is guaranteed that all services that were provided to this method and are
 not present in the list of failed services are successfully deployed by the moment of the exception being thrown.
 Note that if exception is thrown, then partial deployment may have occurred.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>cfgs</code> - <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util"><code>Collection</code></a> of service configurations to be deployed.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../org/apache/ignite/services/ServiceDeploymentException.html" title="class in org.apache.ignite.services">ServiceDeploymentException</a></code> - If failed to deploy services.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../org/apache/ignite/IgniteServices.html#deploy-org.apache.ignite.services.ServiceConfiguration-"><code>deploy(ServiceConfiguration)</code></a>, 
<a href="../../../org/apache/ignite/IgniteServices.html#deployAllAsync-java.util.Collection-"><code>deployAllAsync(Collection)</code></a></dd>
</dl>
</li>
</ul>
<a name="deployAllAsync-java.util.Collection-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>deployAllAsync</h4>
<pre><a href="../../../org/apache/ignite/lang/IgniteFuture.html" title="interface in org.apache.ignite.lang">IgniteFuture</a><span class='angle_bracket'>&lt;</span><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a><span class='angle_bracket'>&gt;</span>&nbsp;deployAllAsync(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a><span class='angle_bracket'>&lt;</span><a href="../../../org/apache/ignite/services/ServiceConfiguration.html" title="class in org.apache.ignite.services">ServiceConfiguration</a><span class='angle_bracket'>&gt;</span>&nbsp;cfgs)</pre>
<div class="block">Asynchronously deploys multiple services described by provided configurations. Depending on specified parameters,
 multiple instances of the same service may be deployed (see <a href="../../../org/apache/ignite/services/ServiceConfiguration.html" title="class in org.apache.ignite.services"><code>ServiceConfiguration</code></a>). Whenever topology
 changes, Ignite will automatically rebalance the deployed services within cluster to make sure that each node
 will end up with about equal number of deployed instances whenever possible.

 If deployment of some of the provided services fails, then <a href="../../../org/apache/ignite/services/ServiceDeploymentException.html" title="class in org.apache.ignite.services"><code>ServiceDeploymentException</code></a> containing a list
 of failed services will be thrown from <a href="../../../org/apache/ignite/lang/IgniteFuture.html#get--"><code>get()</code></a> method of the returned future. It is
 guaranteed that all services, that were provided to this method and are not present in the list of failed
 services, are successfully deployed by the moment of the exception being thrown. Note that if exception is
 thrown, then partial deployment may have occurred.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>cfgs</code> - <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util"><code>Collection</code></a> of service configurations to be deployed.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a Future representing pending completion of the operation.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../org/apache/ignite/IgniteServices.html#deploy-org.apache.ignite.services.ServiceConfiguration-"><code>deploy(ServiceConfiguration)</code></a>, 
<a href="../../../org/apache/ignite/IgniteServices.html#deployAll-java.util.Collection-"><code>deployAll(Collection)</code></a></dd>
</dl>
</li>
</ul>
<a name="cancel-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>cancel</h4>
<pre><a href="../../../org/apache/ignite/lang/IgniteAsyncSupported.html" title="annotation in org.apache.ignite.lang">@IgniteAsyncSupported</a>
void&nbsp;cancel(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)
                           throws <a href="../../../org/apache/ignite/IgniteException.html" title="class in org.apache.ignite">IgniteException</a></pre>
<div class="block">Cancels service deployment. If a service with specified name was deployed on the grid,
 then <a href="../../../org/apache/ignite/services/Service.html#cancel-org.apache.ignite.services.ServiceContext-"><code>Service.cancel(org.apache.ignite.services.ServiceContext)</code></a>
 method will be called on it.
 <p>
 Note that Ignite cannot guarantee that the service exits from
 <a href="../../../org/apache/ignite/services/Service.html#execute-org.apache.ignite.services.ServiceContext-"><code>Service.execute(org.apache.ignite.services.ServiceContext)</code></a>
 method whenever <a href="../../../org/apache/ignite/services/Service.html#cancel-org.apache.ignite.services.ServiceContext-"><code>Service.cancel(org.apache.ignite.services.ServiceContext)</code></a>
 is called. It is up to the user to  make sure that the service code properly reacts to cancellations.
 <p>
 Supports asynchronous execution (see <a href="../../../org/apache/ignite/lang/IgniteAsyncSupport.html" title="interface in org.apache.ignite.lang"><code>IgniteAsyncSupport</code></a>).</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - Name of service to cancel.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../org/apache/ignite/IgniteException.html" title="class in org.apache.ignite">IgniteException</a></code> - If failed to cancel service.</dd>
</dl>
</li>
</ul>
<a name="cancelAsync-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>cancelAsync</h4>
<pre><a href="../../../org/apache/ignite/lang/IgniteFuture.html" title="interface in org.apache.ignite.lang">IgniteFuture</a><span class='angle_bracket'>&lt;</span><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a><span class='angle_bracket'>&gt;</span>&nbsp;cancelAsync(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</pre>
<div class="block">Asynchronously cancels service deployment. If a service with specified name was deployed on the grid,
 then <a href="../../../org/apache/ignite/services/Service.html#cancel-org.apache.ignite.services.ServiceContext-"><code>Service.cancel(org.apache.ignite.services.ServiceContext)</code></a>
 method will be called on it.
 <p>
 Note that Ignite cannot guarantee that the service exits from
 <a href="../../../org/apache/ignite/services/Service.html#execute-org.apache.ignite.services.ServiceContext-"><code>Service.execute(org.apache.ignite.services.ServiceContext)</code></a>
 method whenever <a href="../../../org/apache/ignite/services/Service.html#cancel-org.apache.ignite.services.ServiceContext-"><code>Service.cancel(org.apache.ignite.services.ServiceContext)</code></a>
 is called. It is up to the user to
 make sure that the service code properly reacts to cancellations.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - Name of service to cancel.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a Future representing pending completion of the operation.</dd>
</dl>
</li>
</ul>
<a name="cancelAll-java.util.Collection-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>cancelAll</h4>
<pre><a href="../../../org/apache/ignite/lang/IgniteAsyncSupported.html" title="annotation in org.apache.ignite.lang">@IgniteAsyncSupported</a>
void&nbsp;cancelAll(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a><span class='angle_bracket'>&lt;</span><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a><span class='angle_bracket'>&gt;</span>&nbsp;names)
                              throws <a href="../../../org/apache/ignite/IgniteException.html" title="class in org.apache.ignite">IgniteException</a></pre>
<div class="block">Cancels services with specified names.
 <p>
 Note that depending on user logic, it may still take extra time for a service to
 finish execution, even after it was cancelled.
 <p>
 Supports asynchronous execution (see <a href="../../../org/apache/ignite/lang/IgniteAsyncSupport.html" title="interface in org.apache.ignite.lang"><code>IgniteAsyncSupport</code></a>).</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>names</code> - Names of services to cancel.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../org/apache/ignite/IgniteException.html" title="class in org.apache.ignite">IgniteException</a></code> - If failed to cancel services.</dd>
</dl>
</li>
</ul>
<a name="cancelAllAsync-java.util.Collection-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>cancelAllAsync</h4>
<pre><a href="../../../org/apache/ignite/lang/IgniteFuture.html" title="interface in org.apache.ignite.lang">IgniteFuture</a><span class='angle_bracket'>&lt;</span><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a><span class='angle_bracket'>&gt;</span>&nbsp;cancelAllAsync(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a><span class='angle_bracket'>&lt;</span><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a><span class='angle_bracket'>&gt;</span>&nbsp;names)</pre>
<div class="block">Asynchronously cancels services with specified names.
 <p>
 Note that depending on user logic, it may still take extra time for a service to
 finish execution, even after it was cancelled.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>names</code> - Names of services to cancel.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a Future representing pending completion of the operation.</dd>
</dl>
</li>
</ul>
<a name="cancelAll--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>cancelAll</h4>
<pre><a href="../../../org/apache/ignite/lang/IgniteAsyncSupported.html" title="annotation in org.apache.ignite.lang">@IgniteAsyncSupported</a>
void&nbsp;cancelAll()
                              throws <a href="../../../org/apache/ignite/IgniteException.html" title="class in org.apache.ignite">IgniteException</a></pre>
<div class="block">Cancels all deployed services.
 <p>
 Note that depending on user logic, it may still take extra time for a service to
 finish execution, even after it was cancelled.
 <p>
 Supports asynchronous execution (see <a href="../../../org/apache/ignite/lang/IgniteAsyncSupport.html" title="interface in org.apache.ignite.lang"><code>IgniteAsyncSupport</code></a>).</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../org/apache/ignite/IgniteException.html" title="class in org.apache.ignite">IgniteException</a></code> - If failed to cancel services.</dd>
</dl>
</li>
</ul>
<a name="cancelAllAsync--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>cancelAllAsync</h4>
<pre><a href="../../../org/apache/ignite/lang/IgniteFuture.html" title="interface in org.apache.ignite.lang">IgniteFuture</a><span class='angle_bracket'>&lt;</span><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a><span class='angle_bracket'>&gt;</span>&nbsp;cancelAllAsync()</pre>
<div class="block">Asynchronously cancels all deployed services.
 <p>
 Note that depending on user logic, it may still take extra time for a service to
 finish execution, even after it was cancelled.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a Future representing pending completion of the operation.</dd>
</dl>
</li>
</ul>
<a name="serviceDescriptors--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>serviceDescriptors</h4>
<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a><span class='angle_bracket'>&lt;</span><a href="../../../org/apache/ignite/services/ServiceDescriptor.html" title="interface in org.apache.ignite.services">ServiceDescriptor</a><span class='angle_bracket'>&gt;</span>&nbsp;serviceDescriptors()</pre>
<div class="block">Gets metadata about all deployed services in the grid.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Metadata about all deployed services in the grid.</dd>
</dl>
</li>
</ul>
<a name="service-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>service</h4>
<pre><span class='angle_bracket'>&lt;</span>T<span class='angle_bracket'>&gt;</span>&nbsp;T&nbsp;service(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</pre>
<div class="block">Gets locally deployed service with specified name.</div>
<dl>
<dt><span class="paramLabel">Type Parameters:</span></dt>
<dd><code>T</code> - Service type</dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - Service name.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Deployed service with specified name.</dd>
</dl>
</li>
</ul>
<a name="services-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>services</h4>
<pre><span class='angle_bracket'>&lt;</span>T<span class='angle_bracket'>&gt;</span>&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a><span class='angle_bracket'>&lt;</span>T<span class='angle_bracket'>&gt;</span>&nbsp;services(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</pre>
<div class="block">Gets all locally deployed services with specified name.</div>
<dl>
<dt><span class="paramLabel">Type Parameters:</span></dt>
<dd><code>T</code> - Service type.</dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - Service name.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>all deployed services with specified name.</dd>
</dl>
</li>
</ul>
<a name="serviceProxy-java.lang.String-java.lang.Class-boolean-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>serviceProxy</h4>
<pre><span class='angle_bracket'>&lt;</span>T<span class='angle_bracket'>&gt;</span>&nbsp;T&nbsp;serviceProxy(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                   <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a><span class='angle_bracket'>&lt;</span>? super T<span class='angle_bracket'>&gt;</span>&nbsp;svcItf,
                   boolean&nbsp;sticky)
            throws <a href="../../../org/apache/ignite/IgniteException.html" title="class in org.apache.ignite">IgniteException</a></pre>
<div class="block">Gets a remote handle on the service. If service is available locally,
 then local instance is returned, otherwise, a remote proxy is dynamically
 created and provided for the specified service.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - Service name.</dd>
<dd><code>svcItf</code> - Interface for the service.</dd>
<dd><code>sticky</code> - Whether or not Ignite should always contact the same remote
      service or try to load-balance between services.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Either proxy over remote service or local service if it is deployed locally.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../org/apache/ignite/IgniteException.html" title="class in org.apache.ignite">IgniteException</a></code> - If failed to create service proxy.</dd>
</dl>
</li>
</ul>
<a name="serviceProxy-java.lang.String-java.lang.Class-boolean-long-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>serviceProxy</h4>
<pre><span class='angle_bracket'>&lt;</span>T<span class='angle_bracket'>&gt;</span>&nbsp;T&nbsp;serviceProxy(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                   <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a><span class='angle_bracket'>&lt;</span>? super T<span class='angle_bracket'>&gt;</span>&nbsp;svcItf,
                   boolean&nbsp;sticky,
                   long&nbsp;timeout)
            throws <a href="../../../org/apache/ignite/IgniteException.html" title="class in org.apache.ignite">IgniteException</a></pre>
<div class="block">Gets a remote handle on the service with timeout. If service is available locally,
 then local instance is returned and timeout ignored, otherwise, a remote proxy is dynamically
 created and provided for the specified service.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - Service name.</dd>
<dd><code>svcItf</code> - Interface for the service.</dd>
<dd><code>sticky</code> - Whether or not Ignite should always contact the same remote
      service or try to load-balance between services.</dd>
<dd><code>timeout</code> - If greater than 0 created proxy will wait for service availability only specified time,
  and will limit remote service invocation time.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Either proxy over remote service or local service if it is deployed locally.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../org/apache/ignite/IgniteException.html" title="class in org.apache.ignite">IgniteException</a></code> - If failed to create service proxy.</dd>
</dl>
</li>
</ul>
<a name="withAsync--">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>withAsync</h4>
<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
<a href="../../../org/apache/ignite/IgniteServices.html" title="interface in org.apache.ignite">IgniteServices</a>&nbsp;withAsync()</pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
<div class="block">Gets instance of this component with asynchronous mode enabled.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../org/apache/ignite/lang/IgniteAsyncSupport.html#withAsync--">withAsync</a></code>&nbsp;in interface&nbsp;<code><a href="../../../org/apache/ignite/lang/IgniteAsyncSupport.html" title="interface in org.apache.ignite.lang">IgniteAsyncSupport</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Instance of this component with asynchronous mode enabled.</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>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<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/IgniteServices.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>
<div class="subNav">
<ul class="navList">
<li><a href="../../../org/apache/ignite/IgniteSemaphore.html" title="interface in org.apache.ignite"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../org/apache/ignite/IgniteSet.html" title="interface in org.apache.ignite"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?org/apache/ignite/IgniteServices.html" target="_top">Frames</a></li>
<li><a href="IgniteServices.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../allclasses-noframe.html">All&nbsp;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>2020 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>                                         </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 Database and Caching Platform</b>                                                         </td>                                                         <td>:&nbsp;&nbsp;                                                             ver. <strong>2.9.0</strong>                                                         </td>                                                     </tr>                                                     <tr style="padding: 0; margin: 0">                                                         <td>                                                             <b>Release Date</b>                                                         </td>                                                         <td>:&nbsp;&nbsp;                                                             October 15 2020                                                         </td>                                                     </tr>                                                 </tbody>                                             </table>                                         </td>                                     </tr>                                     </table></small></p>
</body>
</html>
