Winstone Servlet Container
From Wikipedia, the free encyclopedia
This article or section is written like an advertisement. Please help rewrite this article from a neutral point of view. Mark blatant advertising which would require a fundamental rewrite in order to become encyclopedic for speedy deletion, using {{db-spam}}. (December 2007) |
This article or section seems to contain embedded lists that may require cleanup. To meet Wikipedia's style guidelines, please help improve this article by: removing items which are not notable, encyclopedic, or helpful from the list(s); incorporating appropriate items into the main body of the article; and discussing this issue on the talk page. |
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.