Embed Concierge in your Java application

Since OSGi v4.2, a standard Framework Launch API was specified. This mechanism can also be used to embed and launch Concierge within your own Java application.

Constructing the framework

The framework launching API uses the Java ServiceLoader mechanism to load a FrameworkFactory. When the Concierge .jar is available on the classpath, this will give you a reference to the Concierge framework factory. Create a new instance of the framework by calling newFramework(), which accepts a map of properties you optionally want to provide to the framework. Finally start the framework by calling start() on the newly created instance.

// Load a framework factory
FrameworkFactory frameworkFactory = ServiceLoader.load(FrameworkFactory.class).iterator().next();

// Create a framework
Map<String, String> config = new HashMap<String, String>();
// TODO: add some config properties
Framework concierge = frameworkFactory.newFramework(config);

// Start the framework
concierge.start();

Starting and stopping bundles

Once you have created and started the Framework instance, you can interact with the framework by getting its BundleContext:

BundleContext context = concierge.getBundleContext();
Bundle shell = context.installBundle("file:org.eclipse.concierge.shell-5.0.0.jar"));
shell.start();

Stopping the framework

Most likely the framework should run during the whole application lifetime. Often, the signal to stop the application will come from an OSGi bundle. You can handle the framework shutdown in your code, for example:

try {
    concierge.waitForStop(0);
} finally {
    System.exit(0);
}