初探Java企业级开源框架OSGi - 编程入门网
是应用程序Bundles 层。框架本身提供的类加载,生命周期管理,服务注册和规范服务也都是针对Bundles 的。每一个在OSGi 框架中运行的逻辑单元称为一个Bundle,Bundle 实际是一个符合特定形式的jar 文件。每一个Bundle 的功能可以是抽象的也可以是具体的。所谓抽象,就是它不是一个具体的应用,没有完成一些业务功能,而只暴露了一些接口或者功能给其他的Bundle 使用;所谓具体,就是该Bundle 可以独立的完成一个功能,例如连接数据库,获取数据等等。Bundle 有六种状态,分别是:installed(安装完成,本地资源成功加载),resolved(依赖关系满足,即该Bundle 要么是准备好运行了,要么是已经被停止了),starting(Bundle 正在被启动),stopping(Bundle 正在被停止),active(Bundle 被激活,正在运行中),uninstalled(Bundle 被卸载了)。OSGi 有它自身的类加载机制从而控制这些加载的Bundles 彼此之间的依赖关系,而生命周期管理也是OSGi 的一大亮点,由于可动态的对这些加载的Bundles 进行安装、卸载、启动、停止等操作,所以可以动态的改变应用程序的运行状态。当一系列的Bundles 存在于服务器中的时候,那么它们之间必然会存在通信协作的部分,比如说一个通过网页捕获用户输入的Bundle 执行的时候,它必须首先需要一个Web 服务器服务的支持,那么这个时候服务注册器就会从整个OSGi容器中寻找这个服务,如果能完成服务的匹配,那么相应的功能就会很自然的实现了。OSGi 规范还规定了一组预设的服务,包括日志、服务管理等等,这些服务在主流的开源框架中都有实现。OSGi 框架中还包括一个安全层,OSGi 的安全层扩展了Java 的安全机制,增并加了一些新的约束以填补了Java安全机制中的遗漏。
初探Java企业级开源框架OSGi(3)时间:2011-06-25 51cto基于上述的介绍,读者想必应对OSGi 有个大致的概念了,那么接下来就让我们来看看OSGi 究竟能够给企业应用带来什么?它究竟有哪些功能值得我们把宝贵的时间投资在上面? 第一点,也是笔者认为最重要的一点,基于OSGi 的应用程序可动态更改运行状态和行为。笔者曾经参与过开发J2EE 企业级项目,应用服务器用的是IBM 的Websphere,主要开发基于EJB 2.1 的一些应用程序。整个开发经历给笔者的最深印象是等待,排除编写EJB 规范中要求的一系列繁杂的接口,单单对应用程序进行部署和测试,反复启动服务器就浪费掉很多时间。而在OSGi 框架中,每一个Bundle 实际上都是可热插拔的,因此,对一个特定的Bundle 进行修改不会影响到容器中的所有应用,运行的大部分应用还是可以照常工作。当你将修改后的Bundle 再部署上去的时候,容器从来没有重新启过,在外界看来,这种过程似乎从未发生过。这种可动态更改状态的特性在一些及时性很强的系统中尤其重要,比如说一个及时销售系统,当你的服务器因为要更新某个组件从而花上数分钟时间重新启动的话,必然导致客户的流失和利益的损失,但是采用OSGi 架构的应用则完全可以将损失降到最低。众所周知,Spring 框架以其优秀的特性,占据了当前企业应用开发的半边天空,而刚刚发布的2.5 版本,宣布所有jar 包均支持OSGi 特性,其维护的子项目Spring-OSGi 也是专门针对Spring 与OSGi 的集成。Spring 早前版本有一点被人所诟病,就是其无法动态的改变其运行状态,被迫停止服务器,再修改配置文件,而与OSGi 的结合,必然导致这种状态的终结。最后,笔者认为这种特性也保证了系统有足够的灵活性和可扩展性,对开发人员也大大节省了需要等待的时间。 第二点,它是一个稳定高效的系统。OSGi 是一个微核的系统,所谓微核是指其核心只有为数不多的几个jar 包。基于OSGi 框架的系统可分可合,其结构的优势性导致具体的Bundle 不至于影响到 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |