Safari Books Online is a digital library providing on-demand subscription access to thousands of learning resources.
As we mentioned back in chapter 3, you face a dilemma when you want to use a bundle you’ve created. You need a BundleContext object to install your bundle into the framework, but the framework only gives a BundleContext object to an installed and started bundle. So you’re in a chicken-and-egg situation where you need an installed and started bundle to install and start your bundle. You need some way to bootstrap the process.
Traditionally, OSGi framework implementations from Apache Felix, Equinox, and Knopflerfish devised implementation-specific means for dealing with this situation. This typically involved some combination of auto-deploy configuration properties for each framework implementations’ custom launchers and/or shells with textual or graphical interfaces. These mechanisms worked reasonably well but weren’t portable across framework implementations.