闲人野居
好好学习,天天向上
posts - 57,  comments - 137,  trackbacks - 0
    前面通过一个例子简单的介绍了如何快速的开发一个osgi应用。下面来具体说明一下什么是osgi,以及osgi 能做什么,为什么使用osgi,以及到底osgi能带来什么益处。
    首先osgi是什么,osgi是由osgi alliance 制定的一个规范。由此规范,形成了osgi框架。基本上,osgi 也就是类似于servlet规范一样,提供相应的接口。而具体的实现,由相应的平台实现,如equinox平台。
    说了那么多,具体osgi能做什么呢?个人归纳了一下,包括以下几点:
    1.提供更高层次的模块管理,相对于java的包来说,osgi更加倾向于模块管理。
    2.提供更好的封装性,使用更加严格的类装载机制,让模块内的封装性变得更强。
    3.真正的面向接口,面向服务编程,使模块之间的耦合度大大降低。
    4.支持热部署,只要osgi内核运行着,其他模块可以随时更新,增加。
    5.易扩展,便于使用插件的模式进行扩展。具体看看eclipse的插件体系就知道了。
    简单介绍了一下osgi,下面说说osgi的几个层次:
    安全层:基于java2 安全机制,增加了相应的限制和使用标准的java 许可。
    模块层;定义标准的java 模型
    生命周期层:提供完整的bundles生命周期管理
    服务层:提供动态,简洁和持久化编程模型。
    相应的实际服务接口。
    主要来说说模块层,看过前面的例子应该知道,那个例子一共包括10个模块(包括系统模块)osgi 以bundle作为一个基本的模块单元。bundle主要包括需要的基础资源,包括类和其他资源文件;一个manifest文件,用于描述bundle信息,以及可选的osgi-opt目录。
    manifest文件是最重要的描述文件,如果缺失,则bundle也就无法装载。
    简单解释一下前面定义过的bundle manifest;bundle 文件包括几个必须的元素:
    Bundle-ManifestVersion: 2//定义了bundle遵循规范的规则,1表示r3规范 2表示r4和以后的版本
    Manifest-Version: 1.0 //主要的版本号
    //唯一的bundle名称,相当于在系统中的id。singleton表示是否使用单启动方式
    Bundle-SymbolicName: org.demo.helloworld;singleton:=true
    //以下是可选的
    Bundle-Name: Helloworld Plug-in//bundel 名称
    Bundle-Vendor: zsoft//发布商
    Bundle-RequiredExecutionEnvironment: J2SE-1.5//需要的执行环境
    //下面是一些引用包的信息,包括包名称和版本号,只有引用了这些包,才能让classloader装载。
    Import-Package: javax.servlet;version="2.4.0",
    javax.servlet.http;version="2.4.0",
    org.apache.commons.logging;version="1.0.4",
    org.osgi.framework;version="1.4.0"
   //这是直接引用整个bundle,一般不提倡整个引用,这里是用来定义扩展
   Require-Bundle: org.eclipse.equinox.http.registry;bundle-version="1.0.100"
   这里简单的描述了一下主要的几个bundle头信息,如果需要详细了解,具体参考相应的规范。本篇的内容就这些,下篇详细讲解一下osgi的类装载机制,这也是初学者最头疼的。

posted on 2009-02-14 16:28 布衣郎 阅读(3425) 评论(1)  编辑  收藏 所属分类: eclipse

FeedBack:
# re: osgi 入门 二之关于osgi
2009-03-06 18:12 | guooo
学习.  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航:
 

<2009年3月>
22232425262728
1234567
891011121314
15161718192021
22232425262728
2930311234

常用链接

留言簿(12)

随笔分类(59)

随笔档案(57)

blog

java

uml

搜索

  •  

积分与排名

  • 积分 - 355600
  • 排名 - 154

最新评论

阅读排行榜

评论排行榜