前面通过一个例子简单的介绍了如何快速的开发一个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的类装载机制,这也是初学者最头疼的。
分享到:
相关推荐
在本入门资料中,我们将探讨OSGI的关键概念、优势以及如何通过实战和最佳实践来掌握它。 1. OSGI原理: OSGI的核心在于它的模块系统,称为“bundle”。一个bundle是一个自包含的Java模块,包含了类、资源和元数据...
2. **Eclipse集成开发环境**:Eclipse从3.0版本开始采用OSGi框架(Equinox),提升了性能、可扩展性,并简化了二次开发。 3. **企业级应用**:IBM WebSphere、BEA microServices、Apache Struts、Spring等均使用...
OSGi的入门资料,网上找的,初探OSGi 的全文
标题"OSGI入门和例子"意味着我们将探讨OSGI的基本概念以及如何通过实例来学习和理解这个框架。下面,我们将深入讨论OSGI的关键知识点: 1. **模块系统**:OSGI的核心是模块化,它定义了一种基于Java导出和导入包的...
学习OSGI入门和整合Spring,对于开发复杂的企业级应用,或者想要提升系统灵活性和可维护性的开发者来说,是非常有价值的。通过理解OSGI的模块化机制和Spring的依赖注入原理,可以构建出更加高效和可扩展的Java应用。
《OSGI入门和整合Spring》则关注OSGI与Spring框架的结合,主要讨论: 1. **Spring与OSGI集成原理**:Spring的bean管理如何与OSGI服务机制相结合,实现更灵活的依赖注入。 2. **Declarative Services(DS)**:利用...
Spring OSGi 是一个将 Spring 框架与 OSGi(Open Service Gateway Initiative)容器相结合的开源项目,旨在提供一种在 ...提供的压缩包文件可能包含了入门手册和示例代码,这些资源将有助于你快速上手 Spring OSGi。
### Spring OSGi 入门知识点...以上内容为Spring OSGi入门的基本知识点,涵盖了Spring DM的基础概念、配置方法以及如何在OSGi环境中导出和引用服务等内容。这些知识点对于理解如何将Spring与OSGi结合使用具有重要意义。
**入门篇** 1. **模块系统**:OSGi的核心是模块化,每个模块称为一个Bundle,它包含类、资源和元数据。Bundle之间通过导出和导入包来实现依赖关系。 2. **生命周期管理**:OSGi Bundle有启动、停止、安装、更新和...
很基础全面的OSGI ppt教程,讲解的很详细。
下面详细解释关于OSGi生命周期层的几个关键知识点: 1. 生命周期管理的含义:在软件开发过程中,一个程序或程序的一部分会经历从创建到结束的各个阶段。这些阶段通常包括安装、执行、停止、更新和移除,这个过程被...
二、Spring OSGi 的优势 1. 模块化:Spring OSGi将应用分解为独立的模块(称为bundle),每个模块都可以有自己的生命周期,便于管理和升级。 2. 动态性:在OSGi环境中,模块可以被热插拔,无需重启整个应用,提高...
### OSGi 入门与实践 #### OSGi 的历史背景 OSGi,全称为 Open Service Gateway Initiative,从字面上理解,它最初被设计为一个面向服务的平台。1999 年,OSGi 联盟成立,旨在为通过网络向设备提供服务建立开放的...
在OSGi框架中,服务层是位于应用程序之上的一层,它为服务提供者和消费者之间的交互提供了一种机制。这一层的主要目的是实现组件之间的松耦合通信,即组件不需要知道彼此的具体实现细节,仅通过服务接口进行通信。 ...
**Spring OSGi 快速入门中文教程** OSGi(Open Service Gateway Initiative)是一种Java模块化系统,它允许开发者创建可热更新、可隔离且互相依赖管理的模块。Spring OSGi是Spring框架与OSGi服务的结合,使得在OSGi...
在OSGI入门阶段,首先要理解的是它的基本概念,如bundle(模块)、服务、生命周期管理和依赖管理。Bundle是OSGI中的核心组件,它类似于Java的JAR文件,但具有自己的元数据和生命周期。每个bundle可以导出和导入服务...
关于SOA中热门技术OSGI的入门样例的经典版本,供对需要进行ERP设计和学习的入门读者使用的经典