<!-- 
/*
 * Copyright 2001-2008 The Apache Software Foundation.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
 -->
 <html>
    <head>
        <title>Apache jUDDI Registry</title>
        <style type="text/css">
            body {
  margin:      0px 10px 10px 10px;
  font-family: "Trebuchet MS", sans-serif;
  font-size:   10pt;
  background:  #FFF;
  color:       #000;
}

h1 {
	font-family: "Trebuchet MS", sans-serif;
	background: #00005A;
	font-weight: normal;
	color: White;
	padding: 5px 10px;
	margin: 0px -10px 10px -10px;
}

h2 {
	font-family: "Trebuchet MS", sans-serif;
	color: #00005A;
}

h3 {
	font-family: "Trebuchet MS", sans-serif;
	color: #00005A;
}

h4 {
	font-family: "Trebuchet MS", sans-serif;
	color: #00005A;
}

.sidebar {
	border: 1px solid #00005A;
	background: #EEE;
	padding: 5px;
} 

pre.code_sample {
  background: #EEE;
  padding: 5px;
}

dt {
  font-weight: bold;
}

dl {
  margin-left: 3em;
}

td {
  font-size:   10pt;
}

DIV.announcement dl {
  margin-left: 0px;
}

div.LINK {
  margin: 0px -10px;
  padding: 2px 10px;
  color: #000;
  font-size: 10pt;
}

div.LINK A {
  color: #6d0000;
  text-decoration: none;
}

div.LINK A:hover {
  color: #006200;
  text-decoration: underline;
}

div.NAV {
  background: #000;
  margin: 0px -10px;
  padding: 2px 10px;
  color: #CCC;
  font-size: 12pt;
  font-weight: bold;
}

div.NAV A {
  color: #CCC;
  text-decoration: none;
}

div.NAV A:hover {
  color: #FFF;
}

.msgs {
	background-color: #FFD;
	color: #005500;
}

.ednote {
  color: #999;
  font-style: italic;
}

.cvs_id {
  color: #999;
  font-size: 8pt;
  border-top: solid 1px #999;
}

.author {
  font-size: 14pt;
  font-style: italic;
}

var {
  font-style: italic;
  color: #900;
}

div.footer { 
  color: #666699; margin: 0px -10px; padding: 2px 10px; font-size: 8pt; font-weight: normal; 
}

div.footer a {
  color: #666699; text-decoration: none; 
}

div.footer a:hover { 
  color: #666699; text-decoration: underline; 
}

div.header { 
  background: #000;
  margin: 0px -10px;
  padding: 2px 10px;
  color: #CCC;
  font-size: 8pt;
  font-weight: bold;
}

div.header a {
  color: #CCC;
  text-decoration: none;
}

div.header a:hover { 
  color: #FFF;
}

div.error {
  color: #F00;
}

div.install {width:650px; background-color: #00005a;}
div.install h4 {margin:0; padding:0; color: #fff;}
div.install .content {margin:0; padding:4px 4px 0 4px; border-style:solid; border-color:#bbb; border-width:0 1px 1px 1px; background-color: #fff;}

        </style>
    </head>
    <body>
        <div class="header" align="right"><a href="http://juddi.apache.org/" target="_top">jUDDI@Apache</a></div>
        <h1>Welcome</h1>


        <h2><em>Welcome</em> to Apache jUDDI!</h2>
        jUDDI is an open source implementation of <a href="http://oasis-open.org">OASIS</a>'s <a href="http://oasis-open.org/committees/uddi-spec/doc/tcspecs.htm#uddiv3">Universal Discovery Description and Integration (UDDI)</a>.
        You've reached the splash page for jUDDI web server.<br>

        
        <h4><a href="/juddi-gui">View the jUDDI User Interface</a> - This is a nearly complete UDDIv3 end user web application.</h4>

        <h4><a href="/juddiv3">View the jUDDI Administration Interface</a> - This is for administrators to use to reconfigure jUDDI, check the status, and perform administrative actions.</h4>

         <h4><a href="index-tomcat.html">Tomcat Administration Interface</a> - This is for administrators to use to reconfigure Tomcat, check the status, and perform administrative actions.</h4>

        
        Here's some useful links to learn more about the UDDI and jUDDI.
        <ul>
            <li><a href="http://juddi.apache.org/">The Apache-jUDDI Home Page</a></li>
            <li><a href="http://juddi.apache.org/docs.html" >Documentation</a></li>
            <li><a href="http://wiki.apache.org/juddi" >jUDDI Wiki</a></li>
            <li><a href="http://juddi.apache.org/issue-tracking.html" >jUDDI's Issue Tracker (report a bug)</a></li>
            <li><a href="http://juddi.apache.org/source.html" >jUDDI's Source Code</a></li>
            <li><a href="http://juddi.apache.org/mailing-list.html">jUDDI's Mailing lists</a></li>
        </ul>

        <hr />
        <table width="100%" border="0">
            <tr>
                <td height="50" align="center" valign="bottom" nowrap>
                    <div class="footer">&nbsp;</div>
                </td>
            </tr>
        </table>

    </body>
</html>
