属性 属性描述
Bundle-Activator Bundle 的 Activator类名。
示例:
Bundle-Activator:org.riawork.demo.Activator
Bundle-Category Bundle 的分类属性描述。
示例:
Bundle-Category:Opendoc,OSGI
Bundle-Classpath Bundle 的 Classpath。
示例:
Bundle-Classpath:/bin,/lib/log4j.jar
Bundle-ContactAddress 提供 Bundle的开发商的联系地址。
示例:
Bundle-ContactAddress:ShangHai
Bundle-Copyright Bundle 的版权。
Bundle-Description Bundle 的描述信息。
Bundle-DocURL Bundle 的文档 URL 地址。
Bundle-Localization Bundle 的国际化文件。
示例:
Bundle-Localization: OSGI-INF/l10n/bundle
Bundle-ManifestVersion 定义 Bundle所遵循的规范的版本 OSGI R3 对应的值为 1,OSGI R4 对应的值为 2。
Bundle-Name Bundle 的有意义的名称。
Bundle-NativeCode Bundle 所引用的 NativeCode 的地址。
Bundle-RequiredExecutionEnvironment Bundle 运行所需要的环境,如可指定为需要 OSGI R3、Java 1.4、Java 1.3 等。
Bundle-SymbolicName Bundle的唯一标识名,可采用类似 java package名的机制来保证唯一性。
Bundle-UpdateLocation Bundle 更新时连接的 URL 地址。
Bundle-Vendor Bundle 的开发商。
Bundle-Version Bundle 的版本
DynamicImport-Package Bundle动态引用的 package。
Export-Package Bundle对外暴露的 package。
Fragment-Host Fragment 类型 Bundle 所属的 Bundle名。
Import-Package Bundle引用的 package。
Require-Bundle Bundle 所需要引用的其他的 Bundle。
另转:OSGi MANIFEST.MF 文件详解
MANIFEST.MF 文件选项
Bundle-Activator
该类用于启动和停止绑定包。在上面的示例插件中,指定了 org.eclipse.pde.internal.ui.PDEPlugin
类。该类扩展 org.eclipse.core.runtime.Plugin
,实现了 BundleActivator
接口。
Bundle-ClassPath
该属性指定要用于绑定包的 CLASSPATH。该属性可以包含对绑定包 jar 文件中目录或 jar 文件的引用。可以使用句点指明绑定包的根。在示例 Eclipse PDE 绑定包中,指定了绑定包 jar 文件中的 org.eclipse.pde.ui_3.1.0.jar。如果将插件的源版本导入工作区中,导入过程将更改绑定包 CLASSPATH 以显示为 Bundle-ClassPath:
,这允许插件的开发版本挑选已编译的绑定包类。
Bundle-Version
该属性指定绑定包的版本号。包导入和必需的绑定包规范可以包括绑定包版本号。
Export-Package
该属性指定要公共暴露给其他插件的所有包。
Import-Package
该属性指定要从必需插件中显式导入的所有包。默认情况下,必须为要启动的绑定包解析所有包。还可以将包导入指定为可选项,以支持包不存在的情况。显式导入的类在 Require-Bundle 插件中的包之前解析。
Require-Bundle
该属性指定要在给定绑定包中导入使用的绑定包及其已导出的包。指定的绑定包在显式包导入之后解析。
OSGi 规范包括的 manifest.mf 配置选项不提供 Eclipse 平台需要的所有功能。因此,Eclipse 创建者添加了多个扩展(还建议将它们包括在未来版本的 OSGi 规范中):
Export-Package
头扩展
Eclipse 具有两个 OSGi 解析器方法 —— default
和 strict
,可以使用 osgi.resolver
属性指定它们。Eclipse 还包括对 Export-Package
属性的两个扩展 —— x-internal
和 x-friends
,启用 Strict 模式时,会强制执行这两个扩展。
x-internal
该属性的默认值是 false。当使用该选项将内部包指定为 true 时,Eclipse PDE 禁止其使用。
x-friends
该选项类似于 x-internal
,但允许特定绑定包使用具有该选项的已导出包。其他绑定包被禁止。x-internal
选项优先于 x-friends
。
Eclipse-AutoStart
默认情况下,Eclipse 根据需要加载绑定包。因此,当导入绑定包包含的第一个类的绑定包需要这个类时,就会加载这些绑定包。将该值指定为 ?? 会导致 Eclipse 在启动时加载绑定包。还可以指定例外情况列表,它们是无需启动包含它们的绑定包就可以加载的类和资源。
Eclipse-PlatformFilter
该属性允许为要启动的绑定包指定必须等于 true 的条件。可以将下列信息包括在指定的表达式中:
-
osgi.nl
,表示语言
-
osgi.os
,表示操作系统
-
osgi.arch
,表示架构
-
osgi.ws
,表示窗口系统
展示如何使用该属性的一个示例是,在启动使用 SWT_AWT
桥的插件之前验证操作系统是否是 Mac OS X。(Standard Widget Toolkit(SWT)的 Mac OS X 实现当前不支持该功能。)
Eclipse-BuddyPolicy
该选项指定加载绑定包策略的类。通常,绑定包只在其内部类和从依赖绑定包中导入的内部类中具有可见性。在 Eclipse 新闻组中用来解释伙伴类加载的流行示例是 Hibernate。Hibernate 框架必须查看用户创建的而非 Hibernate 本身一部分的类和资源。这样的一种情况是当使用项目动态填充来自 Hibernate Query Language(HQL)查询的类时。默认情况下,Hibernate 将无法查看位于包含 Hibernate jar 文件的插件外部的类,而需要修改 Hibernate 插件以创建包含 Hibernate 地图不可接受的类的每个插件。幸运的是,伙伴类加载器选项 一节中介绍的伙伴类加载器选项解决了这个问题。
|
伙伴类加载器选项
首先为 Hibernate 创建插件。然后创建一个插件,其中包含与 Hibernate 有依赖关系的特定于域的类。
将下列行添加到 Hibernate 插件清单中:Eclipse-BuddyPolicy: registered 。
将下列清单属性添加到包含特定于域的类或资源的插件清单中: Eclipse-RegisterBuddy: hibernate 。
该行允许插件通过声明将自己暴露给 Hibernate 插件,而它预先并不知道这些插件。
现在,Hibernate 插件可以看到需要的类,虽然它并没有专门导入它们。
|
|
分享到:
相关推荐
元数据通常通过MANIFEST.MF文件来指定,其中包括了类路径、导出和导入包等信息。将普通的JAR转换为OSGI Bundle,可以使得软件组件化,方便管理、部署和升级。 描述中的“需要的可以下载”提示这是一个可供下载的...
1. **创建MANIFEST.MF**: OSGi bundle的元数据存储在MANIFEST.MF文件中,其中包含bundle的版本、导出包、依赖包等信息。例如,我们需要声明我们的类路径中的所有包作为导出包,以便其他bundle可以导入并使用它们。 ...
当bundle启动时,OSGI框架会解析其MANIFEST.MF文件中的元数据,识别出依赖的其他bundle,并确保这些依赖项已启动并可用。 在OSGI中,bundle的依赖关系主要通过MANIFEST.MF文件来定义。这个文件包含了bundle的基本...
1. **Bundle**:OSGi的核心单元,类似于Java的JAR文件,但包含了额外的元数据,描述了其依赖和其他模块的关系。 2. **生命周期**:每个Bundle有启动、暂停、停止和更新四种状态,便于管理和控制。 3. **服务**:OSGi...
2. **MANIFEST.MF**:MANIFEST.MF是JAR文件中的核心元数据文件,用于声明bundle的信息。例如,Export-Package字段定义了bundle对外提供的服务,Import-Package字段则指定了bundle依赖的其他包。理解并正确配置...
关于源码层面,理解OSGi的关键在于掌握其元数据描述文件——MANIFEST.MF。这个文件包含了bundle的元数据,包括版本、依赖、导出和导入的包等信息。通过编辑MANIFEST.MF,开发者可以精确控制bundle的行为。 工具方面...
要开始使用Equinox,你需要创建并配置bundle,这通常涉及到定义bundle的元数据(如MANIFEST.MF文件),以及打包相关的类和资源。 在"LocalDictQuery"这个例子中,可能是一个演示如何在Equinox环境中查询本地字典...
一个bundle通常由MANIFEST.MF文件和类文件组成,MANIFEST.MF文件定义了bundle的元数据,包括其导出和导入的包。 **4. 创建HelloWorld Bundle** 在我们的例子中,"helloworld"很可能是这个简单的示例应用的名称。...
- `HELLOWORLD.MF`是Manifest文件,它包含了关于Bundle的重要元数据,如Bundle的名称、版本、依赖和其他配置信息。 - `步骤.txt`可能是运行示例的详细步骤指南,指导用户如何配置和启动OSGi环境以及部署和运行Bundle...
每个OSGi Bundle都有一个MANIFEST.MF文件,其中定义了Bundle的基本信息,如版本、依赖和其他元数据。例如,`osgi.impl` Bundle的MANIFEST.MF可能声明了对某些库或API的依赖,并指定了Bundle的激活类。 3. **定义...
`MANIFEST.MF`文件是OSGi规范中的一个清单文件,它定义了插件的运行时属性,如插件名称、版本、唯一标识符(Bundle-SymbolicName)、激活策略以及依赖的其他插件等。例如,`Bundle-Activator`字段指定了插件启动时...
4. **配置manifest.mf**:每个bundle都有一个manifest.mf文件,用于声明bundle的元数据,包括版本、依赖关系和其他配置信息。正确配置manifest.mf对于bundle的正常运行至关重要。 5. **服务使用**:OSGi服务提供了...
在OSGI中,bundle是基本的单元,类似于普通的jar文件,但包含了一个MANIFEST.MF文件,该文件包含了关于bundle的重要信息,如元数据、依赖关系和bundle的行为。MANIFEST.MF文件使得OSGI框架能够理解并管理每个bundle...
这个库对于理解和操作OSGi环境中的bundle至关重要,因为manifest文件包含了描述bundle的关键元数据。 **OSGi Manifest文件** 在OSGi中,每个bundle都有一个名为MANIFEST.MF的manifest文件,这是bundle的核心组成...
3. **Manifest.MF**:每个bundle内部都有一个`META-INF/MANIFEST.MF`文件,它包含了关于bundle的重要元数据,如导出和导入的包、版本信息等。 4. **服务注册与发现**:OSGi中的服务可以通过服务注册表进行注册和查找...
配置MANIFEST.MF文件,声明Bundle的元数据,包括Bundle-SymbolicName、Bundle-Version等。 2. 编写代码:在项目中编写你需要的类和服务,并在MANIFEST.MF中声明导出的包(Export-Package)和依赖的包(Import-...
每个bundle都包含一个MANIFEST.MF文件,其中定义了模块的元数据,包括导入和导出的包。当bundle之间存在依赖关系时,如果没有正确声明或解析,就可能导致错误。 描述中提到的链接指向了一个博客文章,虽然内容未给...
1. **Manifest.MF**:每个bundle都有一个名为`MANIFEST.MF`的元数据文件,它包含了bundle的基本信息,如版本、依赖关系、导出和导入的包等。 2. **生命周期**:bundle有启动、暂停、停止和更新四种状态。开发者可以...
- 创建一个名为MANIFEST.MF的元数据文件,声明Bundle的元信息,如Bundle-SymbolicName、Bundle-Version等,并指定Bundle-ClassPath和Import-Package来指示依赖的其他模块。 - 编写Spring配置文件,定义Bundle中的...
在OSGi中,模块被称为Bundle,每个Bundle都是一个独立的Java应用程序单元,包含类、资源和元数据。每个Bundle都有自己的类加载器,可以加载自身的类,同时也可以通过声明依赖来访问其他Bundle中的类。 三、依赖声明...