From OpenNMS
Feature Description
The current implementation of opennms is provided as a monolithic daemon that is invoked via a custom classloader and a simple recursive jar parser, the system is booted up as one single unit in a JVM and is relying on a full installation of opennms being provided as a distribution. The loading process is very similar to that of an EE container or servlet container. The project intends to address this by modifying the packaging, deployment, dependencies and artifact process to produce a set of osgi bundles that are deployable on any of the open source osgi containers such as Felix, Equinox or Knoplerfish.
By providing this we will achieve a modular system where a complete opennms daemon can be cut down to a few set of core bundles, supporting bundles and additional feature bundles. This will enable us to provision new functionality to a running system, refresh/redeploy or update libraries as well as run multiple versions of the same bundles.
An osgi bundle will then move an opennms component from being a dependency jar to a first class osgi citizen that abides to the lifecycle and rules of an osgi environment. A suitable first draft runtime environment is being suggested as apache felix karaf/servicemix 4, this already is an established container that is
- Easy to re-package
- Provides an SSH daemon
- Provides on the fly deployment via files, war files, jar files, spring contexts, apache blueprint contexts, maven2 repositories and apache felix obr locations.
- Contains a fully integrated logging implementation
- provides full webapp support for monolithic legacy applications
- Is JMX configurable
- Integrates to Camel/CXF/ActiveMQ and other commonly used 'SOA' solutions.
- It has already adressed JAXB/Jax-ws compatibility issues between java 1.5 / 1.6
- Has JAAS implementations for all components of the container runtime
- JDNI support
- Integrates nicely with felix admin console for a webinterface to deployed bundles and features
- provides an application build mechanism, features.
Strategy
- Provide a base apache-felix-maven plugin setup for dependency usage
- Version all dependencies and imports
- Homogenize dependencies
- Move the bootstrapper code into a BundleActivator
Acceptance Criteria
A running opennms daemon implementation containing all aspects of the core distribution besides the web-application.
- 1-1 functionality
- No changes to existing configuration methods that are user facing.
- The ability to load and unload core opennms components such as eventd






