Due to increasing demand for a common interface as well as extensibility for our core software at Adaptive Computing, we have developed a single point of integration using Grails and Gradle in the form of a RESTful web application called Moab Web Services (MWS). As a part of these efforts, we developed a plugin platform that allows us to dynamically modify the behavior of MWS, even after being deployed on a client system and without restarting the application. We tackled numerous obstacles and questions during the development of the platform including JVM classloading, plugin services, plugin conventions, inter-plugin communication, plugin development, configuration and metadata, testing using the Spock framework, exposing plugin web services, and management via a web interface and RESTful API.
In this presentation, we will discuss these problems, how we overcame them, and how the solutions could be applied in more general cases.