管理大型OSGi应用程序

时间:2009-08-05 15:08:57

标签: java eclipse maven-2 osgi

我有一个不断增长的大型OSGi应用程序,其中包含许多捆绑包。我很想知道管理这种类型应用程序的最佳方法。目前,我正在使用Eclipse和Maven,但是虽然这对于构建bundle非常有用(通过maven-bundle-plugin),但到目前为止,管理整个应用程序并不容易。

我想要做的是要么启动ONE运行配置,要么启动ONE pom.xml,并且可以构建和启动整个应用程序/项目。另外,我想有一些适合调试的东西。

我听说过PAX Construct并将它安装在Eclipse中,但到目前为止它没有什么帮助(也许我没有正确使用它)。

我确信有些人正在使用正确管理的大型OSGi应用程序。任何可以分享的建议都会有很大的帮助。

谢谢你, 斯蒂芬

4 个答案:

答案 0 :(得分:1)

可以通过Pax Runner进行运行配置。它允许您选择OSGi平台实现,指定配置文件(某些角色的预打包捆绑集,例如weblogds等等,并且具有良好的配置支持,实例,它可以从Maven存储库加载包。因此,您可以使用

之类的运行配置
--platform=felix
--log=INFO
--profiles=scalamodules,ds,config,log
mvn:com.my/bundle/1.0.1-SNAPSHOT@update
# other bundles

如果您的应用程序非常大或者您有不同的应用程序,那么也可以创建自己的配置文件。

答案 1 :(得分:1)

嗯...

这一切都取决于“管理”应用程序的意思。

对于开发时间,构建和调试 - Eclipse IDE应该完全符合要求。

Maven ......我不能说话,因为我自己从未使用过它。

我们有一个非常大的基于eclipse的应用程序(实际上是几个),在开发方面我们除了Eclipse之外我们没有使用任何特殊的东西,而且它是集成的SCM。

在cc构建服务器中,我们还使用无头eclipse进行构建和打包。

现在,随着所有依赖项和中间构建步骤,工作区的设置已经失控了,因此我们正在调查Buckminster以管理目标平台和工作区资源的实现。

如果能够实现这一目标,我们可能会继续与Bucky一起建设 - 这看起来很有希望。

(我对PAX没有任何经验,但一眼看上去也很有希望......)

答案 2 :(得分:0)

我是OSGi的新手,但是,

不可能以这样的方式使用OBR服务 你会有一个需要捆绑的OBR存储库文件 让OBR服务找出依赖关系并为您填充OSGIhost?

答案 3 :(得分:0)

我认为这个领域目前支持得很差。 OSGI并没有真正定义任何有关部署或打包的内容,因此可以通过自己的方式来实现其他框架(例如Eclipse)。

如果你正在构建一个RCP(Eclipse基础)应用程序,那么eclipse系统会完成所有这些工作,直到创建exes等。但是构建主要在Eclipse工作区完成,无头构建更加棘手。 Tycho项目试图通过加入Maven和Eclipse构建周期来使这更加明智,但它仍然专注于RCP应用程序而不是通用OSGI。

如果你没有做RCP,这也是我的情况,那么你可能不得不推出自己的解决方案,因为我还没有找到任何通用的解决方案。以下是我们所做工作的概述:

我们定义了一个POM项目,列出了应用程序中包含的所有bundle。所有这个项目都列出了引用 - 我们称之为'bundle-list'项目。

然后,我们使用pax provision在开发模式下运行项目。这是通过将'bundle-list'pom作为pax项目的供应pom的父项(通常在'provision'文件夹中)来实现的。然后,当您启动pax时,它使用该项目中的bundle列表来启动OSGI。 “bundle-list”项目中的bundle引用必须标记为“提供”范围,以便它可以工作。

然后,为了创建分发,我们有另一个项目。该项目还将'bundle-list'项目作为其父项。该项目使用各种插件来创建分发,包括下载捆绑jar。该发行版包括启动OSGI的脚本,但这些都是手写的,这里没有pax系统。

这对于我们将捆绑列表保存在一个地方很有效,但是仍然有很多手写脚本,并且在两个系统之间存在共享配置的问题 - 例如配置文件,捆绑启动等级等。