blob: 15444ea8a7154fa5210bc533c6835396ff1c1ec6 [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 (1.8.0_221) on Wed Jan 29 15:38:00 PST 2020 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>ZKDiscoveryService (Apache Twill 0.14.0 API)</title>
<meta name="date" content="2020-01-29">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="ZKDiscoveryService (Apache Twill 0.14.0 API)";
}
}
catch(err) {
}
//-->
var methods = {"i0":10,"i1":10,"i2":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete 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/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="typeNameLink">Prev&nbsp;Class</span></a></li>
<li>Next&nbsp;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&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><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="https://docs.oracle.com/javase/8/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="https://docs.oracle.com/javase/8/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="typeNameLabel">ZKDiscoveryService</span>
extends <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>
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="https://docs.oracle.com/javase/8/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="memberSummary" 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><span class="memberNameLink"><a href="../../../../org/apache/twill/discovery/ZKDiscoveryService.html#ZKDiscoveryService-org.apache.twill.zookeeper.ZKClient-">ZKDiscoveryService</a></span>(<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><span class="memberNameLink"><a href="../../../../org/apache/twill/discovery/ZKDiscoveryService.html#ZKDiscoveryService-org.apache.twill.zookeeper.ZKClient-java.lang.String-">ZKDiscoveryService</a></span>(<a href="../../../../org/apache/twill/zookeeper/ZKClient.html" title="interface in org.apache.twill.zookeeper">ZKClient</a>&nbsp;zkClient,
<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;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="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="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete 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/twill/discovery/ZKDiscoveryService.html#close--">close</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i1" 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><span class="memberNameLink"><a href="../../../../org/apache/twill/discovery/ZKDiscoveryService.html#discover-java.lang.String-">discover</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;service)</code>
<div class="block">Discover service with the given name.</div>
</td>
</tr>
<tr id="i2" 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><span class="memberNameLink"><a href="../../../../org/apache/twill/discovery/ZKDiscoveryService.html#register-org.apache.twill.discovery.Discoverable-">register</a></span>(<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="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" 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="paramLabel">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="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;namespace)</pre>
<div class="block">Constructs ZKDiscoveryService using the provided zookeeper client for storing service registry under namespace.</div>
<dl>
<dt><span class="paramLabel">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><span class="overrideSpecifyLabel">Specified by:</span></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="paramLabel">Parameters:</span></dt>
<dd><code>discoverable</code> - Information of the service provider that could be discovered.</dd>
<dt><span class="returnLabel">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="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;service)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../org/apache/twill/discovery/DiscoveryServiceClient.html#discover-java.lang.String-">DiscoveryServiceClient</a></code></span></div>
<div class="block">Discover service with the given name.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></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="paramLabel">Parameters:</span></dt>
<dd><code>service</code> - Name of the service</dd>
<dt><span class="returnLabel">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><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/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="https://docs.oracle.com/javase/8/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>
<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/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="typeNameLink">Prev&nbsp;Class</span></a></li>
<li>Next&nbsp;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&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><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-2020 <a href="http://www.apache.org">The Apache Software Foundation</a>. All rights reserved.</small></p>
</body>
</html>