试图在OSGI中创建一个抽象包

时间:2014-07-14 08:16:53

标签: java inheritance osgi declarative-services

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

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

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

问题:是否会启动(来自abstractBundle)和startx?是否会发生bundleAx和bundleabstractA的引用服务的绑定?

2 个答案:

答案 0 :(得分:1)

无法在OSGi中创建抽象包。你可以做的当然是使用抽象类来分享捆绑包之间的一些功能。

顺便说一下。如果您想要实现的唯一目的是共享DS xml文件,那么您应该查看DS的基于注释的配置。这样就不需要完全编写xml(它可以通过maven插件从你的注释中生成)。

答案 1 :(得分:1)

虽然我当然不清楚您的具体细节,但我质疑继承的使用情况'这里。在我看来,使用它们可能会更好:

  1. 团。含义:将通用功能委托给bundle A中的服务。
  2. 服务工厂解决方案。含义:通过工厂模式创建多个服务,工厂通过工具包A注册。