Winstone Servlet Container

From Wikipedia, the free encyclopedia

Winstone is a GPL-licensed servlet container that was written out of a desire to provide Java Servlet functionality with a minimum of unnecessary features. It is not intended to be a completely fully functional Java EE-style servlet container implementation. Winstone does not support APIs unrelated to Java Servlets, such as JavaMail, Enterprise JavaBeans, etc. Other Servlet container implementations, such as Tomcat, Jetty, Resin, JRun, and Weblogic can provide the missing functionality.

The original goals in writing Winstone were:

  • Supply fast, reliable servlet container functionality for a single web app per server (this restriction is lifted as of v0.7)
  • Keep the size of the core distribution jar as low as possible (currently 155KB)
  • Keep configuration files to an absolute minimum, using command line options to optionally override sensible compiled in defaults.
  • Eventually compile with GCJ to make a 3-4 MB Windows executable for local development/deployment of servlets. This has not happened yet, because of some GCJ class loading problems.
  • Optionally support JSP compilation using Apache's Jasper.

(all text above used with permission)

[edit] Advantages

  • Simple fast deployment - a single jar file is often all that's needed, which can be started from the command line with something as simple as "java -jar winstone.jar <webroot or options>"
  • A focus on decomposability. That is, it has been designed in a way that if you don't need a certain feature of the servlet specification (eg authentication, cluster support, servlet reloading or JSPs), it is possible to remove the package corresponding to that feature from the winstone jar file, and the feature will be disabled. This can help in embedded environments, where size is at a premium.
  • Size and speed: winstone has a lot less code than other containers, so it starts faster and doesn't have any problems running on older hardware. It also supports J2SE v1.2 JVMs if you supply an XML parser.
  • From v0.7, winstone allows the user to define their own web application classloader class. This is extremely useful for Aspect Oriented Programming, as it allows runtime modifications to web application code without precompilation or a special JVM.

[edit] External links