Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 管理大型OSGi应用程序_Java_Eclipse_Maven 2_Osgi - Fatal编程技术网

Java 管理大型OSGi应用程序

Java 管理大型OSGi应用程序,java,eclipse,maven-2,osgi,Java,Eclipse,Maven 2,Osgi,我有一个大型的、不断增长的OSGi应用程序,它有许多捆绑包。我很想知道管理这类应用程序的最佳方法。目前,我正在使用Eclipse和Maven,但尽管这对于构建捆绑包(通过Maven捆绑包插件)非常有用,但到目前为止,管理整个应用程序并不容易 我想做的是要么有一个运行配置,要么有一个pom.xml可以启动,整个应用程序/项目可以构建和启动。另外,我希望有一些对调试有好处的东西 我听说过PAX构造,并在Eclipse中安装了它,但到目前为止,它几乎没有什么帮助(也许我没有正确地使用它) 我敢肯定,有

我有一个大型的、不断增长的OSGi应用程序,它有许多捆绑包。我很想知道管理这类应用程序的最佳方法。目前,我正在使用Eclipse和Maven,但尽管这对于构建捆绑包(通过Maven捆绑包插件)非常有用,但到目前为止,管理整个应用程序并不容易

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

我听说过PAX构造,并在Eclipse中安装了它,但到目前为止,它几乎没有什么帮助(也许我没有正确地使用它)

我敢肯定,有一些人拥有正确管理的大型OSGi应用程序。任何可以分享的建议都会大有帮助

谢谢,,
Stephen

可以通过进行运行配置。它允许您选择OSGi平台实现,指定概要文件(为某些角色预先打包的捆绑包集,例如
web
log
ds
,等等),并具有良好的资源调配支持,例如,它可以从Maven存储库加载捆绑包。因此,您可以使用如下的运行配置

--platform=felix
--log=INFO
--profiles=scalamodules,ds,config,log
mvn:com.my/bundle/1.0.1-SNAPSHOT@update
# other bundles

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

我对OSGi很陌生,但是

难道不能以这样的方式使用OBR服务吗 您将拥有一个需要捆绑包的OBR存储库文件 让OBR服务找出依赖项并为您填充OSGIhost?

好吧

这一切都取决于“管理”应用程序是什么意思

对于开发时的启动、构建和调试,EclipseIDE应该完全符合要求

马文。。。我不能为它说话,因为我自己从来没有用过

我们有一个相当大的基于eclipse的应用程序(实际上有几个),在开发方面,除了eclipse及其集成的SCM之外,我们没有使用任何特殊的东西

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

现在,工作区的设置在所有依赖项和中间构建步骤中都有点失控,因此我们正在研究如何管理目标平台和工作区资源的物化

如果这一切顺利的话,我们很可能也会和巴基一起搬到大楼里去——看起来很有希望


(我对PAX没有任何经验,但乍一看,它看起来也很有希望……

我认为目前这个领域的支持率很低。OSGI并没有真正定义任何关于部署或打包的内容,所以这取决于其他框架(例如Eclipse)自己的方式

如果您正在构建一个RCP(eclipsebase)应用程序,那么Eclipse系统将完成所有这些工作,一直到创建exe等等。但是构建主要在Eclipse工作区上完成,无头构建更为棘手。Tycho项目正试图通过加入Maven和Eclipse构建周期来使这一点更加合理,但是它仍然关注RCP应用程序,而不是通用OSGI

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

我们定义了一个POM项目,其中列出了应用程序中包含的所有捆绑包。这个项目所做的只是列出引用——让我们称之为“bundle list”项目

然后,我们使用pax provision以开发模式运行项目。这是通过使“bundle list”pom成为pax项目(通常在“provision”文件夹中)的provisioning pom的父级来实现的。然后,当您启动pax时,它使用该项目中的捆绑包列表来启动OSGI。“bundle list”项目中的bundle引用必须标记为“provided”作用域,才能正常工作

然后,为了创建一个发行版,我们有另一个项目。此项目还将“捆绑列表”项目作为其父项目。该项目使用各种插件创建发行版,包括下载捆绑jar。发行版包括启动OSGI的脚本,但这些脚本是手工编写的,这里没有pax系统

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