什么是OSGi捆绑包结构?

时间:2009-12-02 07:02:07

标签: localization jar osgi bundle

我是OSGi标准的新手。我想更多地了解bundle包文件的结构。

  1. 找到这个OSGi-INF文件夹,提到了关于l10n和权限的规范,不知道在哪里定义了OSGI-INF文件夹的使用方法?我可以把其他东西放进去吗?
  2. 在哪里存储捆绑包引用的jar文件?
  3. 除了OSGi-INF和OSGi-OPT之外还有OSGi标准定义的文件夹吗?

3 个答案:

答案 0 :(得分:3)

您可以查看OSGi Core规范。您可以从OSGi Alliances website下载它(它实际上非常易读)。例如,对于规范的4.2版,第3.2章详细讨论了bundle及其结构。正如在另一个答案中已经提到的,bundle实际上是普通jar文件,其Manifest包含一些特殊的清单头。

其中一些标题还允许您指定某些文件的位置,例如在3.2.1.11节中,定义了 Bundle-Localization 标头:

  

Bundle-Localization标头   包含捆绑中的位置   可以找到本地化文件的位置。   默认值为   OSGI-INF / L10N /束。翻译是   因此默认情况下   OSGI-INF /本地化/ bundle_de.properties,   OSGI-INF /本地化/ bundle_nl.properties,   等

答案 1 :(得分:2)

唯一的OSGi包元素是META-INF / MANIFEST.MF文件中特定于包的条目。

OSGi-INF和OSGi-OPT都是可选的。

请查看此内容,了解OSGi捆绑包的概述: http://swik.net/Spring/Interface21+Team+Blog/Creating+OSGi+bundles/

这描述了DS(声明性服务)如何使用OSGi-INF文件夹: http://www.eclipsezone.com/eclipse/forums/t97690.html

答案 2 :(得分:0)

OSGi包与普通JAR文件没什么区别,除了JAR清单中的一些必需条目,META-INF/MANIFEST.MF文件(如James已经指出的那样)。

所有其他文件和目录只是约定和最佳做法,例如分别由SpringMaven使用的文件夹META-INF/springMETA-INF/maven

某些OSGi服务定义了与OSGI-INF目录的使用类似的约定。据我所知,规范中没有一个地方列出了所有这些约定。您可以打开specs并搜索“OSGI-INF”以查找所有事件:-)不要担心它们不会太多。