<!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_101) on Mon Sep 19 17:06:21 EDT 2022 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Index (jUDDI Example Simple Browse 3.3.11-SNAPSHOT API)</title>
<meta name="date" content="2022-09-19">
<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="Index (jUDDI Example Simple Browse 3.3.11-SNAPSHOT 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="org/apache/juddi/example/browse/package-summary.html">Package</a></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 class="navBarCell1Rev">Index</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?index-all.html" target="_top">Frames</a></li>
<li><a href="index-all.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>
<a name="skip.navbar.top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<div class="contentContainer"><a href="#I:B">B</a>&nbsp;<a href="#I:M">M</a>&nbsp;<a href="#I:O">O</a>&nbsp;<a href="#I:S">S</a>&nbsp;<a name="I:B">
<!--   -->
</a>
<h2 class="title">B</h2>
<dl>
<dt><span class="memberNameLink"><a href="org/apache/juddi/example/browse/SimpleBrowse.html#Browse-java.lang.String:A-">Browse(String[])</a></span> - Method in class org.apache.juddi.example.browse.<a href="org/apache/juddi/example/browse/SimpleBrowse.html" title="class in org.apache.juddi.example.browse">SimpleBrowse</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="org/apache/juddi/example/browse/SimpleBrowse.html#Browse-java.lang.String:A-">Browse(String[])</a></span> - Method in class org.apache.juddi.example.browse.<a href="org/apache/juddi/example/browse/SimpleBrowse.html" title="class in org.apache.juddi.example.browse">SimpleBrowse</a></dt>
<dd>&nbsp;</dd>
</dl>
<a name="I:M">
<!--   -->
</a>
<h2 class="title">M</h2>
<dl>
<dt><span class="memberNameLink"><a href="org/apache/juddi/example/browse/SimpleBrowse.html#main-java.lang.String:A-">main(String[])</a></span> - Static method in class org.apache.juddi.example.browse.<a href="org/apache/juddi/example/browse/SimpleBrowse.html" title="class in org.apache.juddi.example.browse">SimpleBrowse</a></dt>
<dd>
<div class="block">Main entry point</div>
</dd>
<dt><span class="memberNameLink"><a href="org/apache/juddi/example/browse/SimpleBrowse.html#main-java.lang.String:A-">main(String[])</a></span> - Static method in class org.apache.juddi.example.browse.<a href="org/apache/juddi/example/browse/SimpleBrowse.html" title="class in org.apache.juddi.example.browse">SimpleBrowse</a></dt>
<dd>
<div class="block">Main entry point</div>
</dd>
</dl>
<a name="I:O">
<!--   -->
</a>
<h2 class="title">O</h2>
<dl>
<dt><a href="org/apache/juddi/example/browse/package-summary.html">org.apache.juddi.example.browse</a> - package org.apache.juddi.example.browse</dt>
<dd>&nbsp;</dd>
</dl>
<a name="I:S">
<!--   -->
</a>
<h2 class="title">S</h2>
<dl>
<dt><a href="org/apache/juddi/example/browse/SimpleBrowse.html" title="class in org.apache.juddi.example.browse"><span class="typeNameLink">SimpleBrowse</span></a> - Class in <a href="org/apache/juddi/example/browse/package-summary.html">org.apache.juddi.example.browse</a></dt>
<dd>
<div class="block">A Simple UDDI Browser that dumps basic information to console</div>
</dd>
<dt><a href="org/apache/juddi/example/browse/SimpleBrowse.html" title="class in org.apache.juddi.example.browse"><span class="typeNameLink">SimpleBrowse</span></a> - Class in <a href="org/apache/juddi/example/browse/package-summary.html">org.apache.juddi.example.browse</a></dt>
<dd>
<div class="block">A Simple UDDI Browser that dumps basic information to console</div>
</dd>
<dt><span class="memberNameLink"><a href="org/apache/juddi/example/browse/SimpleBrowse.html#SimpleBrowse--">SimpleBrowse()</a></span> - Constructor for class org.apache.juddi.example.browse.<a href="org/apache/juddi/example/browse/SimpleBrowse.html" title="class in org.apache.juddi.example.browse">SimpleBrowse</a></dt>
<dd>
<div class="block">This sets up the ws proxies using uddi.xml in META-INF</div>
</dd>
<dt><span class="memberNameLink"><a href="org/apache/juddi/example/browse/SimpleBrowse.html#SimpleBrowse--">SimpleBrowse()</a></span> - Constructor for class org.apache.juddi.example.browse.<a href="org/apache/juddi/example/browse/SimpleBrowse.html" title="class in org.apache.juddi.example.browse">SimpleBrowse</a></dt>
<dd>
<div class="block">This sets up the ws proxies using uddi.xml in META-INF</div>
</dd>
</dl>
<a href="#I:B">B</a>&nbsp;<a href="#I:M">M</a>&nbsp;<a href="#I:O">O</a>&nbsp;<a href="#I:S">S</a>&nbsp;</div>
<!-- ======= 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="org/apache/juddi/example/browse/package-summary.html">Package</a></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 class="navBarCell1Rev">Index</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?index-all.html" target="_top">Frames</a></li>
<li><a href="index-all.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>
<a name="skip.navbar.bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright &#169; 2004&#x2013;2022 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</body>
</html>
