转载出处:http://www.cnblogs.com/liuzhuo.

  1. 什么是OSGi框架

  OSGi(Open Service Gateway Initiative)框架是运行在JavaVM环境里的服务平台。框架提供的主要功能是对应用和组件的生命周期管理,系统可以在无需重启的情况下,远程操纵组件的安装、启动、停止。

  OSGi框架不仅用于Eclipse,从移动终端到车载系统,各个领域都在应用这个技术。

  2. OSGi和Eclipse的关系

  Eclipse采用OSGi框架来管理插件的安装、开始、停止和生命周期。在Eclipse中采用的OSGi框架称为Equinox。Equinox在Eclipse3.0时被使用,在3.3时,Equinox通过Equinox PDE,不仅可以用来开发插件,也可以用来制作其他OSGi框架上的组件。

  3. OSGi控制台

  在Eclipse提启动的时候加入-console参数,可以在Eclipse启动的同时创建一个OSGi框架控制台。

图4-1,4-2 启动OSGi控制台

                     

  构建于OSGi之上的各种应用被称为OSGi Bundle。OSGi控制台可以执行下表所示的操作。

表4-1 OSGi控制台的命令

命令 说明
start 开始Bundle
stop 停止Bundle
install 安装指定Bundle
uninstall 卸载指定Bundle
update 更新指定Bundle
active 列出被注册并且处于活动状态的Bundle
ss 列出所有被注册的Bundle

  我们可以看一下执行Eclipse的动作后,Bundle的状态变化。首先执行ss命令。在ss命令后加入一个参数[help],这样可以列出所有名称含有help的bundle。

代码1

id      State       Bundle
78      RESOLVED    org.eclipse.epp.mpc.help.ui_1.0.0.v20100611-0430
136     ACTIVE      org.eclipse.help_3.5.0.v20100524
137     <<LAZY>>    org.eclipse.help.appserver_3.1.400.v20100427
138     <<LAZY>>    org.eclipse.help.base_3.5.0.v201006080911
139     <<LAZY>>    org.eclipse.help.ui_3.5.0.v20100517
140     <<LAZY>>    org.eclipse.help.webapp_3.5.0.v20100507
178     <<LAZY>>    org.eclipse.mylyn.help.ui_3.4.0.v20100608-0100-e3x
196     RESOLVED    org.eclipse.mylyn.wikitext.help.ui_1.3.0.v20100608-0100-e3x
228     RESOLVED    org.eclipse.rap.help_1.3.0.20100615-1734

  请注意其中状态为lazy的行,这个状态说明Bundle还没有被加载入内存。在必要时将加载入内存。

  我们先打开Eclipse的帮助。然后再看一下Bundle的状态。

代码2

id      State       Bundle
78      RESOLVED    org.eclipse.epp.mpc.help.ui_1.0.0.v20100611-0430
136     ACTIVE      org.eclipse.help_3.5.0.v20100524
137     <<LAZY>>    org.eclipse.help.appserver_3.1.400.v20100427
138     ACTIVE      org.eclipse.help.base_3.5.0.v201006080911
139     ACTIVE      org.eclipse.help.ui_3.5.0.v20100517
140     <<LAZY>>    org.eclipse.help.webapp_3.5.0.v20100507
178     <<LAZY>>    org.eclipse.mylyn.help.ui_3.4.0.v20100608-0100-e3x
196     RESOLVED    org.eclipse.mylyn.wikitext.help.ui_1.3.0.v20100608-0100-e3x
228     RESOLVED    org.eclipse.rap.help_1.3.0.20100615-1734

  我们看到了org.eclipse.help.base_3.5.0.v201006080911和 org.eclipse.help.ui_3.5.0.v20100517两个Bundle从lazy状态变成了活动状态。

  从以上例子我们知道了,使用OSGi控制台可以确认Eclipse插件的活动状态,也可以用控制台来控制插件的开始和停止。

