以编程方式将Bundle部署到OSGI运行时

时间:2015-04-24 13:22:26

标签: java eclipse osgi eclipse-rcp equinox

我有一个系统设置,我在服务器端应用程序和Eclipse RCP应用程序中运行Eclipse Equinox。我的目标是在工作区中插入一个插件并将其部署到服务器端应用程序中,我不确定如何去做。

我知道OSGI支持运行时捆绑安装但是我必须先将我的工作区项目编译成jar吗?我是否可以在Eclipse Runtime中使用API​​来说..installBundle(String pathToJar or pathToProject)

1 个答案:

答案 0 :(得分:0)

这是我在eclipse equinox上测试的一个例子。如果" plugins" 是包含所有osgi包的文件夹的名称,则从那里安装和启动包的方法是:

void installAndStartBundle(String bundlName) throws BundleException{
    BundleContext bundlecontext = FrameworkUtil.getBundle(this.getClass()).getBundleContext();
    Bundle b = bundlecontext.installBundle("file:plugins" + File.separator + bundleName);
    b.start();
}

其中 bundleName 是可部署包的jar扩展名。

这相当于osgi控制台的说明

install file:plugins/<bundle name>.jar
start <bundle id>

通常,您可能希望将Apache Felix File Install视为更强大的选项。