OSGi フレームワーク (R4.1 以降) は、FrameworkFactoryAPIを使用してプログラムで開始できます。
ServiceLoader<FrameworkFactory> ffs = ServiceLoader.load(FrameworkFactory.class);
FrameworkFactory ff = ffs.iterator().next();
Map<String,Object> config = new HashMap<String,Object>();
// add some params to config ...
Framework fwk = ff.newFramework(config);
fwk.start();
OSGi フレームワークが実行中です。Frameworkextendsしているため、通常の API メソッドをすべてBundle呼び出しgetBundleContextて呼び出して、バンドルの操作、サービスの登録などを行うことができます。たとえば、
BundleContext bc = fwk.getBundleContext();
bc.installBundle("file:/path/to/bundle.jar");
bc.registerService(MyService.class.getName(), new MyServiceImpl(), null);
// ...
最後に、フレームワークがシャットダウンするのを待つ必要があります。
fwk.stop();
fwk.waitForStop(0);
繰り返しますが、このアプローチは、クラスパスにフレームワーク JAR を配置するだけで、Equinox や Felix を含むすべてのOSGi フレームワークで機能します。