示例:OSGi 组合捆绑软件清单文件
组合捆绑软件会将共享的捆绑软件组合到聚集中。 组合捆绑软件在组合捆绑软件清单文件 META-INF/COMPOSITEBUNDLE.MF中进行了描述。 此清单文件将列示直接包含在组合捆绑软件中的 OSGi 捆绑软件以及同一个 EBA 文件与组合捆绑软件一起托管的引用捆绑软件或同一个捆绑软件存储库中的捆绑软件。
组合捆绑软件向应用程序提供特定版本的一个或多个包。 因此,组合捆绑软件清单中的所有版本都是精确的。
Eclipse 工具为清单文件提供了方便的编辑器。
以下是一个示例组合捆绑软件清单文件,
META-INF/COMPOSITEBUNDLE.MF:Manifest-Version: 1.0
CompositeBundle-ManifestVersion: 1
Bundle-Name: Blog Application
Bundle-SymbolicName: com.ibm.ws.osgi.example.Blog
Bundle-Version: 1.0
CompositeBundle-Content:
com.ibm.ws.osgi.example.blog;version="[1.0,1.0]",
com.ibm.ws.osgi.example.blog.persistence;version="[1.0,1.0]"
Import-Package: com.ibm.ws.other.pkge;version=1.0.0
Export-Package: com.ibm.ws.osgi.example.blog;version=1.0.0
CompositeBundle-ExportService:
com.ibm.ws.osgi.example.blog.BloggingService;filter="(blog.type=community)"
CompositeBundle-ImportService:
com.ibm.ws.osgi.example.auth.UserAuthService组合捆绑软件清单文件中的元数据包含以下头:
- Manifest-Version
- 清单格式的版本号。
- CompositeBundle-ManifestVersion
- 此组合捆绑软件清单所遵循的组合捆绑软件清单版本。
- Bundle-Name
- 组合捆绑软件的人类可读的名称。
如果未指定值,那么缺省值是组合捆绑软件符号名称。
- Bundle-SymbolicName
- 唯一地标识组合捆绑软件的名称。 此名称遵循与 OSGi 捆绑软件中 Bundle-SymbolicName 头相同的模式。 该值不得与组合捆绑软件(CompositeBundle-Content 头中列示的)中任何捆绑软件的 Bundle-SymbolicName 的值相同。
- Bundle-Version
- 唯一地标识组合捆绑软件版本的版本号。
- CompositeBundle-Content
- 组合捆绑软件中的捆绑软件列表。 所有的捆绑软件都必须可用于部署,并且必须包含在 .cba 文件中或存在于可用捆绑软件存储库中。 捆绑软件必须具有确切的版本号。 如果您需要相同的组合捆绑软件,但需要其不同版本的内容,那么需要拥有组合捆绑软件的不同版本,每个用途一个版本。
- Import-Package
- 组合捆绑软件要导入的软件包的列表。 此列表是根据组合捆绑软件中个别捆绑软件清单中的导入软件包列表开发的。
- 如果一个捆绑软件清单指定了一个导入软件包,并且组合捆绑软件中的另一个捆绑软件中包含相同的软件包,那么该组合捆绑软件不需要导入该软件包。
- 如果组合捆绑软件中的捆绑软件指定了在组合捆绑软件中唯一的可用导入软件包,那么该软件包必须作为导入软件包列示在组合捆绑软件清单中。
- Export-Package
- 该软件包列表是要对共享捆绑软件空间提供的组合捆绑软件的内容。注: 组合捆绑软件可以从组合捆绑软件中包含的捆绑软件 JAR 文件导出包,前提是该包也列示在所包含捆绑软件的捆绑软件清单文件中的 Export-Package 头中。 但是,在组合捆绑软件清单文件的 Export-Package 头中为该软件包指定的属性和伪指令必须与在包含的捆绑软件的清单文件中指定的完全匹配,否则将不会导出该软件包。
- CompositeBundle-ExportService
- 服务接口名称和可选过滤器的列表,其标识组合捆绑软件中存在并且可以导出以在组合捆绑软件外部使用的服务。 如果导出的服务实现的接口在组合捆绑软件外部可视,那么可以在组合捆绑软件外部使用这些接口。格式为以逗号分隔的服务列表,采用服务接口名称的形式,后跟特性或伪指令。 CompositeBundle-ExportService 头具有以下属性:
- 过滤器
- OSGi 服务过滤器。
- CompositeBundle-ImportService
- 服务接口名称和可选过滤器的列表,其标识组合捆绑软件的内容要从组合捆绑软件外部使用的服务。 必须至少有一个这样的服务在运行时存在。格式为以逗号分隔的服务列表,采用服务接口名称的形式,后跟特性或伪指令。 CompositeBundle-ImportService 头具有以下属性:
- 过滤器
- OSGi 服务过滤器。