HomeDocumentation > Reference > Geronimo Architecture > Plugin and plugins group

Apache Geronimo is now assembled completely out of plugins including the server configuration files, in this section we will explain the overview of plugin system and introduce concept of plugin groups betaken starting from v2.2.

Plugin basics

A geronimo plugin consists of a classloader specification, optional classes, optional service or component configuration, and information about how to install it in Geroninimo. The classloader specification and service configuration is specified in a Geronimo plan (and possibly other plans such as a javaee spec DD or annotations). The information about how to install the plugin is provided in the META-INF/geronimo-plugin.xml file. This file includes details such as the category and description, dependency information showing what else needs to be installed with this plugin, information about files to be unpacked on installation, and configuration information showing how and when the plugin will be started. Before looking at the more complicated aspects of the plugins lets look at a simple example of geronimo-plugin.xml. Here is an example for the jetty web container:

First we see fairly obvious cataloging information:

Each geronimo-plugin.xml can specify information for many versions of the "same" plugin, so the plugin-artifact element specifying information for one version can occur multiple times. Here there is just one. First we see the plugin moduleId and the list of dependencies that will be installed if not already present.

Now we see the list of repositories this plugin is expected to be available from. We normally include the local maven repository to make developing plugins easier.

Here we see the prototype for plugin customization. The config.xml file has a section for each module or plugin it knows about and the contents of the config-xml-content in geronimo-plugin.xml are copied into such an element in config.xml. Note the use of substitution variables such as ${ServerHostname}.

Here we see the default values of the substitution variables. These are copied into the config-substitutions.properties file; you are expected to modify these by hand as necessary.

Missing from this example is the <artifact-alias> element which can be used to replace one plugin by another. For instance you can switch databases by deploying postgres-system-database and specifying <artifact-alias key="org.apache.geronimo.configs/system-database/2.1-SNAPSHOT/car">org.apache.geronimo.configs/postgres-system-database/2.1-SNAPSHOT/car</artifact-alias>

One of the more obvious parts of Geronimo is the repository which contains jars as well as plugins. However the plugins by themselves don't do anything; we need some information about which ones to start and how to customize them in order to get a functioning server. This kind of information is normally stored in configuration files in the var/config directory such as config.xml, config-substitutions.properties and artifact_aliases.properties. There are several "servers" you can start in a normal Geronimo installation, such as the "server", the app client container, the deployer, and the jsr88 tool. The plugin system abstracts this idea of a "server instance" with a ServerInstance gbean that specifies the attribute store (relating to the config.xml and config-substitutions.xml files) and artifact resolver (relating to the artifact_aliases.properties file). So the plugin system requires that you set up ServerInstances for all the kinds of servers you expect to start in a Geronimo installation. For instance, the normal Geronimo setup includes these:

By default, plugins are installed into the default server instance. If you need to install into a different instance you can specify this in the config-xml-content, config-substitution, and artifact-alias elements. Here's an example from client-transaction, showing how it redirects any dependencies to the server transaction plugin to itself.

Plugins group

