<!--
   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.
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd class="cell"">
<html>
<head>
<title>Apache Geronimo Sample Application</title>
<meta content="text/html; CHARSET=UTF-8" http-equiv="Content-Type" />
</head>
<body>
<a href="./defaultCtype/page1.jsp">Page with contentType.</a><br />
<a href="./defaultCtype/page2.jsp">Page without contentType.</a><br />
<a href="./error/page1.jsp">Page with tag: error-on-undeclared-namespace = true.</a><br />
<a href="./error/page2.jsp">Page with tag: error-on-undeclared-namespace = false.</a><br />
</body>
</html>
