Apache Geronimo is a project aimed at producing an open source, certified Java Enterprise Edition (JEE) Application Server. Like all JEE application servers, it is necessary for Geronimo to adhere to the various JEE specifications produced by Sun and to implement the technologies required by Application Servers. Geronimo is interesting architecturally in that it integrates quite a few pieces of existing open source software into the server. To connect these open source components into a fully functional system Geronimo uses GBeans. A GBean is a thin wrapper around one or more pieces of functionality in the application that is exposed for use by the rest of the system. An example of this is around web containers. Geronimo uses Tomcat or Jetty (based on the server administrators preference) for the web container. A set of GBeans is then written around the web containers allowing the web container to be loosely coupled with the rest of the system. The GBeans are accessed and managed via the Geronimo Kernel. The kernel allows access to the GBeans and also handles the starting and stopping of the GBeans and their dependencies. The Sun method of managing resources in an application server is via the Java Management Extension (JMX) and MBeans. Geronimo allows management via MBeans as well by creating adapters that will accept MBean requests and then delegate them to the kernel and the appropriate GBean. Other open source components that are wrapped in GBeans and used in the system are ActiveMQ for a messaging system, Axis for web services, ApacheDS for an LDAP solution and WADI for handling requests on distributed servers. Geronimo has their own implementation of the various JEE required specifications such as the Java Deployment API and the Java Management Model. Geronimo also has a rich toolset for management and deployment of applications in both web-based and command line form.
This document aims at describing the Geronimo code-base at a high level. This document intends to detail the core of the Geronimo system along with the various modules and subsystems in Geronimo. The ultimate goal of this document is to not only document the architecture of Geronimo but also to help shorten the learning curve of new Geronimo developers.