A plugin group is basically a set of plugins for users to easily understand and consume. Customizing server assemblies will be easier and a plugin group can be managed as a regular plugin by using deploy command. There are over 11 pre-defined groups for different distribution with Web Contaniner such as Tomcat and Jetty. We take Tomcat as an example here and introduce each plugins group and what plugins are included:

  1. Geronimo Plugin Group :: Framework
    • Description: This plugin group provides the framework functionality. It is required to build a working server.
    • Plugin included:

      Plugin name

      ModuleId

      description

      Geronimo Assemblies :: Karaf Boilerplate Framework

      org.apache.geronimo.framework/karaf-framework//car

      Provides OSGi framework for Geronimo kernel to run.

      Geronimo Framework, Modules :: Shell Commands

      org.apache.geronimo.framework/geronimo-shell-base//car

      Provides Geronimo-specific commands in karaf shell.

      Geronimo Framework, Configs :: J2EE System

      org.apache.geronimo.framework/j2ee-system//car

      Provides base geronimo server that sets up the kernel.

      Geronimo Framework, Configs :: Client System

      org.apache.geronimo.framework/client-system//car

      Provides initial configuration for a demo Geronimo server.

      Geronimo Framework, Configs :: RMI Naming

      org.apache.geronimo.framework/rmi-naming//car

      Provides fundamental geronimo services including the plugin installer.

      Geronimo Framework, Configs :: Plugin Management

      org.apache.geronimo.framework/plugin//car

      Provides plugin functionality.

      Geronimo Framework, Configs :: J2EE Security

      org.apache.geronimo.framework/j2ee-security//car

      Provides basic Geronimo server security infrastructure.

      Geronimo Framework, Configs :: Server Security Configuration

      org.apache.geronimo.framework/server-security-config//car

      Provides sample security configuration for a demo Geronimo server. Not suitable for production use.

      Geronimo Framework, Configs :: Shutdown

      org.apache.geronimo.framework/shutdown//car

      Provides stop server functionality.

      Geronimo Framework, Configs :: JSR-88 CLI

      org.apache.geronimo.framework/jsr88-cli//car

      Provides command line implementation of JSR-88 specification.

      Geronimo Framework, Configs :: Online Deployer

      org.apache.geronimo.framework/online-deployer//car

      Provides deployment functionality when the server is up and running.


  2. Geronimo Plugin Group :: WADI Clustering Tomcat
    • Description: This plugin group provides WADI Clustering functionality for Tomcat.
    • Plugins included:

      Plugin name

      ModuleId

      description

      Geronimo Plugins, Clustering :: Farming

      org.apache.geronimo.configs/farming//car

      Provides basic farming support.

      Geronimo Plugins, Clustering :: WADI

      org.apache.geronimo.configs/wadi-clustering//car

      Provides Geronimo WADI integration.

      Geronimo Plugins, Tomcat :: Clustering Builder for WADI

      org.apache.geronimo.configs/openejb-clustering-builder-wadi//car

      Provides openejb and WADI integration.

      Geronimo Plugins, Tomcat :: Clustering over WADI

      org.apache.geronimo.configs/tomcat7-clustering-builder-wadi//car

      Provides deployment for WADI clustering on Tomcat 7.


  3. Geronimo Plugin Group :: ejb
    • Description: This plugin group provides EJB functionality.
    • Plugins included:

      Plugin name

      ModuleId

      description

      Geronimo Plugins, Corba :: Deployer

      org.apache.geronimo.configs/openejb-corba-deployer//car

      Provides the Geronimo deployer for corba security configurations for openejb.

      Geronimo Plugins, Corba :: Yoko ORB

      org.apache.geronimo.configs/j2ee-corba-yoko//car

      Provides Yoko Orb server setup with naming service, protected orb, and unprotected orb.

      Geronimo Plugins, MEJB :: Config

      org.apache.geronimo.configs/openejb//car

      Management EJB plugin.

      Geronimo Plugins, OpenEJB :: Deployer

      org.apache.geronimo.configs/openejb-deployer//car

      Geronimo Deployer for OpenEJB Container.


  4. Geronimo Plugin Group :: JMS
    • Description: This plugin group provides JMS functionality.
    • Plugins included:

      Plugin name

      ModuleId

      description

      Geronimo Plugin Group :: Framework

      org.apache.geronimo.framework.plugingroups/framework//car

      Provides the framework functionality. It is required to build a working server.

      Geronimo Plugins, ActiveMQ v5 :: Broker using blueprint

      org.apache.geronimo.configs/activemq-broke-blueprint//car

      Provides Apache ActiveMQ v5 integration iwith Geronimo. This module starts an activemq broker embedded in Geronimo.

      Geronimo Plugins, ActiveMQ v5 :: Resource Adapter

      org.apache.geronimo.configs/activemq-ra//car

      Provides Geronimo ActiveMQ v5 integration: ActiveMQ v5 resource adapter connecting to (embedded) activemq broker.


  5. Geronimo Plugin Group :: Client
    • Description: This plugin group provides Client functionality.
    • Plugins included:

      Plugin name

      ModuleId

      description

      Geronimo Plugins, Corba :: Client Yoko

      org.apache.geronimo.configs/client-corba-yoko//car

      Provides Geronimo deployer for corba security configurations for openejb.

      Geronimo Plugins, Client :: Deployer

      org.apache.geronimo.configs/client-deployer//car

      Provides Geronimo deployer for standard JEE artifacts.


  6. Geronimo Plugin Group :: Persistence
    • Description: This plugin group provides Persistence functionality.
    • Plugins included:

      Plugin name

      ModuleId

      description

      Geronimo Plugin Group :: WAB Tomcat

      org.apache.geronimo.framework.plugingroups/framework//car

      Provides the framework functionality. It is required to build a working server.

      Geronimo Plugins, OpenJPA2 :: Deployer

      org.apache.geronimo.configs/persistence-jpa20-deployer//car

      Provides Geronimo Persistence Unit deployer.

      Geronimo Plugins, OpenJPA2 :: CAR

      org.apache.geronimo.configs/openjpa2//car

      Provides OpenJPA2 together with all its dependencies.

  7. Geronimo Plugin Group :: WAB Tomcat
    • Description: This plugin group provides support for OSGi Web Applications on Tomcat.
    • Plugins included:

      Plugin name

      ModuleId

      description

      Geronimo Plugin Group :: Framework

      org.apache.geronimo.framework.plugingroups/framework//car

      Provides the framework functionality. It is required to build a working server.

      Geronimo Plugins, Tomcat :: Deployer

      org.apache.geronimo.configs/tomcat7-deployer//car

      Provides the Geronimo deployer for Tomcat web container.

      Geronimo Plugins, WAB :: Web Extender Plugin

      org.apache.geronimo.configs/web-extender//car

      Provides the Web Extender for OSGi applications.

      Geronimo Framework, Configs :: Offline Deployer

      org.apache.geronimo.framework/offline-deployer//car

      Provides the deployer functionality when the server is not running.

      Geronimo Plugins, J2EE :: JSR-88 EAR Configurerr

      org.apache.geronimo.configs/jsr88-ear-configurer//car

      Provides the deployer for Java EAR applications.

      Geronimo Plugins, J2EE :: JSR-88 WAR Configurerr

      org.apache.geronimo.configs/jsr88-war-configurer//car

      Provides the deployer for Java WAR applications.

      Geronimo Plugins, Remote Deploy :: Tomcat

      org.apache.geronimo.configs/remote-deploy-tomcat//car

      Supports Geronimo remote deploy upload servlet (Tomcat).

      Geronimo Plugins, Jasper :: Deployer

      org.apache.geronimo.configs/jasper-deployer//car

      Provides the deployer for Jasper jsps. Installs injection support components. 

      Geronimo Plugins, MyFaces :: Deployer

      org.apache.geronimo.config/myfaces-deployer//car

      Provides the deployer for MyFaces JSF component.


  8. Geronimo Plugin Group :: EBA Tomcat
    • Description: This plugin group provides Web Services Axis2 functionality.
    • Plugins included:

      Plugin name

      ModuleId

      description

      Geronimo Plugin Group :: WAB Tomcat

      org.apache.geronimo.plugingroups/wab-tomcat//car

      Provides support for OSGi Web Applications on Tomcat.

      Geronimo Plugins, Aries :: Deployer

      org.apache.geronimo.configs/aries-deployer//car

      Provides the deployer for Aries applications.

      Geronimo Plugin Group :: Persistence

      org.apache.geronimo.plugingroups/persistence//car

      Provides persistence functionality.

      Geronimo Plugins, Connector 1.6 :: Transaction Manager (JTA11)

      org.apache.geronimo.configs/transaction-1_6//car

      Provides transaction functionality.

      Geronimo Plugins, Connector 1.6 :: connecter deployer

      org.apache.geronimo.configs//connector-deployer-1_6

      Provides the deployer for J2CA connectors.

      Geronimo Plugins, J2EE :: Deployer

      org.apache.geronimo.configs/j2ee-deployer//car

      Provides basic JavaEE deployer functionality including the ear deployer.

      Geronimo Plugins, J2EE :: Server

      org.apache.geronimo.configs/j2ee-server//car

      Provides basic Geronimo JavaEE support components including transaction manager and connector framework.

      Geronimo Plugins, System Database :: System Database

      org.apache.geronimo.configs/system-database//car

      Provides system databases together with its dependencies.

      Geronimo Plugins, Connector 1.6 :: Database Connectors

      org.apache.geronimo.configs/dbconnectors//car

      Is used by the System Database Console and higher level plugingroups to deliver a default set of TranQL connectors in our assemblies.


  9. Geronimo Plugin Group :: Java EE 6 Web Profile Tomcat
    • Description: This plugin group provides Java EE 6 Web Profile via Tomcat functionality.
    • Plugins included:

      Plugin name

      ModuleId

      description

      Geronimo Plugin Group :: Framework

      org.apache.geronimo.framework.plugingroups/framework//car

      Provides the framework functionality. It is required to build a working server.

      Geronimo Plugin Group :: EBA Tomcat

      org.apache.geronimo.plugingroups/eba-tomcat//car

      Provides Web Services Axis2 functionality.

      Geronimo Plugins, Console :: Tomcat

      org.apache.geronimo.plugingroups/console-tomcat//car

      Provides the base console portlets.

      Geronimo Plugin Group :: ejb

      org.apache.geronimo.plugingroups/ejb//car

      Provides EJB functionality.

      Geronimo Plugins, BVal :: Deployer

      org.apache.geronimo.configs/bval-deployer//car

      Provides bean validation integration with Geronimo.

      Geronimo Plugins, OpenWebBeans :: Deployer

      org.apache.geronimo.configs/openwebbeans-deployer//car

      Provides open webbeans integration with Geronimo.

      Geronimo Framework, Configs :: JMX Security Configuration

      org.apache.geronimo.framework/jmx-security//car

      Provides Secure (SSL/TSL) JMX Connector.

      Geronimo Plugins, Welcome :: Tomcat

      org.apache.geronimo.configs/welcome-tomcat//car

      Provides welcome application for Geronimo. It should be removed or replaced for production applications.


  10. Geronimo Plugin Group :: Java EE 6 Tomcat
    • Description: This plugin group provides Java EE 6 Tomcat functionality.
    • Plugins included:

      Plugin name

      ModuleId

      description

      Geronimo Plugin Group :: Java EE 6 Web Profile Tomcat

      org.apache.geronimo.plugingroups/javaee6-web-tomcat//car

      Provides Java EE 6 Web Profile via Tomcat functionality.

      Geronimo Plugin Group :: Client

      org.apache.geronimo.plugingroup/client//car

      Provides Client functionality.

      Geronimo Plugin Group :: JMS

      org.apache.geronimo.plugingroups/jms//car

      Provides JMS functionality.

      Geronimo Plugin Group :: Web Services Axis2

      org.apache.geronimo.plugingroups/webservices-axis2//car

      Provides Web Services Axis2 functionality.

      Geronimo Plugins, JavaMail :: JavaMail

      org.apache.geronimo.configs/javamail//car

      Provides Geronimo JavaMail support.


  11. Geronimo Plugin Group :: Web Services Axis2
    • Description: This plugin group provides Web Services Axis2 functionality.
    • Plugins included:

      Plugin name

      ModuleId

      description

      Geronimo Plugins, AXIS2 :: Deployer

      org.apache.geronimo.configs/axis2-deployer//car

      Provides the web Services Deployer for Geronimo Axis 2 integration.


  12. Geronimo Plugin Group :: Web Services CXF
    • Description: This plugin group provides Web Services CXF functionality.
    • Plugins included:

      Plugin name

      ModuleId

      description

      Geronimo Plugins, AXIS :: Deployer

      org.apache.geronimo.configs/axis-deployer//car

      Provides web Services Deployer for Geronimo Axis 1 integration.

      Geronimo Plugins, CXF :: Deployer

      org.apache.geronimo.configs/cxf-deployer//car

      Provides Geronimo JAX-WS deployer for Apache CXF.

      Geronimo Plugins, CXF :: EJB Deployer

      org.apache.geronimo.configs/cxf-ejb-deployer//car

      Provides Geronimo JAX-WS EJB deployer for Apache CXF.

      Geronimo Plugins, JAXWS :: Tools

      org.apache.geronimo.configs/jaxws-tools//car

      Provides JAX-WS command line tools.

      Geronimo Plugins, CXF :: Tools CLI

      org.apache.geronimo.configs/cxf-tools//car

      Provides CXF JAX-WS command line tools.


Look into Administering plugins on how to manage a plugin.