一:什么是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.服务层的规范与管理