The Nimble Resolver not only understands OSGi bundle dependencies, but crucially the dependencies between an artifact and its runtime environment. Rather than including all possible runtime services that might be needed; Nimble dynamically loads them as required and cleanly removes them and their supporting infrastructure once the business component is unloaded.
For example the Nimble Resolver:
- Dynamically loads required Scala libraries in response to the installation of a Scala component.
- Dynamically loads a servlet engine implementation in response to an installed WAR component.
- Dynamically loads the GlassFish JEE container in response to an installed EAR component.
Nimble Resolver policies provide additional control of what is deployed. For example, the choice of servlet engine (i.e. Tomcat or Jetty) is determined by a resolution policy associated with the installed WAR artifact.