WebOSGi开发框架,旨在在解决传统Java EE web应用的功能耦合紧密、代码重用困难、功能组件动态热插拔等问题, 为大规模Web应用的持续开发和实施提供统一的、标准化、坚固的组件化开发、运行、组件依赖及版本管理、开发文档获取的平台。在WebOSGi的基础上,可以开发大量的业务组件,互相依赖服务(api, web servie, resoueces),协同工作。同时,同样基于OSGi规范的eclipse swordfish项目,可以与此框架无缝集成,实现组件服务的SOA化部署,推动企业ESB服务器总线体系的建立。
WebOSGi实现的大概原理为:基于OSGi组件化开发规范,将普通java应用中的OSGi应用,扩展到Web开发领域中,实现将传统web工程中的各种资源,比如serlvet、jsp、html、jsp tags、images、css等各种资源,封装套独立的组件jar文件中,使其最终在OSGi运行时中,作为一个独立且可以互相api直接调用、Web Service调用的子web应用。这样,一个大型网站被分解为若干个业务资源封闭的小web应用,协同运行于整个网站之下,每个享有独立的ServletContext和各种内部jar库, 同时相互之间可以直接的API调用,互相调用OSGi service和扩展点。
其主要优点如下:- 对普通Java EE开发习惯没有改变。
架构设计中,尽可能的做到了不改变现有Java EE开发者习惯的开发模式,将大量的框架整合操作,集成在底层和工具支持中。所以,大大降低了普通Java EE开发者学习适应成本。 - 方便的将大型Java EE应用按照功能和界面,拆分中相互依赖的组件,实现代码和资源最大程度的沉淀和复用。
- 组件动态更新和热插拔机制。
- 可以与eclipse开源swordfish项目无缝集成,实现基于SOA的企业服务器总线架构(ESB)的大型Web项目组件化开发部署。
- 统一的组件管理控制台console支持:启动、停止、更新等组件生命周期管理和执行扩展命令。
- 基于jsp tag的扩展框架,提供快速的发布UI界面封装的开发体系。运行在组件中,将包含业务的UI块封装为单一的tag。;
- 统一的多语言、静态信息国际化支持体系。
采用
OSGi/Equinox
实现采用上一节第二中方式,将
OSGi
容器集成于普通的
JEE Server
中。在
OSGi
容器中,实现对
Web
组件中资源的解析和对外界
Http
请求的调度,使得
Web
组件开
发和普通
JEE
卡发没有区别不大