基于WebOSGi的Web组件化开发3——WebOSGi框架的提出

来源:互联网 发布:cla共轭亚油酸 知乎 编辑:程序博客网 时间:2024/04/27 23:21

 

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卡发没有区别不大