将OSGI DS组件后移到OSGI R4

时间:2016-11-15 07:19:06

标签: glassfish osgi declarative-services

我有一个为Apache Karaf 4.0.5开发的组件。然而,事实证明它需要部署在glassfish 4上,它基于较旧版本的Felix。我在尝试部署它时收到此消息:

missing requirement [319.0] osgi.extender; (&(osgi.extender=osgi.component)(version>=1.3.0)(!(version>=2.0.0)))

但是,我的pom文件没有显示对osgi.component的任何显式依赖。我想我必须使用一些OSGI R5(或R6?)特定的功能,但我不知道哪个会导致这个错误。

我如何说服glassfish接受我的捆绑包,或更改捆绑包的build / pom,以便在尝试使用依赖于R5或更高版本的OSGI功能时收到警告?

1 个答案:

答案 0 :(得分:2)

您可能正在使用最新版本的bnd来生成捆绑包及其元数据。当你的捆绑包有DS组件并且你需要DS 1.3中的新内容(如字段注入)或者你使用的是最新版本的bnd时,Bnd将生成对osgi.component扩展器(这是DS)的要求。

您可以使用bnd指令禁用捆绑中要求的生成:

-dsannotations-options: norequirements