<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You 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>
    <link type="text/css" rel="stylesheet" href="http://geronimo.apache.org/style/default.css">
    <link rel="SHORTCUT ICON" href="http://geronimo.apache.org/images/favicon.ico">
    <script src="http://geronimo.apache.org/functions.js" type="text/javascript"></script>
    <title>Apache Geronimo Sample Applications</title>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
</head>

<body onload="init()">

<table valign="top" background="http://geronimo.apache.org/images/header_bg_1x86.gif" border="0" cellpadding="0" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td valing="top" align="left">
                <a href="http://geronimo.apache.org/"><img src="http://geronimo.apache.org/images/topleft_logo_437x64.gif" border="0"></a>
            </td>
            <td width="100%">
                &nbsp;
            </td>
        </tr>
    </tbody>
</table>

<table border="0" cellpadding="2" cellspacing="0" width="100%">
    <tbody>
        <tr class="topBar">
            <td class="topBarDiv" align="left" nowrap="true" valign="middle" width="100%">
                &nbsp;<a href="http://geronimo.apache.org/" title="Apache Geronimo Home" target="_blank">Apache Geronimo Home</a> | <a href="http://cwiki.apache.org/geronimo/" title="Geronimo Documentation" target="_blank">Documentation</a>
                | <a href="http://cwiki.apache.org/GMOxSAMPLES/" title="Sample Applications" target="_blank">Sample Applications</a>
            </td>
            <td class="topBarDiv" align="left" nowrap="true" valign="middle">
                <!--<a href="xref/index.html" target="source_window">Source Code</a> | <a href="apidocs/index.html" target="source_window">Java Docs</a>&nbsp;&nbsp;-->
            </td>
        </tr>
    </tbody>
</table>

</body>
</html>