Introduction
CoffeeBoost is a simple extension based on available open source projects in an effort to replace products like Apache or Sun Webserver as high performance web delivery frameworks. Java has reached a point where performance is no longer an issue and it can be appreciated for other merits such as broad community support, higher security and standards based profiling and monitoring. The intent is to not reinvent the wheel and re-use as much as possible (and contribute these extra's back to the respective projects) See also a list of included code.
Used projects / frameworks (planned)
Glassfish/Grizzly http://glassfish.org/ GPL / CDDL
JFastCGI http://sourceforge.net/projects/jfastcgi/ BSD
URL Rewrite Filter http://tuckey.org/urlrewrite/ BSD
Java Monitor (probes) http://java-monitor.com BSD
Features (Current ideas)
Configuration
- Virtual Hosting (multiple domains per server)
- Monitor and control each site through JMX
- Convention over configuration where possible.
- Imports for other webservers
Infrastructure
- Uses Grizzly as a C10k server (http://www.kegel.com/c10k.html)
- Flexible datasources for hosted content (file, http, jdbc) IE file does not have to be stored locally
- Built in tarpit support to slow down potential DOS attacks (http://en.wikipedia.org/wiki/Tarpit_(networking) )
Supported technologies
- Simplified integration with native PHP through FastCGI
- Everything that Glassfish V3 supports. (Java, JRuby)
Monitoring
- Java-Monitor external monitor included by default
- JMX Beans for everything
- Optional dynamic call tracing to trace individual requests and flows.
- Performance and statistic reporting per site.
Implementation plan
- Create maven builds for each dependency where required
- Integrate dependencies
- Evaluate possible implementations (Pure Grizzly, Glassfish V3 or Jetty)
- Create test suite to prove and test functionality.
Most likely candidates are using Glassfish V3 with some magic inside Grizzly to handle the flexible resource locations for the (static) content. Unfortunately it would mean using OSGi ;)





