【问题标题】:Interrogate OSGi/Spring-DM Framework For A Bundle's Dependencies询问 OSGi/Spring-DM 框架以获取 Bundle 的依赖项
【发布时间】:2016-01-01 09:00:24
【问题描述】:

我在 Karaf (4.0.1) 实例中使用 Spring-DM,并尝试启动几个启用 Spring-DM 的捆绑包(我不是其作者)。

这些包有几个依赖项/服务依赖项,它们将由 Spring-DM 注入,我目前正在完成所有依赖项,但是这项任务既费力又耗时。

我目前使用几个选项来确定依赖关系:

  1. 检查包的“META/Spring”文件夹并检查其中的 XML 文件。
  2. 安装包并检查 Karaf 日志中的包失败消息。

这种方法对我来说不是很有效,我想知道是否有一种方法可以询问 OSGi 框架(在本例中为 Karaf)或 Spring-DM 本身并查询特定捆绑包正在等待实现什么.

我可以编写一个 Karaf 命令行命令来允许我执行此操作,但我不知道如何询问 Spring-DM 或 Karaf 以获取信息。

有什么建议吗?

【问题讨论】:

    标签: osgi apache-karaf spring-dm


    【解决方案1】:

    您不必研究 spring DM。第一步是确保所有包导入都正常工作。最简单的方法是查看捆绑包的 Manifest 以安装或使用 bundle:headers。安装包后,您可以使用 diag 命令检查它等待的服务。

    【讨论】:

    • 如果包处于“等待”状态,diag 只报告它正在等待,而不是它在等待什么。我要么必须在日志中滚动包以查看捆绑包的安装时间并查找“信息”日志(蓝色文本),要么等待等待“超时”,即使这样,diag 也不会报告确切的失败。为此,我必须检查日志。如果我可以通过 API 调用(如果有的话)简单地询问捆绑 X 正在等待什么,那将是一件好事。如果存在这样的 API,我可以创建一个 Karaf 命令。
    • “等待”状态,通常表示它正在等待服务。类似于 std 的 GracePeriod。蓝图服务。所以实际上要确保所有这些要求也得到满足。当前的 diag 命令已经显示了蓝图包正在“等待”什么,因此也许这也可以应用于 spring-dm 包。
    • diag 命令中已经支持 spring dm 状态事件。包 org.apache.karaf.bundle.springstate 应该提供此信息。如果您安装了这个捆绑包,但没有看到等待的原因,那么这是一个错误。你能在 karaf 开一个问题吗?我可以调查一下。
    • 好的,我创建了一个问题。直到今天我才看到你的回复。
    • 我不关注所有的 karaf 问题。因此,如果您创建一个更好的帖子链接,以便我更快地看到它。
    猜你喜欢
    • 1970-01-01
    • 2013-01-12
    • 2013-02-01
    • 2013-11-26
    • 1970-01-01
    • 2014-09-09
    • 2013-11-19
    • 2012-04-20
    • 1970-01-01
    相关资源
    最近更新 更多