如何在 Scala 的 Felix 中运行 OSGi 蓝图?

Posted

技术标签:

【中文标题】如何在 Scala 的 Felix 中运行 OSGi 蓝图?【英文标题】:How can I run OSGi blueprint in Felix in Scala? 【发布时间】:2016-01-14 20:16:23 【问题描述】:

我能够让 OSGi 蓝图在 Karaf 中工作,但我不明白如何在 Apache Felix 中执行此操作,或者我的问题也可以定义为如何在普通 OSGi 中使用 OSGi 蓝图?

我在https://github.com/PhilAndrew/sbt-osgi-felix-akka-blueprint-camel 使用https://github.com/doolse/sbt-osgi-felix 做了一个示例,其中 Akka 正在工作,但 Blueprint 和 Camel 尚未工作。

这个问题可能对Is Apache Aries running in Felix?有帮助

【问题讨论】:

【参考方案1】:

它没有启动蓝图,因为您的包的代码实际上并不依赖蓝图中的任何类,因此您需要在清单中添加“Require-Bundle”标头:

requireBundle := Seq("org.apache.aries.blueprint")

或者将需要启动的bundle添加到run的osgiDependencies中:

osgiDependencies in run := bundleReqs("org.apache.aries.blueprint.core", 
"org.apache.aries.proxy")

【讨论】:

感谢您尝试帮助我,这并没有使蓝图开始,我该如何推理才能使其工作? 尝试以下依赖项,它们对我有用:osgiDependencies in run := bundleReqs("org.apache.aries.blueprint.core", "org.apache.aries.proxy") 非常感谢 Jolse,你怎么知道的?我更新了我的项目,这使得 Camel 工作。【参考方案2】:

Apache Karaf 也在 felix 上运行。因此,在大多数情况下,您只需要安装正确的捆绑包,并且如果您遇到包使用约束违规,可能还需要执行必要的系统包导出。

检查 karaf 安装的内容并尝试执行相同操作。

【讨论】:

以上是关于如何在 Scala 的 Felix 中运行 OSGi 蓝图?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用felix实现osgi

如何在 Apache Karaf(Felix 框架)中获取依赖链

如何从代码中启动和使用 Apache Felix?

如何在 apache felix 上实现异步处理?

在 Apache Felix OSGI 中安装和运行 Web 管理控制台

osgi + felix example1编写