Overview
The Module View contains high level information about how Geronimo is organized into subsystems and packages. It's also intended to give a high level picture of what each module/subsystems purpose is and how it communicates with other modules/subsystems. For the purposes of this document, the focus with be the modules directory in the Geronimo Source. It's likely that this page will change as I gain a better understanding of what the modules/subsystems do and how they communicate with other modules/subsystems.
Subsystems
A subsystem is a logical grouping of modules. Below is a list of subsystems and the modules assigned to those subsystems:
Subsystem |
Module(s) |
---|---|
ActiveMQ |
ge-activemq-rar |
Web Services |
geronimo-axis |
JavaMail |
geronimo-activation |
Clustering |
geronimo-clustering |
JCA |
geronimo-connector |
Deployment |
geronimo-deploy-config |
Java Persistance API |
geronimo-persistence-jpa10 |
J2EE Management Model |
geronimo-management |
Jetty |
geronimo-jetty |
Tomcat |
geronimo-tomcat |
JNDI |
geronimo-naming |
JAAS |
geronimo-security |
Shared |
geronimo-common |
Unclassified (still todo) |
geronimo-client |
ActiveMQ
ActiveMQ is an Apache implementatino of a Message Bus. It's supports JMS 1.1 and is developed separately from Geronimo. More information can be found here. It's important to note with this subsystem that the code in Geronimo around ActiveMQ are just a wrappers (specifically a GBeans). There are three modules in this subsystem. The ge-activemq-rar modules contains the ActiveMQ RAR (from the ActiveMQ project), the geronimo-activemq-gbean module contains the GBean wrappers around ActiveMQ and geronimo-activemq-gbean-management contains the interfaces for accessing the subsystem externally. An example of how this subsystem is used externally (specifically the externally usable interfaces) is by the console. The console accessed the subsystem through the interfaces in geronimo-activemq-gbean-management, retrieved via GBean.
Web Services
Clustering
J2EE Management Model
This subsystem is Geronimo's implementation of the Sun's J2EE Management Model (or JSR 77). The purpose of this subsystem is to provide generic interfaces for Geronimo's specific implementations. For example, in the geronimo-management modules there is an interface called JMSBroker that is implemented by the ActiveMQBroker. TODO: Does this belong in with the Deployment stuff? The geronimo-j2ee-schema and the geronimo-j2ee-builder modules both look to be deployment related.
Jetty and Tomcat
Jetty and Tomcat are both web containers that are available for use with Geronimo. These web containers are not maintained by the Geronimo developers however there are GBean wrappers to many of the operations for the Jetty and Tomcat servers. The code these subsystems are meant for adapting these projects into the Geronimo application.
JAAS
JAAS is an Authentication and Authorization specification created by Sun. Geronimo has implemented this specification for use by applications deployed in Geronimo. There are two modules in this subsystem. The geronimo-security module contains the code that implementats the JAAS specification. TODO: maybe break this into it's own page?
JavaMail
JavaMail is a specification put out by Sun to abstract away some of the details of creating an Email in Java. Geronimo wraps these standard JavaMail classes so that they can be accessed and managed via GBeans. An example of how these are wrapped is the javax.mail.Session class. The Session class manages configuration and authorization information. In Geronimo, the Session class can be accessed via org.apache.geronimo.mail.MailGBean in the geronimo-mail module. JavaMail also uses the JavaBeans Activation Framework (JAF). The JavaBeans Activation Framework is intended to help identify the contents of the various attributes in JavaBeans. In the case of the JavaMail framework, it's used for MIME types. Geronimo has extended JAF to handle data from the MIME types, these classes are in the geronimo-activation module.
J2EE Connector Architecture (JCA)
The J2EE Connector Architecture is a vendor independenct specification for connecting and communicating with Enterprise Information Systems, such as Enterprise Resource Planning (ERP) systems. The Geronimo implementation of this is available in the geronimo-connector module. The associated gerinomo-connector-builder module is used for converting the XML deployment plans into run-time connectors.
Java Naming and Directory Interface (JNDI)
This subsystem contains an implementation of the Java Naming and Directoring Interface. The geronimo-naming module contains all of the classes to handle JNDI lookups and expose those classes via GBeans to the rest of the Geronimo server. The geronimo-naming-builder reads in deployment plans and creates new entries in the running JNDI contexts.