An Inside Look at the Geronimo Plugins System
InfoQ asked Bruce about the key advantages of the plugins system:
The plugin system in Geronimo is especially unique and a very useful feature. The Geronimo deployer can be used to not only query a given Geronimo server for installed plugins, but it can also be used to install plugins from server to server. This is very handy in both development and production. For example, a Geronimo instance can be set up and then mirrored across a farm of machines using the plugin architecture or individual plugins can be plucked and installed from one Geronimo instance to another.InfoQ then asked Aaron about how the plugin system benefits application developers:
The eventual idea is that the community will help to create a repository of plugins for use by anyone and will hopefully be housed at geronimoplugins.com. Because the plugin architecture and design is so unique and easy to work with, it could easily lend itself to creating a market for commercial Geronimo plugins.
The main benefit for applications is that when you install an application via a plugin, you're sure it's been deployed to at least one other Geronimo server (so it can't have invalid configuration syntax, for example), and any dependencies are automatically installed with the application (such as third-party libraries, a database connection pool or security realm, etc.).
Aaron then went on to comment that installing features and extensions to the Geronimo server eliminates the need for a new version/distribution of Geronimo. They can be installed at runtime without the need for restarting the server.
Current Plugins Include:
- Sample applications for Geronimo
- Quartz scheduler integration, allowing you to deploy scheduled jobs in a JAR with an XML file defining the schedule, or to deploy scheduled jobs as part of a J2EE application
- Liferay integration, running a full enterprise portal server within Geronimo.
- Apache Directory integration, running an LDAP server within Geronimo
- A plugin adding advanced Oracle database integration to Geronimo (allowing the use of Oracle XA drivers from the Geronimo admin console)
There are also a number of plugins either in discussion or active development:
- File archiving for Geronimo applications
- JasperReports integration allowing you to deploy report templates with an associated XML file identifying a data source to get the data from, archiving features such as "save each report for 2 week, etc.
- JPA (Java Persistence Architecture) integration allowing web applications to use the JPA features defined in Java EE 5
- ServiceMix integration to run a JBI (Java Business Integration) ESB (Enterprise Service Bus) within Geronimo
- Mule integration to run a POJO-based ESB within Geronimo