Versions Compared

Key

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

...

A geronimo installation typically can run multiple jvms for different purposes. For instance, there's the main JavaEE server, a command line deploy tool, and a JavaEE application client container. Each of these requires configuration information from different files. The set of such information sufficient to configure such a jvm is collected together in a "server instance". In a geronimo server, these are represented by gbeans in the plugin module. When assembling a server using maven these are represented with xml in the maven pom. In any case, these have names, and for the plugin metadata specific to a server instance, you specify which instance you intend using the server attribute. This defaults to "default", the JavaEE server.

Building a plugin.

...

Include Page

...

Here's an example of a car-maven-plugin configuration using maven dependencies and configuring most of the additional information possible:

...


            <plugin>
                <groupId>org.apache.geronimo.buildsupport</groupId>
                <artifactId>car-maven-plugin</artifactId>
                <configuration>
                    <useMavenDependencies>
                        <value>true</value>
                        <includeVersion>true</includeVersion>
                    </useMavenDependencies>
                    <category>Tomcat</category>
                    <instance>
                        <plugin-artifact>
                            <copy-file relative-to="server" dest-dir="var/catalina">tomcat-base/</copy-file>
                            <config-xml-content>
                                <!-- To disable accesslogging uncomment the following lines
                                <gbean name="TomcatEngine">
                                    <reference name="TomcatValveChain" />
                                </gbean>
                                <gbean name="AccessLogValve" load="false"></gbean>
                                -->
                                <gbean name="TomcatWebConnector">
                                    <attribute name="host">${ServerHostname}</attribute>
                                    <attribute name="port">${HTTPPort + PortOffset}</attribute>
                                    <attribute name="redirectPort">${HTTPSPort + PortOffset}</attribute>
                                    <attribute name="maxHttpHeaderSize">8192</attribute>
                                    <attribute name="maxThreads">150</attribute>
                                    <attribute name="minSpareThreads">25</attribute>
                                    <attribute name="maxSpareThreads">75</attribute>
                                    <attribute name="enableLookups">false</attribute>
                                    <attribute name="acceptCount">100</attribute>
                                    <attribute name="connectionTimeout">${WebConnectorConTimeout}</attribute>
                                    <attribute name="disableUploadTimeout">true</attribute>
                                </gbean>
                                <gbean name="TomcatAJPConnector">
                                    <attribute name="host">${ServerHostname}</attribute>
                                    <attribute name="port">${AJPPort + PortOffset}</attribute>
                                    <attribute name="redirectPort">${HTTPSPort + PortOffset}</attribute>
                                    <attribute name="minSpareThreads">25</attribute>
                                    <attribute name="maxSpareThreads">75</attribute>
                                    <attribute name="enableLookups">false</attribute>
                                </gbean>
                                <gbean name="TomcatWebSSLConnector">
                                    <attribute name="host">${ServerHostname}</attribute>
                                    <attribute name="port">${HTTPSPort + PortOffset}</attribute>
                                    <attribute name="maxHttpHeaderSize">8192</attribute>
                                    <attribute name="maxThreads">150</attribute>
                                    <attribute name="minSpareThreads">25</attribute>
                                    <attribute name="maxSpareThreads">75</attribute>
                                    <attribute name="enableLookups">false</attribute>
                                    <attribute name="acceptCount">100</attribute>
                                    <attribute name="disableUploadTimeout">false</attribute>
                                    <attribute name="clientAuth">false</attribute>
                                    <attribute name="algorithm">Default</attribute>
                                    <attribute name="sslProtocol">TLS</attribute>
                                    <attribute name="keystoreFile">var/security/keystores/geronimo-default</attribute>
                                    <attribute name="keystorePass">secret</attribute>
                                    <attribute name="keystoreType">JKS</attribute>
                                </gbean>
                                <gbean name="TomcatHost">
                                    <attribute name="initParams">
                                        name=${ServerHostname}
                                        appBase=
                                        workDir=work
                                    </attribute>
                                </gbean>
                            </config-xml-content>
                            <config-substitution key="HTTPPort">8080</config-substitution>
                            <config-substitution key="AJPPort">8009</config-substitution>
                            <config-substitution key="HTTPSPort">8443</config-substitution>
                            <config-substitution key="ServerHostname">0.0.0.0</config-substitution>
                            <config-substitution key="WebConnectorConTimeout">20000</config-substitution>
                            <config-substitution key="webcontainer">TomcatWebContainer</config-substitution>
                            <config-substitution key="webcontainerName">tomcat6</config-substitution>
                        </plugin-artifact>
                    </instance>
                </configuration>
            </plugin>
