Congrats! Your equinox container started, opened a telnet port, started the Host Bundle which in turn got a ModelValidation engine, found the TestPlugin listening on Table AD_User and registered it on the Engine.

Test

Now fire up the ZK Web UI, login as SuperUser, Role System Administrator and change any field value in the Window User.

... and eventually a nasty step: Edit the script $ADEMPIERE_HOME/lib/RUN_Adempiere.sh (or .bat) locate the line where the CLASSPATH is set up and add $ADEMPIERE_HOME/lib/org.eclipse.osgi_3.4.2.R34x_v20080826-1230.jar to it.

WebStart Setup

Equinox is useable in a WebStart-Deployment also!
Nevertheless, currently it is tricky to configure, which plugins are to be deployed with the Webstart Client. Do the following:

Build your own plugin

restart JBoss (or use the telnet session an stop/start the host bundle)

Form extensions

It is now possible to deploy swing forms via a plugin. To do this, create a plugin and specifiy some dependencies:

Switch to the extension tab, click add and choose the AdempiereEquinox.Form extension point.
Right-click on the new extension and choose New.../client. Create or select the class (must be of type FormPanel)

Deploy the plugin.
As usual, as SuperUser create a new Form, spüecifying the class as above and a new Menu entry.
Try it!

WebForm extensions

This works essentially the same as for Form above, extending the point WebForm of course.
Nevertheless, two things are different:

Since plugins essentially are deployed in the EJB layer but must have access to classes in the web layer (org.adempiere.webui.* and org.zkoss.*), the JBoss WAR classloader has to be turned off. This is a drawback since we no longer have classpath separation between web- and ejb-tier. You do this by switching the attribute UseJBossWebLoader to true in $JBOSS/server/adempiere/deploy/jboss-web.deployer/META-INF/jboss-service.xml.

You have to import several additional packages in your plugin, at least: org.adempiere.webui.component, org.adempiere.webui.panel,org.zkoss.zk.ui and org.zkoss.zk.ui.event.

Other Possible Requirements

If we deploy plugins to a server, we should be able to choose which plugins are applied to certain situations - for example - if accounting methods (allowed under various IFRS) were plugins, then each adempiere client would need to select or configure which plugin they use for each accounting schema. Therefore, we would need to be able to have a plugin lookup field, and select the plugin and perhaps a method for each feature (similar to current class callouts).

We might want to define plugin types - where we can have say accounting method plugins, which implement accounting methods and can be selected from the accounting method field on the accounting schema tab/window. i.e. a way of filtering plugin selection to only valid types

We might need to see a list of available and installed plugins - propose available plugin list is retrieved from the repository and installed plugin list is stored in a table

We would need to configure plugins - e.g like sysconfig - suggest extending sysconfig for core / plugin - perhaps we could have a config interface which implements a config form / window in a plugin implementation (template)