Eclipse插件开发之基础篇(4) OSGi框架的更多相关文章

  1. [转]Eclipse插件开发之基础篇(4) OSGi框架

    原文地址:http://www.cnblogs.com/liuzhuo/archive/2010/08/18/eclipse_plugin_1_2_1.html 1. 什么是OSGi框架 OSGi(O ...

  2. [转]Eclipse插件开发之基础篇(5) 制作OSGi Bundle

    原文地址:http://www.cnblogs.com/liuzhuo/archive/2010/08/18/eclipse_plugin_1_2_2.html 1. 生成OSGi工程 首先打开新工程 ...

  3. [转]Eclipse插件开发之基础篇(2) 第一个Eclipse插件

    原文地址:http://www.cnblogs.com/liuzhuo/archive/2010/08/15/eclipse_plugin_1_1_1.html 在Eclipse中使用PDE(Plug ...

  4. [转]Eclipse插件开发之基础篇(1) 插件开发的基础知识

    原文地址:http://www.cnblogs.com/liuzhuo/archive/2010/08/13/eclipse_plugin_1_0_2.html 名词翻译 有一些名词在翻译的过程中可能 ...

  5. [转]Eclipse插件开发之基础篇(6) SWT简介

    原文地址:http://www.cnblogs.com/liuzhuo/archive/2010/09/01/eclipse_plugin_1_3_1.html SWT(Standard Widget ...

  6. [转]Eclipse插件开发之基础篇(3) 插件的测试与调试

    原文地址:http://www.cnblogs.com/liuzhuo/archive/2010/08/17/eclipse_plugin_1_1_2.html 1. 使用JUnit对插件进行测试 E ...

  7. 关于Eclipse使用Git基础篇

    一:Git的下载与安装与基本使用 1.打开eclipse->help->Eclipse Markplace->search->fiind输入Egit 你会看到如下截图(我的为已 ...

  8. HTML基础篇之内嵌框架和表单

    内嵌框架: <iframe src="http://www.baidu.com" name="d"></iframe> 网页会显示一个这 ...

  9. C#基础篇之语言和框架介绍

    1.如何描述C#和.NET的关系? .Net的是平台,C#是为了微软公司为了.NET平台开发的面向对象语言. 2.C#能做什么? (1)C#.NET做窗体应用开发,Web开发中可以通过WCF编写Web ...

随机推荐

  1. 很励志的帖子,转来自勉,也反省一下自己写码这几年【奋斗10年,一个.NET程序员从0到拥有5系】

    http://bbs.csdn.net/topics/390833230 想想自己毕业近8年,真正写码也5年.从当初毕业时的拒绝写码,到迫不得已开始写码,是命运也好,是自己的不努力也罢.今天看来,写码 ...

  2. mysql 常用操作(整理)

    原文地址:http://blog.csdn.net/lxh090821/article/details/9410943 1       登录数据库 格式: mysql -h主机地址 -u用户名 -p用 ...

  3. 深度优化LNMP

    优化前准备工作 Centos准备及配置 准备安装包及软件:http://pan.baidu.com/s/1chHQF  下载解压到U盘即可安装http://pan.baidu.com/s/15TUWf ...

  4. c++常用的一些库函数、常量和头文件

    1.常用数学函数 头文件 #include <math> 或者 #include <math.h>   函数原型 功能 返回值 int abs(int x) 求整数x的绝对值 ...

  5. Filter 过滤器

    1. config in web.xml 2. @Component 3. @WebFilter (filterName="LoginFilter", url-patterns= ...

  6. Storm的数据处理编程单元:Bolt 学习整理

    Bolt是Topology中的数据处理的单元,也是Storm针对处理过程的编程单元.Topology中所有的处理都是在这些Bolt中完成的,编程人员可以实现自定义的处理过程,例如,过滤.函数.聚集.连 ...

  7. [实变函数]4.2 Egrov 定理

    1 一致收敛很重要, 但可惜的是很多时候不一致收敛. 比如 $$\bex f_n(x)=x^n\to f(x)=\sedd{\ba{ll} 0,&x\in [0,1)\\ 1,&x=1 ...

  8. 转--android Toast大全(五种情形)建立属于你自己的Toast

    Toast用于向用户显示一些帮助/提示.下面我做了5中效果,来说明Toast的强大,定义一个属于你自己的Toast. 1.默认效果 代码 Toast.makeText(getApplicationCo ...

  9. ylbtech-dbs:ylbtech-6,record(生活记录)

    ylbtech-dbs:ylbtech-6,record(生活记录) -- =============================================-- DatabaseName:R ...

  10. get/close not same thread Druid 连接池一个设置

    我就郁闷了,1000W+数据审核每次总是到一半就出这么个错,仔细找找原来是一个配置项的小问题,removeAbandonedTimeout 这个代表你从连接池取出一个连接多少秒之后你还没还回来,那就强 ...