动态可重配性同样也是 OSGi 框架提供的重要特性,在传统的 Java 项目中添加或修改构件需要停止系统,通过硬编码的方式实现构件的添加修改,这样的操作需要在编译阶段完成。 WAS 部署的一些应用需要提供 7*24 小时的服务,而原先的 WAS 并不能满足这方面的需要。通过基于 OSGi 的构件化后,在系统运行过程中就可以动态添加或更新需要的构件而不需要重启系统。这样的动态操作由 OSGi 框架的服务层来完成的,通过动态注册和注销服务实现构件的运行时插拔,即插即用。在基于 OSGi 的 WAS 中可以动态插拔不同版本的 JSP Processor Bundle 或替换为更高效的 HTTP 解析器而不必重启系统,保证了系统的可用性。
当前的软件系统对动态性、可扩展性和可维护性提出了更高的要求。面向服务构件模型通过将面向服务计算引入到构件模型中,为动态可扩展的系统开发提供了支持。 OSGi 为开发面向服务基于构件的大型软件项目提供了简单、动态和轻量级的基础框架。目前,大量的大型项目都在推出 OSGi 做为基础框架的新版本,如 Eclipse3.0 , JonAS5 , BMW 汽车控制应用系统等,由此可见,基于 OSGi 对原有软件系统进行构件化显得尤为重要。构件化和动态性是 OSGi 的两个重要优势,文中从软件构件化和构件服务化两方面提出了基于 OSGi 的软件构件化方法,并且分析了在实践中的关键问题以及解决方案。以上这些工作对基于 OSGi 的软件设计开发和面向服务构件化的软件再工程实践具有着普遍的借鉴意义。最后,通过对 Java EE 应用服务器 OnceAS 构件化的实例研究,验证了文中所提出方法的有效性。
参考文献
[1] Kaegi S R, Deugo D. Modular Java web applications [C]. In: Proceedings of the 2008 ACM
symposium on Applied computing.Fortaleza, Ceara, Brazil: ACM, 2008. 688-693.
[2] Adamek J, Hnetynka P. Perspectives in component-based software engineering [C]. In:
Proceedings of the 2008 international workshop on Software Engineering in east and south
europe.Leipzig, Germany: ACM, 2008. 35-42.
[3] Bichier M, Lin K J. Service-oriented computing[J]. 2006, 39(3): 99-101.
[4] Cervantes H, Hall R S. Autonomous Adaptation to Dynamic Availability Using a Service-
Oriented Component Model [C]. In: Proceedings of the 26th International Conference on
Software Engineering.IEEE Computer Society, 2004. 614-623.
[5] Alliance O. OSGi Service Platform Core Specification Release 4[M]. 2007.