Plugins

Modularity

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">
</plugin>

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

package blinkie
 
import com.razie.pub.agent._
import com.razie.pub.lightsoa._
import com.razie.pub.draw._
import com.razie.pub.base._
 
/** 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 com.razie.pub.plugin.Plugin {
 
  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 -

Debugging

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