`
snoopy7713
  • 浏览: 1129724 次
  • 性别: Icon_minigender_2
  • 来自: 火星郊区
博客专栏
Group-logo
OSGi
浏览量:0
社区版块
存档分类
最新评论

OSGi 清单选项

    博客分类:
  • OSGi
阅读更多
Manifest-Version: 1.0
Bundle-Name: %name
Bundle-SymbolicName: org.eclipse.pde.ui; singleton:=true
Bundle-Version: 3.1.0
Bundle-ClassPath: org.eclipse.pde.ui_3.1.0.jar
Bundle-Activator: org.eclipse.pde.internal.ui.PDEPlugin
Bundle-Vendor: %provider-name
Bundle-Localization: plugin
Require-Bundle: org.eclipse.core.runtime,
 org.eclipse.ui.ide,
 org.eclipse.ui.views,
 org.eclipse.jface.text,
 org.eclipse.ui.workbench.texteditor,
 org.eclipse.ui.editors,
 org.eclipse.ant.core,
 org.eclipse.core.resources,
 org.eclipse.debug.core,
 org.eclipse.debug.ui,
 org.eclipse.jdt.core,
 org.eclipse.jdt.debug.ui,
 org.eclipse.jdt.launching,
 org.eclipse.jdt.ui,
 org.eclipse.pde,
 org.eclipse.pde.build,
 org.eclipse.search,
 org.eclipse.team.core,
 org.eclipse.ui,
 org.eclipse.update.core,
 org.eclipse.ui.forms,
 org.eclipse.ant.ui,
 org.eclipse.jdt.junit,
 org.eclipse.ui.intro,
 org.eclipse.ui.cheatsheets,
 org.eclipse.update.configurator,
 org.eclipse.help.base
Bundle-ManifestVersion: 2
Eclipse-AutoStart: true
Export-Package: org.eclipse.pde.internal.ui;x-internal:=true,
 org.eclipse.pde.internal.ui.build;x-internal:=true,

 . . .

 org.eclipse.pde.ui,
 org.eclipse.pde.ui.internal.samples;x-internal:=true,
 org.eclipse.pde.ui.templates
 

 

      各种插件导入现在被指定为必需的绑定包,* 包导出已经替换为显式导出的包列表。

插件级的依赖关系改为需要显式导出和导入包的依赖关系,当 Eclipse 宣布这个消息时,曾引起大量骚动。主要抱怨的是缺乏已经存在于 Eclipse 早期版本中的 <export name="*"/> 的替代物。但是,该省略有许多原因。最重要的原因是从显式导入和导出中获得的速度收益。早期版本的 Eclipse 必须打开并浏览每个插件 jar 文件以确定它包含哪些类。不包括 * 导出还提供了一级保护来避免插件暴露不必要的类。插件开发人员必须进行专门选择来使插件中的功能可供外部使用。该限制允许内部包保留在内部。

 

OSGi 清单选项

OSGi R4 框架核心目前的规范草案几乎有 PDF 格式的 300 页。介绍该规范的每个部分超出了本文范围,但我将讨论 Eclipse 插件开发人员特别感兴趣的 OSGi 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
该属性指定要在给定绑定包中导入使用的绑定包及其已导出的包。指定的绑定包在显式包导入之后解析。


Eclipse 提供的其他清单选项

OSGi 规范包括的 manifest.mf 配置选项不提供 Eclipse 平台需要的所有功能。因此,Eclipse 创建者添加了多个扩展(还建议将它们包括在未来版本的 OSGi 规范中):

Export-Package 头扩展
Eclipse 具有两个 OSGi 解析器方法 —— defaultstrict ,可以使用 osgi.resolver 属性指定它们。Eclipse 还包括对 Export-Package 属性的两个扩展 —— x-internalx-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 插件可以看到需要的类,虽然它并没有专门导入它们。

 

分享到:
评论

相关推荐

    osgi介绍osgi介绍

    osgi介绍osgi介绍osgi介绍osgi介绍osgi介绍osgi介绍osgi介绍osgi介绍osgi介绍osgi介绍

    osgi-manifest:用于解析和解释 OSGi 清单文件的小型轻量级库

    osgi-清单 用于解析和解释 OSGi 清单文件的小型轻量级库

    OSGI原理与最佳实践

    资源名称:OSGI原理与最佳实践内容简介:国内第一本OSGi图书OSGi国内推广者林昊多年经验的结晶涵盖OSGi从入门到深入的知识体系引领OSGi国内研究和普及本书基于作者多年使用OSGi的经验而编写,涵盖了OSGi从入门到深入...

    利用R-OSGi实现分布式OSGi应用

    利用R-OSGi实现分布式OSGi应用 本文通过介绍传统 OSGi 应用程序及 R-OSGi 的实现方式入手,阐述了 R-OSGi 对于 OSGi 规范的实现方式。然后通过一个简单的功能实现由浅入深地讲述传统 OSGi 和 R-OSGi 上的两种不同...

    OSGI合集 OSGi原理与最佳实践

    网上收集的OSGI资料. 包括: OSGi原理与最佳实践(精选版).pdf OSGI实战和源码.rar osgi进阶.pdf Introduce.OSGi.ppt OSGi.in.action.ppt r4.cmpn.pdf r4.core.pdf r4.enterprise.pdf

    OSGI进阶.pdf

    讲OSGI应用的讲OSGI应用的讲OSGI应用的讲OSGI应用的讲OSGI应用的

    OSGI 实例eclipse插件开发

    OSGI 实例 eclipse 插件开发

    OSGI 入门资料PDF

    OSGI 入门资料PDF,包括OSGI实战、OSGI进阶、OSGI 入门和整合Spring、OSGI原理与最佳实践

    《OSGi实战》完整中文版

    《 OSGi实战》是学习OSGi的全面指导,利用与架构和开发人员相关的示例清楚地讲解OSGi概念,同时探讨了很多实践场景和技术,阐述了开发人员有多需要OSGi,怎么将OSGi嵌入其他容器中,将遗留系统移入OSGi的最佳实践,...

    OSGi入门教程(OSGi Introduce)

    OSGi的入门教程,帮助初学者快速了解OSGi的定义、用途及组成。

    osgi,林昊写的osgi实战和进阶

    osgi,林昊写的osgi实战和进阶,学习osgi的好东西,入门的首选。

    OSGI进阶实战教程

    OSGi学习不错的材料 OSGi学习不错的材料 OSGi学习不错的材料 OSGi学习不错的材料

    OSGI进阶--OSGi开发指南

    OSGi开发文档和实践指南,描述了OSGI的开发流程

    OSGi入门资料-初探OSGi 的全文

    OSGi的入门资料,网上找的,初探OSGi 的全文

    OSGI组件编程(osgi.component.programming)

    介绍OSGI组件编程,详细介绍用eclipse和Equinox开发OSGI程序

    OSGi原理与最佳实践

    本书基于作者多年使用OSGi的经验而编写,涵盖了OSGi从入门到深入的知识体系,从OSGi的简介开题,介绍OSGi的作用及基本概念;其后进入OSGi实战,结合实例讲解如何基于OSGi框架编写模块化、动态化的各种Java应用;最后...

    osgi资料

    osgi资料

    OSGi规范(r4)中文版

    OSGi 中文版 中文 OSGi中文OSGi 中文版 中文 OSGi中文OSGi 中文版 中文 OSGi中文OSGi 中文版 中文 OSGi中文OSGi 中文版 中文 OSGi中文OSGi 中文版 中文 OSGi中文OSGi 中文版 中文 OSGi中文OSGi 中文版 中文 OSGi中文

    OSGi.NET框架 Documentation

    本文档主要针对OSGi.NET模块化框架使用进行了描述 OSGi.NET框架是一个参照了OSGi规范的模块化管理框架。框架为应用程序(组件(bundle))提供了一个标准环境。整个框架可以划分为一些层次: 1.运行环境 2.模块...

    OSGI相关技术)

    OSGI相关技术,对学习OSGI的朋友很有帮助啊

Global site tag (gtag.js) - Google Analytics