Apache Tomcat
Copyright 1999-2014 The Apache Software Foundation

This product includes software developed at
The Apache Software Foundation (http://www.apache.org/).

The Windows Installer is built with the Nullsoft
Scriptable Install Sysem (NSIS), which is
open source software.  The original software and
related information is available at
http://nsis.sourceforge.net.

Java compilation software for JSP pages is provided by Eclipse, 
which is open source software.  The original software and 
related information is available at
http://www.eclipse.org.

The original XML Schemas for Java EE Deployment Descriptors:
 - javaee_5.xsd
 - javaee_web_services_1_2.xsd
 - javaee_web_services_client_1_2.xsd
may be obtained from http://java.sun.com/xml/ns/javaee/
