概述:
接触OSGi已经有两三年了,而真正运用OSGi于项目之中,也将近两年。这两年来,因为OSGi的不太成熟也让我饱受历练。
如果你对OSGi这个名词有点陌生,那本系列教程就不太适合你了,如果你想学习本系列教程,请你先去了解OSGi的相关概念。
拽写本系列教程的目的在于给想要在企业应用中使用OSGi技术的同学朋友们以实际经验指导,希望能给你带来收获。
名词解释:
OSGi:OSGi是Open Service Gateway Initiative的简称,可以称是一种技术,也可以称是一个平台,亦可称之为一种规范。
Bundle:OSGi中最重要的元素之一,也是OSGi中最小的物理元素。它是一个jar包,但它持有一份能够进行自我描述的元数据文件(MANIFEST.MF),虽然普通的jar包中也存在有MANIFEST.MF文件,但非Bundle的jar的MANIFEST.MF文件中缺少进行自我描述的元数据信息。
Equinox:OSGi的一个参考实现,也是Eclipse3.2+的核心。
SSH脚手架:SSH脚手架是指由Struts+Spring+Hibernate组合在一起的开发框架。
Spring-DM:Spring-DM是SpringDynamicModules的简称,是由SpringSource提供的,致力于整合Spring框架和OSGi平台的一个框架。
Plug-in:这里的Plug-in指基于OSGi技术的插件工程。
Maven:用来管理项目依赖及构建的一个脚本工具。
EBR:这里的EBR是SpringSource提供的Enterprise Bundle Repository的简称
入门要求:
学习本系列教程的同学需要了解SSH脚手架,熟悉Eclipse IDE开发,对Maven有一定的了解。
前期准备:
JDK1.6+
Eclipse3.4+
Spring2.5.6+
Spring-DM1.1.2+
Maven2.0.9+
EBR访问地址:http://www.springsource.com/repository/app
需要解决的问题
要使SSH脚手架能够正常运行于OSGi环境,那我们首先要解决的问题有三。其一是cglib的类加载器的改造,其二是解决数据库驱动包跟数据库连接池缺少依赖的问题,其三就是整理运行于OSGi环境下的SSH脚手架需要依赖的Bundle对象。
也许有人会说,要让Java应用程序运行OSGi那有什么困难的呢?当然,解决问题的手段多种多样,但要创建一个标准的OSGi基于OSGi的应用程序,还确实不是那么的简单。
解决了以上所说的三个问题,基于SSH开发OSGi应用就不成问题。但该如何解决以上三个问题呢,以及解决了以上三个问题后如何来规范这种基于OSGi环境下的SSH开发呢,又该如何保证开发效率能够保持在或更优于以往开发非OSGi应用时等一系列问题呢。要想了解如何解决,敬请关注本系列文章。