AsyncWeb Feature-Set
Transport / HTTP
- NIO based transport - built on top of the first class Mina project
- Scales very well (tested with over 9000 concurrent connections)
- Capable of achieving very high throughput even when application code exhibits high latency by scaling connections or pipelining - all with a fixed (and low) number of threads
- HTTP Parsing built on small statefull parsers which can be "hooked" together - making it easy to add support for additional HTTP protocol elements
- All internal parsing buffers are "smartly" pooled
- Supports HTTP 1.0 HTTP 1.1
- Connection pipelining
- Parallel dispatch through container
- Response order to client maintained
- Connection Keep Alives (default for HTTP 1.1, explicit for HTTP 1.0)
- Configurable connection idle times
- 408 response and connection closure if idle occurs mid-request
- Closure scheduled when existing response pipeline is drained otherwise
- Configurable maximum (explicit or otherwise) connection keep-alives per connection
- HTTP continuation responses
- Chunked encoding
- URI hex escape decoding
- URI request parameters
- Cookie support
- Default error pages for 4x 5x response code range
- Error page provided even when a parse error or protocol violation is encountered
API / Container
- Simple APIs (HttpService / HttpRequest / HttpResponse / Session)
- HttpService forms the asyncronous replacement for "HttpServlet"
- ServiceHandlers provide asyncronous "filter" like functionality - allowing generic service behaviour to be applied to all requests
- Session Support
- Configurable Session timeouts
- Session lifecycle listener support
- Asynchronous throughout
- Internal components built to allow easy integration with IoC containers
- Spring integration
- HttpServices are (by default) defined and configured in a per-service spring xml file
- Pluggable "resolvers" map HttpRequests to their target HttpService
- Resolvers can be linked - allowing "fall-through" behaviour
- Resolvers can use entire HttpRequest to make their routing decision - not constrained to URL