可以使用FrameworkFactory
API以編程方式啓動任何OSGi框架(R4.1或更高版本):
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框架現在正在運行。由於Framework
擴展Bundle
你可以打電話getBundleContext
,並呼籲所有的正常API的方法來操作束,註冊服務等。例如
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放在類路徑上即可。
我已經得到了大部分,並考慮過從http url加載 - 你碰巧知道如何從maven加載包? – javamonkey79 2011-01-12 21:30:59
@ javamonkey79我從未使用過maven。但是,https://groups.google.com/group/spring-osgi/web/maven-url-handler?pli=1看起來有保證 – KitsuneYMG 2011-01-12 21:32:55