osgi学习笔记

一:什么是OSGi

OSGi由原来的Open Service Gateway Initiative (开放服务网关)变为The Dyanamic Moudle System For Java (面向java的动态化模块系统),企业级的OSGi引入之后不是扮演一个“革命者”的作用,而是扮演一个“组织者”的作用,把各种企业级的技术变为他的模块和服务,让以前的企业及开发技术在OSGi中依然发挥作用。定义:OSGi称为java语言的动态模块化系统,它为模块化应用的开发定义了一个基础架构。

二:为什么使用OSGi

1.OSGi可以动态化的拆分模块,它可以引导程序员开发出可积累可重用的软件

2.基于OSGi比较容易实现强鲁棒性的系统,简而言之,若其中的一个子模块发生了问题,不会影响其他模块的正常运行

3.在OSGi的环境下可以做到动态修复缺陷功能,它允许多个版本的package存在

4.OSGi支持企业级开发,他不是一个“革命者”,而是一个“组织者”,会让以前的企业级及开发技术在OSGi环境下仍然可以重用

三:OSGi的规范与原理 

OSGi的核心架构组成:执行环境,安全层,模块层,生命周期层,服务层,框架API

OSGi的运行环境:java se ,cdc/cldc ,midp

osgi的标准服务:事件服务,包管理服务,日志服务,配置管理服务,HTTP服务,用户管理服务,其他

Bunddle的介绍

定义:bundle是系统的一个模块,它是一个jar包,它可以令OSGi的bundle可以不经任何修改就直接应用与非OSGi的系统中,同时也为非OSGi的jar包转为OSGi系统运行的bundle提供很大的便利

OSGi中一个特殊的bundle:Fragment Bundle它不同于一般的Bundle,他必须依附于其他的Bundle来使用,它主要用途是为了隔离Bundle中经常变动的部分,譬如系统的配置文件等

Bundle的元数据信息是定义在/META-ING/MANIFEST.MF文件中,它是通过BundleActivator接口去控制其生命周期。每一个Bundle采用的是独立的类加载器来进行加载

预定义标记:Bundle-SymbolicName:它是给出Bundle在OSGi容器中的全局唯一标示符,他没有默认值,是Bundle元信息中必须设置的一个标记,它带有两个参数:singleton.(表示Bundle是单例的,默认值为false),fragment-attrachment:定义Fragment Bundle是否能附加到该Bundle之上,值为always,never,和resolve-time.


导入导出包是可以进行过滤:;1根据类名过滤,2,根据版本过滤,3,。根据提供者过滤,4导入整个Bundle  (Require-Bundle:Bundle A),若导入了某个Bundle则该Bundle会导出原来Bundle导出的包,该种方式最好少用5.可选导入包(Import-Package:org,osgi.simple;resolution:="optional")5,根据属性来过滤


开发bundle流程(设计   1.用户登入web响应bundle  2.用户登入验证接口bundle 3.LDAP验证bundle  4.DB验证用户bundle  5配置文件验证登入bundle

第一步:建立bundle工程(新建上述工程)

右键-new-other-plugin-in  project -next



​此处的Vendor是指供应商(可不填),点击next,然后选择一个hello osgi bundle点击finish

第二步:对外提供用户验证接口package

package   org.riawork.demo.service.user;
/**
  * 用户登入验证接口
  * @author Administrator
  *
  */
public   interface   Validator {
     /**
      * 根据用户名,和密码来验证用户是否能够登入
      * @param username
      * @param password
      * @return boolean
      * @throws Exception
      */
     public   boolean   Validate(String username,String password)  throws   Exception;
 
 
}

双击META-INF下的MANIFEST.MF 选择其中的runtime标签项,在Exportes Packages中点击add。选择刚才的接口导入就可以保存

然后去看MANIFEST.MF就会看到多了这一项  Export-Package:org.riawork.demo.service.user



OSGi的类加载器:1,父类加载器 2,Bundle类加载器 3,其他加载器

1.模块层规范与管理

2,生命周期层的规范与管理

3.服务层的规范与管理



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值