Until we move to OSGI, there's a very basic plugin support. Pack your code and place it in the /plugins folder.

Each plugin has a plugin_myname.xml file and an optional plugin_myname.jar file. This is a typical plugin file:

<plugin classname="blinkie.BlinkiePlugin">

The typical plugin class looks like (registers a simple service that says "hello" instead of "hi"):

package blinkie
/** simplest service example */
@SoaService (name="blinkie", descr="a simple service", bindings=Array("http"))
class BlinkieService extends AgentService {
   @SoaMethod (descr="well, it says \"hello\"")    
   def sayhi (out:DrawStream) = out write "hello"
/** plugin lifecycle class */
class BlinkiePlugin extends {
  override def loadphase2 = Agent.instance() register new BlinkieService

For now you have to include any eventual libraries needed by your plugin into the jar itself…sorry. Make sure you don't duplicate what's in MUTANT/lib -


These events in the log should clarify any issues: INIT_PLUGIN and FOUND_PLUGINS

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License