<!--
   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>