Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[jetty-dev] Jetty Plugin Functionality / Getting rid of Jetty Hightide release at codehaus

Hi all,

as you might already know, we maintain two jetty releases at the moment. The core jetty is hosted at eclipse and additionally we maintain the "Jetty Hightide" release hosted at codehaus: http://docs.codehaus.org/display/JETTY/Hightide+Documentation.
We'd like to get rid of hightide and all the maintenance work caused by it. To do so, we evaluate a plugin/module concept for jetty and wire up the remaining hightide features as plugins for eclipse jetty. In a later phase it can be extended to contain plugins not from hightide (e.g. cometd) and even plugins contributed by the community. We'd like the community to take part in the design decisions and discuss the setup with all interested developers.

In the first phase we want to achieve the following milestones:

- discuss and write down a directory structure for plugins
- wire up and run a proof of concept with the hightide activemq module
- tweak jetty-start to be able to load everything belonging to the POC plugin which is installed manually at this phase

In the second phase:

- some kind of ModuleManager to activate/deactivate plugins and install/remove plugins
- use aether to fetch plugins from maven central

In the third phase:

- create more plugins (cometd, etc.)

The first thing to think about is the directory structure for plugins. Jesse McConnell and I had a discussion and the following structure is what I've in mind after the chat with Jesse:

(some standard directories are omitted for readability)
$JETTY_HOME
   |-bin
   |-contexts
   |-contexts-available
   |-etc
   |-lib
   |-plugins
   |---activemq
   |-----context
   |-----etc
   |-----lib
   |-----webapps
   |-resources
   |-webapps

So basically everything belonging to a plugin is installed in a single directory: $JETTY_HOME/plugins/[pluginname] and thus can be installed/removed easily. It's also nicely separated from everything else.

As you can see a plugin is supposed to be able to have config files, additional jar files and even webapps (at least in a later phase). First of all we need to tweak jetty-start to pickup and enable installed plugins. Then we need to think about something like a PluginManager responsible for installing/removing plugins from maven central and a config file for the plugin-manager "jetty-plugins.xml" enabling/disabling plugins.

Plugins could be installed on the commandline using something like:

java -jar start.jar -list-plugins

to retrieve a list of available plugins. And:

java -jar start.jar -install-plugin [pluginname]

to install a plugin.

I will now start with hightide activemq and fit it into the directory structure as shown above. However this is all open for discussion and if you've better ideas, like another structure/approach more, please let us know. I will be able to refactor at any time.

Cheers,
Thomas

-- 
thomas becker
tbecker@xxxxxxxxxxx

http://webtide.com / http://intalio.com
(the folks behind jetty and cometd)

Back to the top