blob: cd1eebd0339d1530e9cfdecb55cc31f857bc8911 [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>
<!-- Generated by javadoc (version 1.7.0_80) on Sat Apr 08 11:09:15 PDT 2017 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>ZKDiscoveryService (Apache Twill 0.11.0 API)</title>
<meta name="date" content="2017-04-08">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
</head>
<body>
<script type="text/javascript"><!--
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="ZKDiscoveryService (Apache Twill 0.11.0 API)";
}
//-->
</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/ZKDiscoveryService.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/twill/discovery/ServiceDiscovered.ChangeListener.html" title="interface in org.apache.twill.discovery"><span class="strong">Prev Class</span></a></li>
<li>Next Class</li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?org/apache/twill/discovery/ZKDiscoveryService.html" target="_top">Frames</a></li>
<li><a href="ZKDiscoveryService.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><a href="#constructor_summary">Constr</a>&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><a href="#constructor_detail">Constr</a>&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.twill.discovery</div>
<h2 title="Class ZKDiscoveryService" class="title">Class ZKDiscoveryService</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li>org.apache.twill.discovery.ZKDiscoveryService</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/AutoCloseable.html?is-external=true" title="class or interface in java.lang">AutoCloseable</a>, <a href="../../../../org/apache/twill/discovery/DiscoveryService.html" title="interface in org.apache.twill.discovery">DiscoveryService</a>, <a href="../../../../org/apache/twill/discovery/DiscoveryServiceClient.html" title="interface in org.apache.twill.discovery">DiscoveryServiceClient</a></dd>
</dl>
<hr>
<br>
<pre>public class <span class="strong">ZKDiscoveryService</span>
extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
implements <a href="../../../../org/apache/twill/discovery/DiscoveryService.html" title="interface in org.apache.twill.discovery">DiscoveryService</a>, <a href="../../../../org/apache/twill/discovery/DiscoveryServiceClient.html" title="interface in org.apache.twill.discovery">DiscoveryServiceClient</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/AutoCloseable.html?is-external=true" title="class or interface in java.lang">AutoCloseable</a></pre>
<div class="block">Zookeeper implementation of <a href="../../../../org/apache/twill/discovery/DiscoveryService.html" title="interface in org.apache.twill.discovery"><code>DiscoveryService</code></a> and <a href="../../../../org/apache/twill/discovery/DiscoveryServiceClient.html" title="interface in org.apache.twill.discovery"><code>DiscoveryServiceClient</code></a>.
<p>
Discoverable services are registered within Zookeeper under the namespace 'discoverable' by default.
If you would like to change the namespace under which the services are registered then you can pass
in the namespace during construction of <a href="../../../../org/apache/twill/discovery/ZKDiscoveryService.html" title="class in org.apache.twill.discovery"><code>ZKDiscoveryService</code></a>.
</p>
<p>
Following is a simple example of how <a href="../../../../org/apache/twill/discovery/ZKDiscoveryService.html" title="class in org.apache.twill.discovery"><code>ZKDiscoveryService</code></a> can be used for registering services
and also for discovering the registered services.
</p>
<blockquote>
<pre>
<code>DiscoveryService service = new ZKDiscoveryService(zkClient);
service.register(new Discoverable() {
&amp;#64;Override
public String getName() {
return 'service-name';
}
&amp;#64;Override
public InetSocketAddress getSocketAddress() {
return new InetSocketAddress(hostname, port);
}
});
...
...
ServiceDiscovered services = service.discovery("service-name");
...
</code>
</pre>
</blockquote></div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><strong><a href="../../../../org/apache/twill/discovery/ZKDiscoveryService.html#ZKDiscoveryService(org.apache.twill.zookeeper.ZKClient)">ZKDiscoveryService</a></strong>(<a href="../../../../org/apache/twill/zookeeper/ZKClient.html" title="interface in org.apache.twill.zookeeper">ZKClient</a>&nbsp;zkClient)</code>
<div class="block">Constructs ZKDiscoveryService using the provided zookeeper client for storing service registry.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><code><strong><a href="../../../../org/apache/twill/discovery/ZKDiscoveryService.html#ZKDiscoveryService(org.apache.twill.zookeeper.ZKClient,%20java.lang.String)">ZKDiscoveryService</a></strong>(<a href="../../../../org/apache/twill/zookeeper/ZKClient.html" title="interface in org.apache.twill.zookeeper">ZKClient</a>&nbsp;zkClient,
<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;namespace)</code>
<div class="block">Constructs ZKDiscoveryService using the provided zookeeper client for storing service registry under namespace.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ========== 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/twill/discovery/ZKDiscoveryService.html#close()">close</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/twill/discovery/ServiceDiscovered.html" title="interface in org.apache.twill.discovery">ServiceDiscovered</a></code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/twill/discovery/ZKDiscoveryService.html#discover(java.lang.String)">discover</a></strong>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;service)</code>
<div class="block">Discover service with the given name.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/twill/common/Cancellable.html" title="interface in org.apache.twill.common">Cancellable</a></code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/twill/discovery/ZKDiscoveryService.html#register(org.apache.twill.discovery.Discoverable)">register</a></strong>(<a href="../../../../org/apache/twill/discovery/Discoverable.html" title="class in org.apache.twill.discovery">Discoverable</a>&nbsp;discoverable)</code>
<div class="block">Registers a <a href="../../../../org/apache/twill/discovery/Discoverable.html" title="class in org.apache.twill.discovery"><code>Discoverable</code></a> in zookeeper.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods_inherited_from_class_java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait(long,%20int)" title="class or interface in java.lang">wait</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="ZKDiscoveryService(org.apache.twill.zookeeper.ZKClient)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>ZKDiscoveryService</h4>
<pre>public&nbsp;ZKDiscoveryService(<a href="../../../../org/apache/twill/zookeeper/ZKClient.html" title="interface in org.apache.twill.zookeeper">ZKClient</a>&nbsp;zkClient)</pre>
<div class="block">Constructs ZKDiscoveryService using the provided zookeeper client for storing service registry.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>zkClient</code> - The <a href="../../../../org/apache/twill/zookeeper/ZKClient.html" title="interface in org.apache.twill.zookeeper"><code>ZKClient</code></a> for interacting with zookeeper.</dd></dl>
</li>
</ul>
<a name="ZKDiscoveryService(org.apache.twill.zookeeper.ZKClient, java.lang.String)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>ZKDiscoveryService</h4>
<pre>public&nbsp;ZKDiscoveryService(<a href="../../../../org/apache/twill/zookeeper/ZKClient.html" title="interface in org.apache.twill.zookeeper">ZKClient</a>&nbsp;zkClient,
<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;namespace)</pre>
<div class="block">Constructs ZKDiscoveryService using the provided zookeeper client for storing service registry under namespace.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>zkClient</code> - of zookeeper quorum</dd><dd><code>namespace</code> - under which the service registered would be stored in zookeeper.
If namespace is <code>null</code>, no namespace will be used.</dd></dl>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method_detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="register(org.apache.twill.discovery.Discoverable)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>register</h4>
<pre>public&nbsp;<a href="../../../../org/apache/twill/common/Cancellable.html" title="interface in org.apache.twill.common">Cancellable</a>&nbsp;register(<a href="../../../../org/apache/twill/discovery/Discoverable.html" title="class in org.apache.twill.discovery">Discoverable</a>&nbsp;discoverable)</pre>
<div class="block">Registers a <a href="../../../../org/apache/twill/discovery/Discoverable.html" title="class in org.apache.twill.discovery"><code>Discoverable</code></a> in zookeeper.
<p>
Registering a <a href="../../../../org/apache/twill/discovery/Discoverable.html" title="class in org.apache.twill.discovery"><code>Discoverable</code></a> will create a node &lt;base&gt;/&lt;service-name&gt;
in zookeeper as a ephemeral node. If the node already exists (timeout associated with emphemeral node creation),
then a runtime exception is thrown to make sure that a service with an intent to register is not started without
registering.
When a runtime exception is thrown, expectation is that the process being started will fail and would be started
again by the monitoring service.
</p></div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../org/apache/twill/discovery/DiscoveryService.html#register(org.apache.twill.discovery.Discoverable)">register</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../org/apache/twill/discovery/DiscoveryService.html" title="interface in org.apache.twill.discovery">DiscoveryService</a></code></dd>
<dt><span class="strong">Parameters:</span></dt><dd><code>discoverable</code> - Information of the service provider that could be discovered.</dd>
<dt><span class="strong">Returns:</span></dt><dd>An instance of <a href="../../../../org/apache/twill/common/Cancellable.html" title="interface in org.apache.twill.common"><code>Cancellable</code></a></dd></dl>
</li>
</ul>
<a name="discover(java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>discover</h4>
<pre>public&nbsp;<a href="../../../../org/apache/twill/discovery/ServiceDiscovered.html" title="interface in org.apache.twill.discovery">ServiceDiscovered</a>&nbsp;discover(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;service)</pre>
<div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../org/apache/twill/discovery/DiscoveryServiceClient.html#discover(java.lang.String)">DiscoveryServiceClient</a></code></strong></div>
<div class="block">Discover service with the given name.</div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../org/apache/twill/discovery/DiscoveryServiceClient.html#discover(java.lang.String)">discover</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../org/apache/twill/discovery/DiscoveryServiceClient.html" title="interface in org.apache.twill.discovery">DiscoveryServiceClient</a></code></dd>
<dt><span class="strong">Parameters:</span></dt><dd><code>service</code> - Name of the service</dd>
<dt><span class="strong">Returns:</span></dt><dd>A <a href="../../../../org/apache/twill/discovery/ServiceDiscovered.html" title="interface in org.apache.twill.discovery"><code>ServiceDiscovered</code></a> object representing the result.</dd></dl>
</li>
</ul>
<a name="close()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>close</h4>
<pre>public&nbsp;void&nbsp;close()</pre>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/AutoCloseable.html?is-external=true#close()" title="class or interface in java.lang">close</a></code>&nbsp;in interface&nbsp;<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/AutoCloseable.html?is-external=true" title="class or interface in java.lang">AutoCloseable</a></code></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/ZKDiscoveryService.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/twill/discovery/ServiceDiscovered.ChangeListener.html" title="interface in org.apache.twill.discovery"><span class="strong">Prev Class</span></a></li>
<li>Next Class</li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?org/apache/twill/discovery/ZKDiscoveryService.html" target="_top">Frames</a></li>
<li><a href="ZKDiscoveryService.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><a href="#constructor_summary">Constr</a>&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><a href="#constructor_detail">Constr</a>&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>Copyright &#169; 2013-2016 <a href="http://www.apache.org">The Apache Software Foundation</a>. All rights reserved.</small></p>
</body>
</html>