GMOxDOC22:Buidling,installing plugins and extracting a server from an exsiting server
GMOxDOC22:Buidling,installing plugins and extracting a server from an exsiting server

As you use maven to build plugins, a geronimo-plugins.xml plugin catalog is automatically maintained in your local maven repository. You can force this to be rebuilt by running

Code Block

mvn org.apache.geronimo.buildsupport:car-maven-plugin:create-pluginlist

This might be necessary if you prune your maven repository and remove plugins listed in the catalog.

Alternatively, you can construct the geronimo-plugin.xml file by hand and include it in a deployed module in a geronimo server.

The admin console also allows limited editing of geronimo-plugin.xml files but editing the information about how the plugin fits into the server is not yet supported.

Installing plugins

If the appropriate admin console plugin is installed (and your geronimo server includes web app support) you can install plugins from a plugin repository. After selecting the "plugins" page from the navigation menu select the plugin repository you want, such as your local maven repository if you have been building your own plugins. Next you see a list of available plugins from the repository. Select multiple plugins using the checkboxes or a single plugin as a link, and on the next page you will see more information on the plugins. On your approval the plugins will be downloaded and installed.

Alternatively you can use gshell to install plugins using the deploy/list-plugins command. This can be run with a command line or interactively. Interactively you can select the plugin repository to use (if more than one is known), and then select the plugins to install. Again, they will be downloaded and installed. An example of command line usage will be seen in later when we discuss assembling a server.

Extracting a server from an existing server.

Just as with installing plugins, this can be done from the admin console, gshell, and the Geronimo Eclipse Plugin. In the admin console you specify the groupId and artifactId of the server you want, the version, and the archive type and then select the plugins you want installed. The server will be assembled in var/temp.

Similarly you can use the gshell deploy/assemble-server command specifying the same information on the command line or interactively.

Tip
titleImportant Note

In order to get a working server you must include the geronimo-boilerplate-minimal plugin which includes several files used to start the server

TODO: The groupId is not currently used but the intention is to copy the assembled server into an appropriate maven repository.

Here's an example of a gshell script to install the roller plugin into the framework assembly and extract a server that only supports roller (and does not include the admin console or any deployment capabilities)

TODO: use something like this: snippet:url=geronimo/plugins/roller/trunk/roller-jetty-commands

TODO: get gshell to accept line continuations as in the following (these DO NOT WORK IN REAL LIFE):

Code Block

# assembles a server containing roller-jetty from the geronimo-framework server.
# run using ./bin/gsh < roller-jetty-commands
deploy/list-plugins -u system -w manager -r file:/Users/david/.m2/repository/\
 org.apache.geronimo.plugins/roller-jetty/0.0.2-SNAPSHOT/car\
 org.apache.geronimo.plugins/roller-themes/0.0.2-SNAPSHOT/car

deploy/assemble -g org.apache.geronimo.assemblies -a geronimo-roller-jetty -v 1.0-SNAPSHOT\
 org.apache.geronimo.assemblies/geronimo-boilerplate-minimal/2.1-SNAPSHOT/jar\
 org.apache.geronimo.plugins/roller-jetty/0.0.2-SNAPSHOT/car\
 org.apache.geronimo.plugins/roller-themes/0.0.2-SNAPSHOT/car

...

Assembling a server using maven.

...