用 Eclipse 开发基于 OSGi 的 Bundle 应用

用 Eclipse 开发基于 OSGi 的 Bundle 应用

ID:47021841

大小:125.14 KB

页数:10页

时间:2019-06-19

用 Eclipse 开发基于 OSGi 的 Bundle 应用_第1页
用 Eclipse 开发基于 OSGi 的 Bundle 应用_第2页
用 Eclipse 开发基于 OSGi 的 Bundle 应用_第3页
用 Eclipse 开发基于 OSGi 的 Bundle 应用_第4页
用 Eclipse 开发基于 OSGi 的 Bundle 应用_第5页
资源描述:

《用 Eclipse 开发基于 OSGi 的 Bundle 应用》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、用Eclipse开发基于OSGi的Bundle应用开放服务网关协议(OpenServicesGatewayInitiative),简称OSGi,为网络服务定义了一个标准的、面向服务的计算环境,为用户提供了开放的、面向服务组件的、易于部署的编程模型,这个编程模型允许用户将定义好的接口规范绑定到OSGi运行环境中的特定Service,在构件SOA面向服务为中心的企业应用的过程中,OSGi技术正发挥越来越重要的作用。在本文中,将介绍OSGi的概念和体系结构,并且利用Eclipse3.2开发一个基于OSGi规范的服务应用Bundle。通过学习本文,读

2、者可以了解到如何开发和部署基于OSGi规范的Bundle应用。3 评论:杨晓飞 (yangxiaofei2000@hotmail.com),软件工程师2006年7月17日·内容OSGi规范简介OSGi联盟建立于1999年,是一个非赢利机构,旨在建立一个开放的服务规范。OSGi规范为网络服务定义了一个标准的、面向组件的计算环境,它最初的目的就是为各种嵌入式设备提供通用的软件运行平台,屏蔽设备操作系统与硬件区别的中间件平台,通过这个平台,可以对不同软件商提供的应用(OSGi中称为Bundle)进行组件的生命周期管理的能力,如应用组件可以从运行中被

3、安装、升级或者移除而不需要中断设备的操作,应用组件可以动态的发现和使用其他库或者应用程序。由于OSGi技术具有服务组件模块化、动态加载应用等优点,正被越来越多的领域关注,如嵌入设备制造业、汽车制造业、企业应用等。目前,OSGi联盟发布的最新的OSGi服务规范为4.0,读者可以查阅参考资料了解详细信息。回页首OSGi体系结构OSGi的体系架构是基于插件式的软件结构,包括一个OSGi框架和一系列插件,在OSGi中,插件称为Bundle,其中,OSGi框架规范是OSGi规范的核心部分,它提供了一个通用的、安全可管理的Java框架,通过这个框架,可以

4、支持Bundle服务应用的部署和扩展。Bundle之间可以通过ImportPackage和Require-Bundle来共享Java类,在OSGi服务平台中,用户通过开发Bundle来提供需要的功能,这些Bundle可以动态加载和卸载,或者根据需要远程下载和升级。OSGi体系结构图如图1所示:图示1OSGi体系结构其中:ExecutionEnvironment:Bundle应用所倚赖运行的Java执行环境,如J2SE-1.4、CDC-1.0等都是可用的执行环境。Modules:模块层定义了Bundle应用的加载策略。OSGi框架是一个健壮并且

5、严格定义的类加载模型。在大多数Java应用中,通常只有一个单独的ClassPath,它包含了所有的Java类文件和资源文件,OSGi基于Java技术,对于每个实现了BundleActivator接口的Bundle应用,为它生成一个单独的ClassLoader,使得Bundle应用的组织更加模块化。LifeCycle:生命周期层可以动态地对Bundle进行安装、启动、停止、升级和卸载等操作。该层基于模块层,提供了一组API来控制Bundle应用的运行时操作。ServiceRegistry和Services:OSGi服务层定义了一个集成在生命周期

6、层中的动态协作模型,是一个发布、动态寻找、绑定的服务模型。一个服务通常是一个Java对象实现了特定的服务接口,并且通过服务注册,被绑定到OSGi的运行环境中。Bundle应用可以注册发布服务,动态绑定服务,并且在服务注册状态改变时,可以接受到事件消息等。Security:OSGi的安全管理是基于Java2安全体系的,贯穿在OSGi平台的所有层中,它能够对部署在OSGi运行环境中的Bundle应用进行详细的管理控制。回页首Bundle生命周期的状态在一个动态扩展的OSGi环境中,OSGi框架管理Bundle的安装和更新,同时也管理Bundle和

7、服务之间的依赖关系。一个Bundle可能处于以下六个状态,如图2所示:图示2Bundle状态图INSTALLED:安装完成,本地资源成功加载。RESOLVED:依赖关系满足,这个状态意味该Bundle要么已经准备好运行,要么是被停止了。STARTING:Bundle正在被启动,BundleActivator的start()方法已经被调用但是还没有返回。STOPPING:Bundle正在被停止,BundleActivator的stop()方法已经被调用但是还没有返回。ACTIVE:Bundle被成功启动并且在运行。UNINSTALLED:bun

8、dle被卸载并且无法进入其他状态。Bundle接口定义了getState()方法来返回Bundle的状态。回页首OSGi标准服务在OSGi平台之上,OSGi联盟定义

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。