<!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.7.0_251) on Sat May 02 18:30:03 PDT 2020 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Serialized Form (Trafodion Database Connectivity Services 2.4.0 API)</title>
<meta name="date" content="2020-05-02">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="Serialized Form (Trafodion Database Connectivity Services 2.4.0 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><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>Package</li>
<li>Class</li>
<li>Use</li>
<li><a href="overview-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>Prev</li>
<li>Next</li>
</ul>
<ul class="navList">
<li><a href="index.html?serialized-form.html" target="_top">Frames</a></li>
<li><a href="serialized-form.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>
<a name="skip-navbar_top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<div class="header">
<h1 title="Serialized Form" class="title">Serialized Form</h1>
</div>
<div class="serializedFormContainer">
<ul class="blockList">
<li class="blockList">
<h2 title="Package">Package&nbsp;org.trafodion.dcs.http</h2>
<ul class="blockList">
<li class="blockList"><a name="org.trafodion.dcs.http.HttpServer.StackServlet">
<!--   -->
</a>
<h3>Class <a href="org/trafodion/dcs/http/HttpServer.StackServlet.html" title="class in org.trafodion.dcs.http">org.trafodion.dcs.http.HttpServer.StackServlet</a> extends javax.servlet.http.HttpServlet implements Serializable</h3>
<dl class="nameValue">
<dt>serialVersionUID:</dt>
<dd>-6284183679759467039L</dd>
</dl>
</li>
</ul>
</li>
<li class="blockList">
<h2 title="Package">Package&nbsp;org.trafodion.dcs.master</h2>
<ul class="blockList">
<li class="blockList"><a name="org.trafodion.dcs.master.MasterStatusServlet">
<!--   -->
</a>
<h3>Class <a href="org/trafodion/dcs/master/MasterStatusServlet.html" title="class in org.trafodion.dcs.master">org.trafodion.dcs.master.MasterStatusServlet</a> extends javax.servlet.http.HttpServlet implements Serializable</h3>
<dl class="nameValue">
<dt>serialVersionUID:</dt>
<dd>1L</dd>
</dl>
</li>
</ul>
</li>
<li class="blockList">
<h2 title="Package">Package&nbsp;org.trafodion.dcs.server</h2>
<ul class="blockList">
<li class="blockList"><a name="org.trafodion.dcs.server.ServerStatusServlet">
<!--   -->
</a>
<h3>Class <a href="org/trafodion/dcs/server/ServerStatusServlet.html" title="class in org.trafodion.dcs.server">org.trafodion.dcs.server.ServerStatusServlet</a> extends javax.servlet.http.HttpServlet implements Serializable</h3>
<dl class="nameValue">
<dt>serialVersionUID:</dt>
<dd>1L</dd>
</dl>
</li>
</ul>
</li>
<li class="blockList">
<h2 title="Package">Package&nbsp;org.trafodion.dcs.servermt</h2>
<ul class="blockList">
<li class="blockList"><a name="org.trafodion.dcs.servermt.ServerStatusServlet">
<!--   -->
</a>
<h3>Class <a href="org/trafodion/dcs/servermt/ServerStatusServlet.html" title="class in org.trafodion.dcs.servermt">org.trafodion.dcs.servermt.ServerStatusServlet</a> extends javax.servlet.http.HttpServlet implements Serializable</h3>
<dl class="nameValue">
<dt>serialVersionUID:</dt>
<dd>1L</dd>
</dl>
</li>
</ul>
</li>
</ul>
</div>
<!-- ======= 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>Package</li>
<li>Class</li>
<li>Use</li>
<li><a href="overview-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>Prev</li>
<li>Next</li>
</ul>
<ul class="navList">
<li><a href="index.html?serialized-form.html" target="_top">Frames</a></li>
<li><a href="serialized-form.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>
<a name="skip-navbar_bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright &#169; 2020. All rights reserved.</small></p>
</body>
</html>
