The Open Source Zone is a web application that exploits a large number of Open Source libraries, frameworks and services, namely:
It would have been impossible to create The Open Source Zone in such a short amount of time if all this great code had not been contributed to the Open Source community. Our most sincere thanks go to the people who created these packages.
The heart of the system is a Java web application whose main building blocks are:
The Spring Framework, a powerful container based on dependency injection, which is used to configure and bring together the services provided by the other components, most notably Hibernate and Lucene.
Hibernate, an object-relational mapping (ORM) framework which guarantees the persistence of Java objects by abstracting away the relational model of the underlying database and hiding the complexities of JDBC programming.
Apache Lucene, which is used to provide indexing and search services.
Apache Cocoon, a powerful, XML-based web application framework, which implements the presentation layer and manages the flow of user interactions using an innovative continuations-based approach.
Spring, Hibernate, Lucene and Cocoon, together with the PostgreSQL JDBC driver are hosted inside the Jetty servlet container.
Storage of data is guaranteed by the PostgreSQL Relational DataBase Management System (RDBMS). The interface between the Java application and the RDBMS is managed by the PostgreSQL JDBC driver.
The Apache HTTPD 2.0 server is placed in front of the Jetty Servlet container as a caching proxy, using the mod_proxy and mod_cache modules. This solution provides the following benefits:
- Static resources (images, CSS stylesheets, Javascript files) are served directly by Apache HTTPD and don’t cause unnecessary load on the Servlet container.
- Infrequently changing data can be cached and served directly by Apache HTTPD without forwarding requests to the Java application and to the database, thus ensuring larger scalability in case of numerous concurrent requests.
- When the Java application must be taken down for maintenance and upgrades, Apache HTTPD can show a warning page, informing users of the downtime and avoiding the dreaded “Connection refused” message.
Load balancing and clustering could be implemented in the future, simply by having one HTTPD server forwarding requests to more than one Java application server.
The exact configuration of Apache mod_proxy and mod_cache is similar to the one used by Pier and described in this wiki entry.