blob: d4ece8b561099fa389468ba0fa10a18f14b7cf9b [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) on Sun Aug 28 20:41:43 EST 2016 -->
<title>BasicObjectEndpoint (Apache River v3.0.0 Specification-only API Documentation)</title>
<meta name="date" content="2016-08-28">
<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="BasicObjectEndpoint (Apache River v3.0.0 Specification-only API Documentation)";
}
}
catch(err) {
}
//-->
var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":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/BasicObjectEndpoint.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="../../../net/jini/jeri/BasicJeriTrustVerifier.html" title="class in net.jini.jeri"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../net/jini/jeri/Endpoint.html" title="interface in net.jini.jeri"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?net/jini/jeri/BasicObjectEndpoint.html" target="_top">Frames</a></li>
<li><a href="BasicObjectEndpoint.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">net.jini.jeri</div>
<h2 title="Class BasicObjectEndpoint" class="title">Class BasicObjectEndpoint</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="http://docs.oracle.com/javase/6/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>net.jini.jeri.BasicObjectEndpoint</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/6/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>, <a href="../../../net/jini/jeri/ObjectEndpoint.html" title="interface in net.jini.jeri">ObjectEndpoint</a>, <a href="../../../net/jini/security/proxytrust/TrustEquivalence.html" title="interface in net.jini.security.proxytrust">TrustEquivalence</a></dd>
</dl>
<hr>
<br>
<pre>public final class <span class="typeNameLabel">BasicObjectEndpoint</span>
extends <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
implements <a href="../../../net/jini/jeri/ObjectEndpoint.html" title="interface in net.jini.jeri">ObjectEndpoint</a>, <a href="../../../net/jini/security/proxytrust/TrustEquivalence.html" title="interface in net.jini.security.proxytrust">TrustEquivalence</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a></pre>
<div class="block">References a remote object with an <a href="../../../net/jini/jeri/Endpoint.html" title="interface in net.jini.jeri"><code>Endpoint</code></a> for
sending requests to the object and a <a href="../../../net/jini/id/Uuid.html" title="class in net.jini.id"><code>Uuid</code></a> to identify
the object at that <code>Endpoint</code>.
<p>In addition to the <code>Endpoint</code> and the
<code>Uuid</code>, <code>BasicObjectEndpoint</code> instances also
contain a flag indicating whether or not the instance participates
in distributed garbage collection (DGC).
<p>The <a href="../../../net/jini/jeri/BasicObjectEndpoint.html#newCall-net.jini.core.constraint.InvocationConstraints-"><code>newCall</code></a> method can be used to send a
request to the remote object that this object references.
<h4>Distributed Garbage Collection</h4>
The <code>BasicObjectEndpoint</code> class acts as the <i>DGC
client</i> for all of its instances that participate in DGC (which
are called live remote references). That is, it tracks the
existence and reachability of live remote references and makes
<i>dirty calls</i> and <i>clean calls</i> to the associated
server-side DGC implementations, as described below.
<p>The server-side behavior of dirty and clean calls is specified
by <a href="../../../net/jini/jeri/BasicJeriExporter.html" title="class in net.jini.jeri"><code>BasicJeriExporter</code></a>. When the DGC client makes a dirty or
clean call to a given <code>Endpoint</code>, the behavior is
effectively that of using a <code>BasicObjectEndpoint</code>
containing that <code>Endpoint</code> and the object identifier
<code>d32cd1bc-273c-11b2-8841-080020c9e4a1</code> (and that doesn't
itself participate in DGC), wrapped in a <a href="../../../net/jini/jeri/BasicInvocationHandler.html" title="class in net.jini.jeri"><code>BasicInvocationHandler</code></a> with no client or server
constraints, wrapped in an instance of a dynamic proxy class that
implements an interface with the following remote methods:
<pre>
long dirty(Uuid clientID, long sequenceNum, Uuid[] ids)
throws <a href="http://docs.oracle.com/javase/6/docs/api/java/rmi/RemoteException.html?is-external=true" title="class or interface in java.rmi"><code>RemoteException</code></a>;
void clean(Uuid clientID, long sequenceNum, Uuid[] ids, boolean strong)
throws RemoteException;
</pre>
<code>clientID</code> is the DGC client's universally unique
identifier, which is generated using <a href="../../../net/jini/id/UuidFactory.html#generate--"><code>UuidFactory.generate</code></a>. <code>sequenceNum</code> identifies the
sequence number of the dirty or clean call with respect to all
other dirty and clean calls made by the same DGC client (regardless
of the <code>Endpoint</code> that the calls are made to). All
dirty and clean calls made by a DGC client must have a unique
sequence number that monotonically increases with the temporal
order of the states (of reachable live remote references) that the
calls assert. A dirty call asserts that live remote references
with the called <code>Endpoint</code> and each of the object
identifiers in <code>ids</code> exist for the identified DGC
client. A clean call asserts that there are no (longer) live
remote references with the called <code>Endpoint</code> and each of
the object identifiers in <code>ids</code> for the identified DGC
client.
<p>The tracked live remote references are categorized by their
<code>Endpoint</code> and further categorized by their object
identifier (with the <code>Endpoint</code> and object identifier
pair identifying a remote object). When a new live remote
reference is created, either by construction or deserialization, it
is remembered among the live remote references with the same
<code>Endpoint</code> and object identifier, and its reachability
is tracked with a phantom reference. If there is not already a
live remote reference with the same <code>Endpoint</code> and
object identifier, the DGC client makes a dirty call to the
server-side DGC implementation at that <code>Endpoint</code>, with
that object identifier in the <code>ids</code> argument. Dirty
calls for multiple newly created live remote references with the
same <code>Endpoint</code> may be batched as one dirty call (such
as for multiple live remote references deserialized from the same
stream).
<p>Each successful dirty call establishes or renews a lease for the
DGC client with the server-side DGC implementation at the
<code>Endpoint</code> that the dirty call was made to. The
duration of the lease granted by the server is conveyed as the
return value of the dirty call, in milliseconds starting from some
time during the processing of the dirty call. While there are live
remote references with a given <code>Endpoint</code>, the DGC
client attempts to maintain a valid lease with that
<code>Endpoint</code> by renewing its lease with successive dirty
calls. The DGC client should take into consideration network and
processing latencies of the previous dirty call and the next
required dirty call in choosing when to renew a lease. If the DGC
client has reason to assume that its lease with a given
<code>Endpoint</code> might have expired, then in subsequent dirty
calls to that <code>Endpoint</code>, it should include the object
identifiers of all currently reachable live remote references with
that <code>Endpoint</code>. If a dirty call returns a negative
lease duration or throws a <a href="http://docs.oracle.com/javase/6/docs/api/java/rmi/NoSuchObjectException.html?is-external=true" title="class or interface in java.rmi"><code>NoSuchObjectException</code></a>, the DGC
client should refrain from making further dirty calls to the same
<code>Endpoint</code> until a new live remote reference with that
<code>Endpoint</code> is created.
<p>If a dirty call fails with a communication exception other than
a <code>NoSuchObjectException</code>, the DGC client implementation
should make a reasonable effort to retry the dirty call (in a
network-friendly manner). Also, after such a failed dirty call for
a given <code>Endpoint</code> and object identifier, any clean call
that is made for that same <code>Endpoint</code> and object
identifier within a reasonable amount of time should pass
<code>true</code> for the <code>strong</code> argument, in case the
failed dirty call does eventually get delivered to the server after
such a clean call has been processed.
<p>When the last remaining live remote reference with a given
<code>Endpoint</code> and object identifier is detected to be
phantom reachable, the DGC client makes a clean call to the
server-side DGC implementation at that <code>Endpoint</code>, with
that object identifier in the <code>ids</code> argument. Clean
calls for several object identifiers at the same
<code>Endpoint</code> may be batched as one clean call (such as
when multiple live remote references with the same
<code>Endpoint</code> and different object identifiers are detected
to be phantom reachable at the same time).
<p>If a clean call fails with a communication exception other than
a <code>NoSuchObjectException</code>, the DGC client implementation
should make a reasonable effort to retry the clean call, in a
network-friendly manner, especially while the DGC client's lease
for the <code>Endpoint</code> remains valid (or while dirty calls
for the same <code>Endpoint</code> succeed).</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.0</dd>
<dt><span class="simpleTagLabel">Author:</span></dt>
<dd>Sun Microsystems, Inc.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../serialized-form.html#net.jini.jeri.BasicObjectEndpoint">Serialized Form</a></dd>
</dl>
</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="../../../net/jini/jeri/BasicObjectEndpoint.html#BasicObjectEndpoint-net.jini.jeri.Endpoint-net.jini.id.Uuid-boolean-">BasicObjectEndpoint</a></span>(<a href="../../../net/jini/jeri/Endpoint.html" title="interface in net.jini.jeri">Endpoint</a>&nbsp;ep,
<a href="../../../net/jini/id/Uuid.html" title="class in net.jini.id">Uuid</a>&nbsp;id,
boolean&nbsp;enableDGC)</code>
<div class="block">Creates a new <code>BasicObjectEndpoint</code> to reference a
remote object at the specified <code>Endpoint</code> with the
specified <code>Uuid</code>.</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>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/jeri/BasicObjectEndpoint.html#checkTrustEquivalence-java.lang.Object-">checkTrustEquivalence</a></span>(<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;obj)</code>
<div class="block">Returns <code>true</code> if the specified object (which is not
yet known to be trusted) is equivalent in trust, content, and
function to this known trusted object, and <code>false</code>
otherwise.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/jeri/BasicObjectEndpoint.html#equals-java.lang.Object-">equals</a></span>(<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;obj)</code>
<div class="block">Compares the specified object with this
<code>BasicObjectEndpoint</code> for equality.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code><a href="http://docs.oracle.com/javase/6/docs/api/java/rmi/RemoteException.html?is-external=true" title="class or interface in java.rmi">RemoteException</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/jeri/BasicObjectEndpoint.html#executeCall-net.jini.jeri.OutboundRequest-">executeCall</a></span>(<a href="../../../net/jini/jeri/OutboundRequest.html" title="interface in net.jini.jeri">OutboundRequest</a>&nbsp;call)</code>
<div class="block">Synchronously executes a remote call in progress to the
identified remote object, so that the response can be read.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/jeri/BasicObjectEndpoint.html#getEnableDGC--">getEnableDGC</a></span>()</code>
<div class="block">Returns <code>true</code> if this
<code>BasicObjectEndpoint</code> participates in DGC and
<code>false</code> otherwise.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code><a href="../../../net/jini/jeri/Endpoint.html" title="interface in net.jini.jeri">Endpoint</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/jeri/BasicObjectEndpoint.html#getEndpoint--">getEndpoint</a></span>()</code>
<div class="block">Returns the <code>Endpoint</code> for the referenced remote
object.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code><a href="../../../net/jini/id/Uuid.html" title="class in net.jini.id">Uuid</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/jeri/BasicObjectEndpoint.html#getObjectIdentifier--">getObjectIdentifier</a></span>()</code>
<div class="block">Returns the object identifier for the referenced remote object.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/jeri/BasicObjectEndpoint.html#hashCode--">hashCode</a></span>()</code>
<div class="block">Returns the hash code value for this
<code>BasicObjectEndpoint</code>.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code><a href="../../../net/jini/jeri/OutboundRequestIterator.html" title="interface in net.jini.jeri">OutboundRequestIterator</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/jeri/BasicObjectEndpoint.html#newCall-net.jini.core.constraint.InvocationConstraints-">newCall</a></span>(<a href="../../../net/jini/core/constraint/InvocationConstraints.html" title="class in net.jini.core.constraint">InvocationConstraints</a>&nbsp;constraints)</code>
<div class="block">Returns an <code>OutboundRequestIterator</code> to use to send
a new remote call to the referenced remote object using the
specified constraints.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/jeri/BasicObjectEndpoint.html#toString--">toString</a></span>()</code>
<div class="block">Returns a string representation of this
<code>BasicObjectEndpoint</code>.</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/6/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/6/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/6/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/6/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/6/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/6/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/6/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/6/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/6/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="BasicObjectEndpoint-net.jini.jeri.Endpoint-net.jini.id.Uuid-boolean-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>BasicObjectEndpoint</h4>
<pre>public&nbsp;BasicObjectEndpoint(<a href="../../../net/jini/jeri/Endpoint.html" title="interface in net.jini.jeri">Endpoint</a>&nbsp;ep,
<a href="../../../net/jini/id/Uuid.html" title="class in net.jini.id">Uuid</a>&nbsp;id,
boolean&nbsp;enableDGC)</pre>
<div class="block">Creates a new <code>BasicObjectEndpoint</code> to reference a
remote object at the specified <code>Endpoint</code> with the
specified <code>Uuid</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>ep</code> - the endpoint to send remote call requests for the
remote object to</dd>
<dd><code>id</code> - the object identifier for the remote object</dd>
<dd><code>enableDGC</code> - flag indicating whether or not the
<code>BasicObjectEndpoint</code> participates in DGC</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/NullPointerException.html?is-external=true" title="class or interface in java.lang">NullPointerException</a></code> - if <code>e</code> or
<code>id</code> is <code>null</code></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="newCall-net.jini.core.constraint.InvocationConstraints-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>newCall</h4>
<pre>public&nbsp;<a href="../../../net/jini/jeri/OutboundRequestIterator.html" title="interface in net.jini.jeri">OutboundRequestIterator</a>&nbsp;newCall(<a href="../../../net/jini/core/constraint/InvocationConstraints.html" title="class in net.jini.core.constraint">InvocationConstraints</a>&nbsp;constraints)</pre>
<div class="block">Returns an <code>OutboundRequestIterator</code> to use to send
a new remote call to the referenced remote object using the
specified constraints.
<p>The constraints must be the complete, absolute constraints
for the remote call, combining any client and server
constraints for the remote method being invoked, with no
relative time constraints.
<p>For each <a href="../../../net/jini/jeri/OutboundRequest.html" title="interface in net.jini.jeri"><code>OutboundRequest</code></a> produced by the returned
<code>OutboundRequestIterator</code>, after writing the request
data and before reading any response data, <a href="../../../net/jini/jeri/ObjectEndpoint.html#executeCall-net.jini.jeri.OutboundRequest-"><code>executeCall</code></a> must be invoked to execute the call.
<p>This method first invokes <a href="../../../net/jini/jeri/Endpoint.html#newRequest-net.jini.core.constraint.InvocationConstraints-"><code>newRequest</code></a> on this <code>BasicObjectEndpoint</code>'s
contained <code>Endpoint</code> with the specified constraints
to obtain an <code>OutboundRequestIterator</code>. It then
wraps the obtained iterator in another
<code>OutboundRequestIterator</code> and returns the wrapped
iterator.
<p>The methods of the returned
<code>OutboundRequestIterator</code> behave as follows:
<p><a href="../../../net/jini/jeri/OutboundRequestIterator.html#hasNext--"><code>boolean hasNext()</code></a>:
<blockquote>
<p>Returns <code>true</code> if this iterator supports making
at least one more attempt to communicate the remote call, and
<code>false</code> otherwise.
<p>This method invokes <code>hasNext</code> on the underlying
iterator and returns the result.
<p>The security context in which this method is invoked may be
used for subsequent verification of security permissions; see
the <a href="../../../net/jini/jeri/OutboundRequestIterator.html#next--"><code>next</code></a> method
specification for more details.
</blockquote>
<p><a href="../../../net/jini/jeri/OutboundRequestIterator.html#next--"><code>OutboundRequest next()</code></a>:
<blockquote>
<p>Initiates an attempt to communicate the remote call to the
referenced remote object.
<p>This method invokes <code>next</code> on the underlying
iterator to obtain an <code>OutboundRequest</code>. Then it
writes the object identifier of the
<code>BasicObjectEndpoint</code> that produced this iterator to
the request's output stream by invoking <a href="../../../net/jini/id/Uuid.html#write-java.io.OutputStream-"><code>Uuid.write(OutputStream)</code></a> with the
request output stream, and then it returns the request.
<p>Throws <a href="http://docs.oracle.com/javase/6/docs/api/java/util/NoSuchElementException.html?is-external=true" title="class or interface in java.util"><code>NoSuchElementException</code></a> if this iterator does
not support making another attempt to communicate the remote
call (that is, if <code>hasNext</code> would return
<code>false</code>).
<p>Throws <a href="http://docs.oracle.com/javase/6/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io"><code>IOException</code></a> if an <code>IOException</code> is
thrown by the invocation of <code>next</code> on the underlying
iterator or by the subsequent I/O operations.
<p>Throws <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/SecurityException.html?is-external=true" title="class or interface in java.lang"><code>SecurityException</code></a> if a
<code>SecurityException</code> is thrown by the invocation of
<code>next</code> on the underlying iterator or by the
subsequent I/O operations.
</blockquote></div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../net/jini/jeri/ObjectEndpoint.html#newCall-net.jini.core.constraint.InvocationConstraints-">newCall</a></code>&nbsp;in interface&nbsp;<code><a href="../../../net/jini/jeri/ObjectEndpoint.html" title="interface in net.jini.jeri">ObjectEndpoint</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>constraints</code> - the complete, absolute constraints</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>an <code>OutboundRequestIterator</code> to use to send
a new remote call to the referenced remote object</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/NullPointerException.html?is-external=true" title="class or interface in java.lang">NullPointerException</a></code> - if <code>constraints</code> is
<code>null</code></dd>
</dl>
</li>
</ul>
<a name="executeCall-net.jini.jeri.OutboundRequest-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>executeCall</h4>
<pre>public&nbsp;<a href="http://docs.oracle.com/javase/6/docs/api/java/rmi/RemoteException.html?is-external=true" title="class or interface in java.rmi">RemoteException</a>&nbsp;executeCall(<a href="../../../net/jini/jeri/OutboundRequest.html" title="interface in net.jini.jeri">OutboundRequest</a>&nbsp;call)
throws <a href="http://docs.oracle.com/javase/6/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Synchronously executes a remote call in progress to the
identified remote object, so that the response can be read.
<p>This method should be passed an <code>OutboundRequest</code>
that was produced by an <code>OutboundRequestIterator</code>
returned from this object's <a href="../../../net/jini/jeri/ObjectEndpoint.html#newCall-net.jini.core.constraint.InvocationConstraints-"><code>newCall</code></a> method.
This method must be invoked after writing the request data to
and before reading any response data from the
<code>OutboundRequest</code>.
<p>If the remote call was successfully executed (such that the
response data may now be read) this method returns
<code>null</code>. This method returns a non-<code>null</code>
<code>RemoteException</code> to indicate a
<code>RemoteException</code> that the remote call should fail
with. For example, if the referenced object does not exist at
the remote endpoint, a <a href="http://docs.oracle.com/javase/6/docs/api/java/rmi/NoSuchObjectException.html?is-external=true" title="class or interface in java.rmi"><code>NoSuchObjectException</code></a> will be
returned. This method throws an <code>IOException</code> for
other communication failures.
<p>This method reads a byte from the response input stream of
<code>call</code>. If an <a href="http://docs.oracle.com/javase/6/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io"><code>IOException</code></a> is thrown reading
the byte, that exception is thrown to the caller. If reading
the byte otherwise indicates EOF, an <a href="http://docs.oracle.com/javase/6/docs/api/java/io/EOFException.html?is-external=true" title="class or interface in java.io"><code>EOFException</code></a> is
thrown to the caller. If the byte is <code>0x00</code>, then
this method returns a <a href="http://docs.oracle.com/javase/6/docs/api/java/rmi/NoSuchObjectException.html?is-external=true" title="class or interface in java.rmi"><code>NoSuchObjectException</code></a> indicating
that there is no remote object exported with the object
identifier at the remote endpoint. If the byte is
<code>0x01</code>, then this method returns <code>null</code>,
indicating that a remote object corresponding to the object
identifier and endpoint is exported, and thus the caller may
proceed to read the response of the remote call. If the byte
is any other value, this method returns an <a href="http://docs.oracle.com/javase/6/docs/api/java/rmi/UnmarshalException.html?is-external=true" title="class or interface in java.rmi"><code>UnmarshalException</code></a> indicating that a protocol error occurred.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../net/jini/jeri/ObjectEndpoint.html#executeCall-net.jini.jeri.OutboundRequest-">executeCall</a></code>&nbsp;in interface&nbsp;<code><a href="../../../net/jini/jeri/ObjectEndpoint.html" title="interface in net.jini.jeri">ObjectEndpoint</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>call</code> - the remote call to execute, produced by an
<code>OutboundRequestIterator</code> that was returned from
<code>newCall</code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd><code>null</code> on success, or a
<code>RemoteException</code> if the remote call should fail
with that <code>RemoteException</code></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/NullPointerException.html?is-external=true" title="class or interface in java.lang">NullPointerException</a></code> - if <code>call</code> is
<code>null</code></dd>
<dd><code><a href="http://docs.oracle.com/javase/6/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - if an I/O exception occurs while performing
this operation</dd>
</dl>
</li>
</ul>
<a name="getEndpoint--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getEndpoint</h4>
<pre>public&nbsp;<a href="../../../net/jini/jeri/Endpoint.html" title="interface in net.jini.jeri">Endpoint</a>&nbsp;getEndpoint()</pre>
<div class="block">Returns the <code>Endpoint</code> for the referenced remote
object.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the <code>Endpoint</code> for the referenced remote
object</dd>
</dl>
</li>
</ul>
<a name="getObjectIdentifier--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getObjectIdentifier</h4>
<pre>public&nbsp;<a href="../../../net/jini/id/Uuid.html" title="class in net.jini.id">Uuid</a>&nbsp;getObjectIdentifier()</pre>
<div class="block">Returns the object identifier for the referenced remote object.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the object identifier for the referenced remote object</dd>
</dl>
</li>
</ul>
<a name="getEnableDGC--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getEnableDGC</h4>
<pre>public&nbsp;boolean&nbsp;getEnableDGC()</pre>
<div class="block">Returns <code>true</code> if this
<code>BasicObjectEndpoint</code> participates in DGC and
<code>false</code> otherwise.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd><code>true</code> if this
<code>BasicObjectEndpoint</code> participates in DGC and
<code>false</code> otherwise</dd>
</dl>
</li>
</ul>
<a name="hashCode--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hashCode</h4>
<pre>public&nbsp;int&nbsp;hashCode()</pre>
<div class="block">Returns the hash code value for this
<code>BasicObjectEndpoint</code>.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the hash code value for this
<code>BasicObjectEndpoint</code></dd>
</dl>
</li>
</ul>
<a name="equals-java.lang.Object-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>equals</h4>
<pre>public&nbsp;boolean&nbsp;equals(<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;obj)</pre>
<div class="block">Compares the specified object with this
<code>BasicObjectEndpoint</code> for equality.
<p>This method returns <code>true</code> if and only if
<ul>
<li>the specified object is also a
<code>BasicObjectEndpoint</code>,
<li>the object identifier and <code>enableDGC</code> flag in
the specified object are equal to the ones in this object, and
<li>the <code>Endpoint</code> in the specified object has
the same class and is equal to the one in this object.
</ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a></code>&nbsp;in class&nbsp;<code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>obj</code> - the object to compare with</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd><code>true</code> if <code>obj</code> is equivalent to
this object; <code>false</code> otherwise</dd>
</dl>
</li>
</ul>
<a name="checkTrustEquivalence-java.lang.Object-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>checkTrustEquivalence</h4>
<pre>public&nbsp;boolean&nbsp;checkTrustEquivalence(<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;obj)</pre>
<div class="block">Returns <code>true</code> if the specified object (which is not
yet known to be trusted) is equivalent in trust, content, and
function to this known trusted object, and <code>false</code>
otherwise.
<p>This method returns <code>true</code> if and only if
<ul>
<li>the specified object is also a
<code>BasicObjectEndpoint</code>,
<li>the object identifier and <code>enableDGC</code> flag in
the specified object are equal to the ones in this object, and
<li>this object's <code>Endpoint</code> is an instance of
<a href="../../../net/jini/security/proxytrust/TrustEquivalence.html" title="interface in net.jini.security.proxytrust"><code>TrustEquivalence</code></a> and invoking its
<code>checkTrustEquivalence</code> method with the specified
object's <code>Endpoint</code> returns <code>true</code>.
</ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../net/jini/security/proxytrust/TrustEquivalence.html#checkTrustEquivalence-java.lang.Object-">checkTrustEquivalence</a></code>&nbsp;in interface&nbsp;<code><a href="../../../net/jini/security/proxytrust/TrustEquivalence.html" title="interface in net.jini.security.proxytrust">TrustEquivalence</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>obj</code> - object to check that is not yet known to be trusted</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd><code>true</code> if the specified object (that is not yet
known to be trusted) is equivalent in trust, content, and function to
this known trusted object, and returns <code>false</code> otherwise</dd>
</dl>
</li>
</ul>
<a name="toString--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>toString</h4>
<pre>public&nbsp;<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;toString()</pre>
<div class="block">Returns a string representation of this
<code>BasicObjectEndpoint</code>.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a></code>&nbsp;in class&nbsp;<code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a string representation of this
<code>BasicObjectEndpoint</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/BasicObjectEndpoint.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="../../../net/jini/jeri/BasicJeriTrustVerifier.html" title="class in net.jini.jeri"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../net/jini/jeri/Endpoint.html" title="interface in net.jini.jeri"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?net/jini/jeri/BasicObjectEndpoint.html" target="_top">Frames</a></li>
<li><a href="BasicObjectEndpoint.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 ======= -->
</body>
</html>