This is a webapp is a TEST RESOURCE, used by the jetty project at http://www.eclipse.org/jetty/

It is neither a valid WAR file, nor contains valid Groovy implementations,
in either scripting, source or binary form.
