OSGi包的自动更新机制

时间:2014-12-11 12:12:43

标签: osgi auto-update equinox osgi-bundle

我正在寻找Equinox环境中的自动更新机制。 我正在开发使用远程服务的bundle。所以我有多个客户互相沟通 现在我正在寻找一种在Eclipse中部署它时自动安装新版本Bundle的方法 目前我正在采取以下方式:

  • 增加Versionnumber
  • 在eclipse中部署
  • 启动脚本以将捆绑包同步到我的所有客户端
  • 在每个客户端上:卸载旧版本,安装新版本。

但我想这样做,这将为我节省很多工作:

  • 增加Versionnumber
  • 在eclipse中部署
  • 启动脚本
  • 每个客户端都会自动卸载旧版本并安装并启动新版本。

我已经尝试了部分工作的Felix Fileinstaller。问题是,Fileinstaller没有卸载旧版本并且没有自动启动Bundle。 我也遇到了问题,一段时间后我的加载目录中有很多Bundleversions,当我重新启动环境时,每个bundle都安装了。

1 个答案:

答案 0 :(得分:1)

如果你使用Equinox,你应该看一下p2。它是Eclipse中用于更新Eclipse和安装新Eclipse包的供应机制。它也适用于无头服务器环境。

我们在Eclipse Gyrex项目中使用p2来执行自动安装。过程如下:

  • 在Eclipse中手动应用版本控制(增加版本号)
  • 将捆绑包导出到p2存储库(来自Eclipse或使用Tycho / Maven)
  • 将p2存储库部署到Web服务器
  • 客户端自动安装更新

每个客户端定期检查p2存储库以获取更新并安装任何可用的更新。 p2存储库在内部Web服务器上可用。

OSGi还有其他选择。例如,OBR是OSGi联盟推荐的方法。不幸的是,p2还不支持OBR。但是如果您使用的是Apache Felix,那么您应该能够将OBR用于您的目的。