1

我想在 OSGI 中创建一个抽象包。这个想法是,当我们说捆绑 Ax(x 从 1 到 9)需要通过 B 提供的服务绑定到捆绑 B 时,这可以通过制作 asbtractA 来更容易地完成(所以 Ax 扩展了 abstractA)

这里的 abstractA 是一个带有 declerative 服务文件的包。xml 文件描述了捆绑 B 的引用服务,并在相应的 abstractA 类中实现了绑定解除绑定和启动方法。

假设 Ax 有它自己的 start 方法 startx,并绑定到几个服务,所以 bundle 有他自己的 .xml 文件。

问题:是否会同时调用 start(来自 abstractBundle)和 startx?bundleAx 和 bundleabstractA 的引用服务的绑定会发生吗?

4

2 回答 2

1

虽然我当然不清楚你的具体细节,但我质疑在这里使用“继承”。在我看来,您最好使用以下任何一种:

  1. 代表团。含义:将通用功能委托给捆绑包 A 中的服务。
  2. 服务工厂解决方案。含义:通过工厂模式创建多个服务,其中工厂由捆绑 A 注册。
于 2014-07-14T11:21:25.260 回答
1

没有办法在 OSGi 中创建抽象包。当然,您可以做的是使用抽象类在捆绑包之间共享一些功能。

顺便提一句。如果您想要实现的唯一目标是共享 DS xml 文件,那么您应该查看基于注释的 DS 配置。这消除了完全编写 xml 的需要(它可以由您的注释中的 maven 插件生成)。

于 2014-07-14T09:38:00.670 回答