Simple
HomeDesignOverview
Search



Feedback




The design of the Simple API is toward concurrency. The intention is to provide a server capable of handling extreme loads without a loss of processing caused by the thread per connection architecture commonly found in Java based servers. Simple provides the ability to serve both static and dynamic content in a multi-threaded environment using a component architecture similar to Java Servlets. These components enable the server to be extended to provide services for generating dynamic content by exploiting the Java platform.

The service model provided by the API enables extension at a much lower level than the service components. The server itself contains a core processing framework that extracts client requests from connected pipelines and dispatches those requests to a protocol handler as Java objects. The API provides a ProtocolHandler interface, which can be used to provide a server implementation. Implementations of the ProtocolHandler are used to handle HTTP requests, which are dispatched, as events, from the core processing engine. This provides a means for virtual hosting, logging, and other filtering techniques to be used by the implementation. The processing proceeds from an initial Connection object to a PipelineHandler, which reads and dispatches requests from connected pipelines to the implemented ProtocolHandler (which can be layered to introduce functionality to dispatched requests).

This design enables functions to be introduced at the socket level, such as SSL and output buffering, and also provides for intervention at the application level by providing filtering capabilities for protocol handler implementations. The design attempts to minimize the cost of the Java environment and prioritizes concurrency and performance throughout.

SourceForge Logo