任何 OSGi 框架(R4.1 或更高版本)都可以使用 API 以编程方式启动:FrameworkFactory
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 框架现在正在运行。由于扩展,您可以调用和调用所有正常的API方法来操作捆绑包,注册服务等。例如Framework
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);
重申一下,这种方法适用于任何OSGi框架,包括Equinox和Felix,只需将框架JAR放在类路径上即可。