stasis/je-7.5.11/docs/java/com/sleepycat/je/OperationFailureException.html

405 lines
24 KiB
HTML
Raw Normal View History

2019-06-25 20:12:40 +00:00
<!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_151) on Tue Oct 31 17:36:45 EDT 2017 -->
<title>OperationFailureException (Oracle - Berkeley DB Java Edition API)</title>
<meta name="date" content="2017-10-31">
<link rel="stylesheet" type="text/css" href="../../../style.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="OperationFailureException (Oracle - Berkeley DB Java Edition API)";
}
}
catch(err) {
}
//-->
</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/OperationFailureException.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 class="aboutLanguage"><b>Berkeley DB Java Edition</b><br><font size=\"-1\"> version 7.5.11</font>
</div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../com/sleepycat/je/LogWriteException.html" title="class in com.sleepycat.je"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../com/sleepycat/je/OperationResult.html" title="class in com.sleepycat.je"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?com/sleepycat/je/OperationFailureException.html" target="_top">Frames</a></li>
<li><a href="OperationFailureException.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="#methods.inherited.from.class.com.sleepycat.je.DatabaseException">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li>Method</li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">com.sleepycat.je</div>
<h2 title="Class OperationFailureException" class="title">Class OperationFailureException</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>java.lang.Throwable</li>
<li>
<ul class="inheritance">
<li>java.lang.Exception</li>
<li>
<ul class="inheritance">
<li>java.lang.RuntimeException</li>
<li>
<ul class="inheritance">
<li><a href="../../../com/sleepycat/je/DatabaseException.html" title="class in com.sleepycat.je">com.sleepycat.je.DatabaseException</a></li>
<li>
<ul class="inheritance">
<li>com.sleepycat.je.OperationFailureException</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd>java.io.Serializable</dd>
</dl>
<dl>
<dt>Direct Known Subclasses:</dt>
<dd><a href="../../../com/sleepycat/je/DatabaseExistsException.html" title="class in com.sleepycat.je">DatabaseExistsException</a>, <a href="../../../com/sleepycat/je/DatabaseNotFoundException.html" title="class in com.sleepycat.je">DatabaseNotFoundException</a>, <a href="../../../com/sleepycat/je/rep/DatabasePreemptedException.html" title="class in com.sleepycat.je.rep">DatabasePreemptedException</a>, <a href="../../../com/sleepycat/persist/evolve/DeletedClassException.html" title="class in com.sleepycat.persist.evolve">DeletedClassException</a>, <a href="../../../com/sleepycat/je/DiskLimitException.html" title="class in com.sleepycat.je">DiskLimitException</a>, <a href="../../../com/sleepycat/je/DiskOrderedCursorProducerException.html" title="class in com.sleepycat.je">DiskOrderedCursorProducerException</a>, <a href="../../../com/sleepycat/je/DuplicateDataException.html" title="class in com.sleepycat.je">DuplicateDataException</a>, <a href="../../../com/sleepycat/persist/evolve/IncompatibleClassException.html" title="class in com.sleepycat.persist.evolve">IncompatibleClassException</a>, <a href="../../../com/sleepycat/persist/IndexNotAvailableException.html" title="class in com.sleepycat.persist">IndexNotAvailableException</a>, <a href="../../../com/sleepycat/je/rep/InsufficientAcksException.html" title="class in com.sleepycat.je.rep">InsufficientAcksException</a>, <a href="../../../com/sleepycat/je/rep/InsufficientReplicasException.html" title="class in com.sleepycat.je.rep">InsufficientReplicasException</a>, <a href="../../../com/sleepycat/je/LockConflictException.html" title="class in com.sleepycat.je">LockConflictException</a>, <a href="../../../com/sleepycat/je/rep/LogOverwriteException.html" title="class in com.sleepycat.je.rep">LogOverwriteException</a>, <a href="../../../com/sleepycat/je/rep/MasterTransferFailureException.html" title="class in com.sleepycat.je.rep">MasterTransferFailureException</a>, <a href="../../../com/sleepycat/je/rep/MemberNotFoundException.html" title="class in com.sleepycat.je.rep">MemberNotFoundException</a>, <a href="../../../com/sleepycat/je/rep/ReplicaConsistencyException.html" title="class in com.sleepycat.je.rep">ReplicaConsistencyException</a>, <a href="../../../com/sleepycat/je/SecondaryReferenceException.html" title="class in com.sleepycat.je">SecondaryReferenceException</a>, <a href="../../../com/sleepycat/je/SequenceExistsException.html" title="class in com.sleepycat.je">SequenceExistsException</a>, <a href="../../../com/sleepycat/je/SequenceIntegrityException.html" title="class in com.sleepycat.je">SequenceIntegrityException</a>, <a href="../../../com/sleepycat/je/SequenceNotFoundException.html" title="class in com.sleepycat.je">SequenceNotFoundException</a>, <a href="../../../com/sleepycat/je/SequenceOverflowException.html" title="class in com.sleepycat.je">SequenceOverflowException</a>, <a href="../../../com/sleepycat/je/rep/StateChangeException.html" title="class in com.sleepycat.je.rep">StateChangeException</a>, <a href="../../../com/sleepycat/persist/StoreExistsException.html" title="class in com.sleepycat.persist">StoreExistsException</a>, <a href="../../../com/sleepycat/persist/StoreNotFoundException.html" title="class in com.sleepycat.persist">StoreNotFoundException</a>, <a href="../../../com/sleepycat/je/XAFailureException.html" title="class in com.sleepycat.je">XAFailureException</a></dd>
</dl>
<hr>
<br>
<pre>public abstract class <span class="typeNameLabel">OperationFailureException</span>
extends <a href="../../../com/sleepycat/je/DatabaseException.html" title="class in com.sleepycat.je">DatabaseException</a></pre>
<div class="block">Indicates that a failure has occurred that impacts the current operation
and/or transaction. For failures that impact the environment as a whole,
see <a href="../../../com/sleepycat/je/EnvironmentFailureException.html" title="class in com.sleepycat.je"><code>EnvironmentFailureException</code></a>. For an overview of all exceptions
thrown by JE, see <a href="../../../com/sleepycat/je/DatabaseException.html" title="class in com.sleepycat.je"><code>DatabaseException</code></a>.
<p>If an explicit transaction applies to a method which threw this
exception, the exception may indicate that <a href="../../../com/sleepycat/je/Transaction.html#abort--"><code>Transaction.abort()</code></a> must be
called, depending on the nature of the failure. A transaction is applicable
to a method call in two cases.</p>
<ol>
<li>When an explicit (non-null) <code>Transaction</code> instance is specified.
This applies when the <code>Transaction</code> is passed as a parameter to the
method that throws the exception, or when the <code>Transaction</code> is passed
to <a href="../../../com/sleepycat/je/Database.html#openCursor-com.sleepycat.je.Transaction-com.sleepycat.je.CursorConfig-"><code>Database.openCursor(com.sleepycat.je.Transaction, com.sleepycat.je.CursorConfig)</code></a> and a <code>Cursor</code> method throws the
exception.
</li>
<li>When a per-thread <code>Transaction</code> applies to the method that throws
the exception. Per-thread transactions apply when using <a href="../../../com/sleepycat/collections/package-summary.html"><code>persistent collections</code></a> with <a href="../../../com/sleepycat/collections/CurrentTransaction.html" title="class in com.sleepycat.collections"><code>CurrentTransaction</code></a> or <a href="../../../com/sleepycat/collections/TransactionRunner.html" title="class in com.sleepycat.collections"><code>TransactionRunner</code></a>, or when using XA transactions
with <a href="../../../com/sleepycat/je/XAEnvironment.html" title="class in com.sleepycat.je"><code>XAEnvironment</code></a>.
</li>
</ol>
<p>When a transaction is applicable to a method call, the application should
catch <code>OperationFailureException</code> and then call <a href="../../../com/sleepycat/je/Transaction.html#isValid--"><code>Transaction.isValid()</code></a>. If <code>false</code> is returned, all <code>Cursor</code>
instances that were created with the transaction must be closed and then
<a href="../../../com/sleepycat/je/Transaction.html#abort--"><code>Transaction.abort()</code></a> must be called. Also note that <a href="../../../com/sleepycat/je/Transaction.html#isValid--"><code>Transaction.isValid()</code></a> may be called at any time, not just during exception
handling.</p>
<p>The use of the <a href="../../../com/sleepycat/je/Transaction.html#isValid--"><code>Transaction.isValid()</code></a> method allows JE to determine
dynamically whether the failure requires an abort or not, and allows for
this determination to change in future releases. Over time, internal
improvements to error handling may allow more error conditions to be handled
without invalidating the <code>Transaction</code>.</p>
<p>The specific handling that is necessary for an <code>OperationFailureException</code> depends on the specific subclass thrown. See the
javadoc for each method for information on which methods throw which <code>OperationFailureException</code>s and why.</p>
<p>If <a href="../../../com/sleepycat/je/Transaction.html#abort--"><code>Transaction.abort()</code></a> is not called after an <code>OperationFailureException</code> invalidates the <code>Transaction</code>, all
subsequent method calls using the <code>Transaction</code> will throw the same
exception. This provides more than one opportunity to catch and handle the
specific exception subclass that caused the failure.</p>
<p><code>OperationFailureException</code> is also thrown by methods where no
transaction applies. In most cases the action required to handle the
exception is the same as with a transaction, although of course no abort is
necessary.</p>
<p>However, please be aware that for some operations on a non-transactional
<code>Database</code> or <code>EntityStore</code>, an <code>OperationFailureException</code> may cause data corruption. For example, see
<a href="../../../com/sleepycat/je/SecondaryReferenceException.html" title="class in com.sleepycat.je"><code>SecondaryReferenceException</code></a>.</p>
<p>There are two groups of operation failure subclasses worth noting since
they apply to many methods: read operation failures and write operation
failures. These are described below.</p>
<a name="readFailures"><h3>Read Operation Failures</h3></a>
<p>Read operations are all those performed by the <code>get</code> family of
methods, for example, <a href="../../../com/sleepycat/je/Database.html#get-com.sleepycat.je.Transaction-com.sleepycat.je.DatabaseEntry-com.sleepycat.je.DatabaseEntry-com.sleepycat.je.Get-com.sleepycat.je.ReadOptions-"><code>Database.get</code></a>, <a href="../../../com/sleepycat/je/Cursor.html#getNext-com.sleepycat.je.DatabaseEntry-com.sleepycat.je.DatabaseEntry-com.sleepycat.je.LockMode-"><code>Cursor.getNext</code></a>, <a href="../../../com/sleepycat/persist/EntityIndex.html#get-K-"><code>EntityIndex.get</code></a>, <a href="../../../com/sleepycat/persist/EntityCursor.html#next--"><code>EntityCursor.next</code></a>, <a href="../../../com/sleepycat/collections/StoredMap.html#get-java.lang.Object-"><code>StoredMap.get</code></a>, and <a href="../../../com/sleepycat/je/ForwardCursor.html#getNext-com.sleepycat.je.DatabaseEntry-com.sleepycat.je.DatabaseEntry-com.sleepycat.je.LockMode-"><code>ForwardCursor.getNext</code></a>.
These methods may cause the following operation
failures.</p>
<ul>
<li><a href="../../../com/sleepycat/je/OperationFailureException.html" title="class in com.sleepycat.je"><code>OperationFailureException</code></a> is the superclass of all read
operation failures.</li>
<ul>
<li><a href="../../../com/sleepycat/je/LockConflictException.html" title="class in com.sleepycat.je"><code>LockConflictException</code></a> is thrown if a lock conflict prevents
the operation from completing. A read operation may be blocked by another
locker (transaction or non-transactional cursor) that holds a write lock
on the record.</li>
<ul>
<li><a href="../../../com/sleepycat/je/rep/LockPreemptedException.html" title="class in com.sleepycat.je.rep"><code>LockPreemptedException</code></a> is a subclass
of <code>LockConflictException</code> that is thrown in a replicated
environment on the Replica node, when the Master node has changed a
record that was previously locked by the reading transaction or
cursor.</li>
</ul>
<li><a href="../../../com/sleepycat/je/SecondaryIntegrityException.html" title="class in com.sleepycat.je"><code>SecondaryIntegrityException</code></a> is thrown if a primary-secondary
relationship integrity problem is detected while reading a primary
database record via a secondary index.</li>
<li><a href="../../../com/sleepycat/je/rep/DatabasePreemptedException.html" title="class in com.sleepycat.je.rep"><code>DatabasePreemptedException</code></a> is thrown in a
replicated environment on the Replica node, when the Master node has
truncated, removed or renamed the database.</li>
<li>Other <a href="../../../com/sleepycat/je/OperationFailureException.html" title="class in com.sleepycat.je"><code>OperationFailureException</code></a> subclasses may be thrown if
such an exception was thrown earlier and caused the transaction to be
invalidated.</li>
</ul>
</ul>
<a name="writeFailures"><h3>Write Operation Failures</h3></a>
<p>Write operations are all those performed by the <code>put</code> and <code>delete</code> families of methods, for example, <a href="../../../com/sleepycat/je/Database.html#put-com.sleepycat.je.Transaction-com.sleepycat.je.DatabaseEntry-com.sleepycat.je.DatabaseEntry-com.sleepycat.je.Put-com.sleepycat.je.WriteOptions-"><code>Database.put</code></a>,
<a href="../../../com/sleepycat/je/Cursor.html#delete-com.sleepycat.je.WriteOptions-"><code>Cursor.delete</code></a>, <a href="../../../com/sleepycat/persist/PrimaryIndex.html#put-E-"><code>PrimaryIndex.put</code></a>, <a href="../../../com/sleepycat/persist/EntityCursor.html#delete--"><code>EntityCursor.delete</code></a> and <a href="../../../com/sleepycat/collections/StoredMap.html#put-K-V-"><code>StoredMap.put</code></a>. These methods may
cause the following operation failures, although certain failures are only
caused by <code>put</code> methods and others only by <code>delete</code> methods, as
noted below.</p>
<ul>
<li><a href="../../../com/sleepycat/je/OperationFailureException.html" title="class in com.sleepycat.je"><code>OperationFailureException</code></a> is the superclass of all write
operation failures.</li>
<ul>
<li><a href="../../../com/sleepycat/je/LockConflictException.html" title="class in com.sleepycat.je"><code>LockConflictException</code></a> is thrown if a lock conflict prevents
the operation from completing. A write operation may be blocked by
another locker (transaction or non-transactional cursor) that holds a read
or write lock on the record.</li>
<li><a href="../../../com/sleepycat/je/DiskLimitException.html" title="class in com.sleepycat.je"><code>DiskLimitException</code></a> is thrown if a disk limit has been
violated and this prevents the operation from completing.</p>
<li><a href="../../../com/sleepycat/je/SecondaryConstraintException.html" title="class in com.sleepycat.je"><code>SecondaryConstraintException</code></a> is the superclass of all
exceptions thrown when a write operation fails because of a secondary
constraint.</li>
<ul>
<li><a href="../../../com/sleepycat/je/ForeignConstraintException.html" title="class in com.sleepycat.je"><code>ForeignConstraintException</code></a> is thrown when an attempt to
write a primary database record would insert a secondary record with a
key that does not exist in a foreign key database, when the secondary
key is configured as a foreign key. This exception is only thrown by
<code>put</code> methods.</li>
<li><a href="../../../com/sleepycat/je/UniqueConstraintException.html" title="class in com.sleepycat.je"><code>UniqueConstraintException</code></a> is thrown when an attempt to write
a primary database record would insert a secondary record with a
duplicate key, for secondaries that represent one-to-one and one-to-many
relationships. This exception is only thrown by <code>put</code>
methods.</li>
<li><a href="../../../com/sleepycat/je/DeleteConstraintException.html" title="class in com.sleepycat.je"><code>DeleteConstraintException</code></a> is thrown when an attempt is made
to delete a key from a foreign key database, when that key is referenced
by a secondary database, and the secondary is configured to cause an
abort in this situation. This exception is only thrown by <code>delete</code> methods.</li>
</ul>
<li><a href="../../../com/sleepycat/je/SecondaryIntegrityException.html" title="class in com.sleepycat.je"><code>SecondaryIntegrityException</code></a> is thrown if a primary-secondary
relationship integrity problem is detected while writing a record in a
primary database that has one or more secondary indices.
<li><a href="../../../com/sleepycat/je/rep/DatabasePreemptedException.html" title="class in com.sleepycat.je.rep"><code>DatabasePreemptedException</code></a> is thrown in a
replicated environment on a Replica node, when the Master node has
truncated, removed or renamed the database.</li>
<li><a href="../../../com/sleepycat/je/rep/ReplicaWriteException.html" title="class in com.sleepycat.je.rep"><code>ReplicaWriteException</code></a> is always thrown in
a replicated environment on a Replica node, since write operations are not
allowed on a Replica.</li>
<li>Other <a href="../../../com/sleepycat/je/OperationFailureException.html" title="class in com.sleepycat.je"><code>OperationFailureException</code></a> subclasses may be thrown if
such an exception was thrown earlier and caused the transaction to be
invalidated.</li>
</ul>
</ul></div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>4.0</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../serialized-form.html#com.sleepycat.je.OperationFailureException">Serialized Form</a></dd>
</dl>
</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>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.com.sleepycat.je.DatabaseException">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;com.sleepycat.je.<a href="../../../com/sleepycat/je/DatabaseException.html" title="class in com.sleepycat.je">DatabaseException</a></h3>
<code><a href="../../../com/sleepycat/je/DatabaseException.html#getMessage--">getMessage</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Throwable">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Throwable</h3>
<code>addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</code></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/OperationFailureException.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 class="aboutLanguage"><b>Berkeley DB Java Edition</b><br><font size=\"-1\"> version 7.5.11</font>
</div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../com/sleepycat/je/LogWriteException.html" title="class in com.sleepycat.je"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../com/sleepycat/je/OperationResult.html" title="class in com.sleepycat.je"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?com/sleepycat/je/OperationFailureException.html" target="_top">Frames</a></li>
<li><a href="OperationFailureException.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="#methods.inherited.from.class.com.sleepycat.je.DatabaseException">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li>Method</li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small><font size=1>Copyright (c) 2002, 2017 Oracle and/or its affiliates. All rights reserved.</font> </small></p>
</body>
</html>