【问题标题】:Installing a fragment requires a refresh on the host, how can this be avoided?安装 Fragment 需要在主机上刷新,如何避免?
【发布时间】:2011-09-02 09:04:40
【问题描述】:

我有两个捆绑包:捆绑包 A 和捆绑包 B,它们被配置为捆绑包 A 的片段,使用: 片段主机:

每当我安装包 B 时,它都无法启动 (INSTALLED),因此无法将其附加到包 A。

此时,当我检查包 A 的状态时,我发现它仍然无法将包 B 识别为其片段。

如果我刷新包 A,它会解决问题 - 包 B 切换到 RESOLVED 并能够将自己附加到包 A,包 A 将包 B 识别为其片段,并且一切都按预期工作。

我的问题是如何避免这种刷新,即一旦安装了捆绑包 B,它就应该将自己附加到已经处于活动状态的主机。

谢谢。

【问题讨论】:

    标签: osgi osgi-fragment


    【解决方案1】:

    如果不刷新就无法做到这一点,而且它也在 OSGI 规范中 - 要正确附加片段包,必须将主机包的从 INSTALLED 转换为 RESOLVED。请参阅 4.3 OSGi 核心规范的第 3.14 节。

    【讨论】:

    • 我是这么想的 :( 问题是即使容器重启似乎也不能解决它,只能在特定的捆绑主机上刷新。应该是这样吗?
    • AFAIK 是的,因为已解析的包/捆绑包之间的连接是持久的。您需要手动执行此操作,但您可以通过编程方式执行此操作。
    • 不是示例代码,但对于 OSGi 4.3 和更高版本的框架,请查看 FrameworkWiringBundleWiring 接口以及 4.3 OSGi 规范的第 7.6 节。对于 4.3 之前的框架,请查看 PackageAdmin 服务。
    • 谢谢。通过 PackageAdmin 获取主机包并更新它似乎已经解决了它
    猜你喜欢
    • 2017-07-30
    • 2017-06-12
    • 2015-05-29
    • 2016-07-04
    • 1970-01-01
    • 2020-01-02
    • 2021-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多