Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

This section discusses the Geronimo kernel. Before getting into the higher level overview of the Geronimo architecture as a whole, it's important to understand the Geronimo kernel, since it is critical to it's architecture. Through the kernel, modules in Geronimo can communicate while being loosely coupled and not tied to JMX. The kernel keeps track of the various GBeans in the system along with the various attributes and methods that the GBeans provide. Below is a class diagram of Geronimo kernel. Note that many details have been ommitted, such as each of the methods of the Kernel interface, so as to not cloud the core concepts of the kernel:Image Removed.


Image Added

Kernel

The Kernel interface is where it all starts. Looking at the interface in the javadocs (link here), it's easy to be overwhelmed by the many methods, so we'll just focus of a few of them. The purpose of the kernel is to operate on GBeans that are hooked into Geronimo. In the above diagram, Kernel is an Interface and BasicKernel and KernelGBean are shown to implement that interface. The kernel is wrapped in a GBean just like Tomcat or ActiveMQ are. To achieve this, KernelGBean is a Decorator of Kernel. An instance of Kernel is passed in via the constructor and so all of the methods of Kernel are delegated to that instance. The new functionality that is added to Kernel is the getGBeanInfo method, needed to make Kernel a GBean. BasicKernel is the concrete implementation of Kernel that has the functionality to manipulate GBeans. Calling getAttribute for a given GBean will return the results of calling the getter method passed in via the method paramters (those parameters will be discussed in detail below. The invoke() methods, similar to the getAttribute() methods, will execute a particular method on the GBean. Note other normal operations that you'd want are there as well, like starting or stopping a GBean. Finally, how do GBeans get added to the kernel? GBeans are stored in an instance of the BasicRegistry class which is detailed below.

Registering a New GBean