OSGi工作组件:环境和程序包
OSGi环境提供了必要的黑盒来利用如前所述的许多特性。我此时选择使用黑盒这个词是因为环境的创建完全由OSGi供应商/提供者负责,Java EE容器也由供应商以大体上相同的方式负责。
对于已经从Java EE容器迁移到Spring等轻量级框架的用户,也不要因为Java EE容器和OSGi之间最新的比较关系而气馁。事实上,一些相关的工作正在进行之中,以便集成OSGi与Spring的功能。随着本文的深入,您会发现您的Spring项目也会从OSGi中受益。在OSGi中,环境、实现、运行时、容器和框架这些术语经常交替使用,这是经过考虑的。当这些专门词汇经常用来指由OSGi供应商/提供者分发的软件的同一部分时,请保持开放的心态。
开始探索OSGi环境之后,您可能会惊讶地发现同样的环境不仅能够适用于智能电话等小型设备,也能够在桌面应用程序管理和服务器端项目中应用。其原因是OSGi部署和编程模型同样可以应用于所有这些不同的情况中,这就引入了OSGi最具体的部分:程序包。领会程序包的概念是理解OSGi的关键,因为作为开发人员或架构师,您将时常要直接处理它。这里有个实际的例子,可用来简要说明程序包的概念。
程序包是OSGi使用的封装格式,也常称作模块,它包含了Java类和资源以及其他OSGi底层环境使用的处理指令——封装的结构与JAR文件的结构非常相似。这就产生了一个问题:“如果OSGi程序包的封装方式与JAR文件一样,那它为何如此特殊呢?”或者还可以这样问:“到底为什么要遵照OSGi程序包的JAR格式重新封装现有的所有应用程序的JAR文件呢?”
图1. OSGi通过许多程序包中的各种类构造出的类装载器图
当它推出时,通过传统的Java类路径还不能获得OSGi程序包的JAR文件——或者简单地说,是OSGi模块(Java类和其他应用程序资源)——的内容。它们被委托给OSGi环境,后者会创建一种针对在自身部署的每一个OSGi程序包JAR文件所含全部底层类和资源之间的依赖关系解析的类装载器图。
类装载器图的这个概念的特殊性有几个原因。其一,它限制了应用程序执行时在任一单个点装载的Java类和资源的数量。另外,依靠图模型,OSGi环境中运行的任何应用程序都能够根据需要自动创建、合并或销毁分支以满足类的依赖关系,给在开始所提到的动态安装、启动、中止、更新和卸载的功能让路。同样重要的是,因为OSGi程序包由普通的Java类和资源组成,所以OSGi环境对于底层应用程序逻辑是不可知的,因此您可能遇到的OSGi程序包范围很广,从Eclipse IDE插件、XML语法分析器、基于控制台的应用程序、servlet到其他一些变量。
了解了这一背景之后,我们来看一下实际的OSGi程序包。由于本文是OSGi程序包的介绍,这里给出的例子将尽可能的精简。但通过这些例子,可以试着外推这些相同的原则如何应用于企业空间中更完善的程序包,比如Logging包、Servlet或其他变量。
相关专题
- (6259篇文章)FTP服务器
- (7426篇文章)双核服务器技术
- (8762篇文章)网站服务器的选型
- (6675篇文章)网吧流媒体服务器
- (5797篇文章)刀片服务器专题
- (5765篇文章)网吧服务器专栏
- (16675篇文章)Windows操作系统安装
- (11705篇文章)服务器配置专栏
- (6379篇文章)IIS服务器应用技巧
- (22154篇文章)系统安装手册
- (23次浏览)Exchange服务器管理几个常见问题
- (15次浏览)如何查询一台服务器上绑定了多少个域名?
- (8次浏览)解析:Win2008 Server防火墙设置
- (7次浏览)Windows下更换用户身份访问Samba服务器
- (6次浏览)终结Webshell 加固web服务器
- (5次浏览)服务器优化扩展方案为网管减负
- (5次浏览)自动发现与 Exchange 2007
- (4次浏览)在Exchange 2003中排错入站邮件流问题
- (3次浏览)利用混合管理模型 提高邮箱服务器效率
- (3次浏览)使用Windows PowerShell查看系统信硬件信息-1




