|Home > Index > Geronimo Architecture > 5 - Deployment Subsystem|
The Deployment Subsystem contains the code that gets input from the user and deploys the applications and other JEE entities to the Geronimo Application Server. The Deployment Subsystem can be broken further into three larger modules, the J2EE Product Provider Implementation, the Deployer module and the Builders module. The submodules that are in the Builders module actually appear in other subsystems. The other subsystems is where they belong, however I'm mentioning them here because that subclass quite a few of the Configuration classes in the J2EE Product Provider (more on that below). The J2EE Product Provider and the Deployer are part of Geronimo's implementation of the J2EE Deployment Specification (also known as JSR-88). In the case of the J2EE Product Provider there is a set of interfaces that need to be implemented, but in the case of the Deployment module, the requirements aren't as concrete. The specification is a little more open-ended, indicating what the module should do, but not necessarily provide strict guidelines on how it should do it. Below is a list of the modules in the Deployment Subsystem and the submodules of the subsystem.
J2EE Product Provider Implementation
The J2EE Product Provider consists of implementing interfaces in the javax.enterprise.deploy.spi package. Information on these interfaces can be found in the Suns J2EE Deployment Specification (found here ). The main purpose of the J2EE Product Provider is a sort of faÃ§ade to the deployment system. The point of entry into the deployment system is the DeploymentManager interface (detailed in the J2EE Deployment Specification). Geronimo implements that interface and also the accompanying configuration interfaces required by the specification. The implementation of the DeploymentManager and other classes related to the Deployment manager can be found in the geronimo-deploy-jsr88 module. The required interface for the configuration information (DeploymentConfiguration) and other deployment configuration code can be found in the geronimo-deploy-config module.
The Deployer module is handles deployment related actions. This module contains submodules that interface with the command-line, interface with other modules that handle the configuration of their specific types of deployment (such as Axis services) and hot deployment.
Hot Deployment is a feature in an application server that allows an application to be automatically deployed when the server is running and the application deployment file (such as an EAR) is placed in a specific directory. Geronimo provides this functionality with the geronimo-hot-deploy module.
The geronimo-deploy-tool contains code to handle command line requests for deployment related actions. This functionality is also provided via the web interface (handled through the geronimo-standard-console).
The geronimo-deployment module handles the actual deployment of the modules. Also of interest is the Deployer class. This class is a GBean that can be accessed by the system (specifically by the GBean deployer) and can deploy J2EE entities.
As mentioned above, the submodules in the Builders module are not technically part of the Deployment Subsystem. There are list here because they subclass a lot of the same classes that the J2EE Product Provider module implements (specifically around configuration). This is done to provide different configuration information based on the type of module being deployed (i.e. a web application, a connector etc).