2.1 OSGi 规范概要
2.2 Bundle
从Jar文件格式规范基础上扩展而来的
2.3 描述元数据
bundle的元数据信息定义在/META-INF/MANIFEST.MF文件之中,OSGi规范中明确要求实现能够正确识别那些被预订已过的标记
2.3.1 预定义标记
1. 根据类名过滤
2.根据版本过滤
3. 根据提供者过滤
4.根据属性过滤
5.可选导入与动态导入
6.导出package的依赖限制
7. 导入整个Bundle
、
2.5.2 Bundle类加载器
OSGi框架为每一个Bundle生成了一个Bundle类加载器的实例,这些类加载器负责处理其他Bundle委派的加载请求
根据元数据信息确定,这些加载请求的类是否与该Bundle的导出列表符合,然后对合法的加载请求进行响应,返回该Bundle的类给其他Bundle使用
Bundle A被附加,所以能搜索到fragment.jar
Bundle类加载器收到类加载请求时,会优先委托给导入包的其他Bundle类加载器处理,只有其他导入包的Bundle类加载器都无法处理时,才会尝试自己处理
Bundle B 导入了Bundle A,所以就只使用A的同名的class,不使用自己的
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2.5.3 其他类加载器
OSGi框架自身的代码,涉及OSGi框架启动的代码,就没法使用Bundle类加载器来加载
线程上下文加载器,默认为应用程序类加载器
2.5.4 类加载顺序
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2.6 定义执行环境
2.7 本地化
bundle的本地化信息必须遵循特定的命名规则,存放在Bundle的指定目录下,如果没有指定,默认为 “OSGI-INFO/110n”
查找对应的语言本地化文件
第二种是在MANIFEST.MF中使用本地化变量,然后在本地化文件中定义这些变量的值