Geronimo is composed of a lightweight core (or kernel) and many modules. Each module may include system code (such as a thread pool or web container) or may be an application (such as the management console or a user-deployed application).

There are several advantages to this structure:

One of the side effects of this structure is that every module has a Module ID, and you will become very used to seeing module IDs when dealing with Geronimo.


A module ID uniquely identifies a specific module, including its name, version, etc. In fact, there are four components of a module ID:

Module IDs are normally printed with slashes between the four components, such as GroupID/Artifact-ID/Version/Type. A module ID with all 4 components is known as fully resolved. Any module that has been deployed will have a fully resolved module ID. However, you may use unresolved module IDs when declaring dependencies on other modules – normally omitting the version number to indicate that any version will suffice.
Module IDs are also used to refer to common libraries included with Geronimo, and available for use by system modules or applications. These common libraries are typically JARs, but use the same identifier format of GroupID/ArtifactID/Version/Type.