基于OSGi的企业级开发框架实践——运行开发框架
之前我们已经将开发框架以及第三方Bundle都导入到Eclipse中了,现在我们先运行一下OSGi运行时,看看我们的开发框架是否能在OSGi环境中启动。不过在这之前,我们先来看看开发框架中这些Bundle的职能以及它们之间的依赖关系。如下图:
(图一)
我们的开发框架一共由12个项目组成,下表列出了每个项目(Bundle)的职能:
项目(Bundle)职能描述biz-service-impl业务逻辑的代码实现,这里要注意,业务逻辑的接口不在此Bundle中。biz-share业务逻辑中可以共享的代码实现,比如一些工具、助手、服务类等。common-dal数据库访问相关的代码实现,比如DTO,DAO等接口的定义和实现。common-service-client外部服务接口代码实现。开发框架提供Hessian做为外部服务的调用框架。common-service-facade服务门面接口定义,一般会被其他bundle或系统引入。common-service-integration统一接入其他系统的外部服务并转换成内部的Service调用。core-model核心模型代码实现,例如数据模型,业务模型等。core-platform核心功能的代码实现或是系统在启动时需要做初始化的代码实现或是系统底层的服务代码实现。*-config一些配置相关等,例如log4j,jta,jetty容器(Fragment Bundle)。web用户界面代码实现。(表一)Bundle职能说明
下图展示了开发框架中各Bundle之间的依赖关系:
(图二)Bundle依赖关系图
从上图可知,core-model Bundle是最底层的,它服务于除facade和integeration之外的所有Bundle。
现在我们可以尝试启动Eclipse中的OSGi运行时环境了,请点击“Run -> Run Configurations...”,弹出“Run Configurations”对话框,如下图所示:
(图三)
在“Name”栏中修改一下运行程序的名称,然后浏览一下Bundles列表中被选中的Bundle(注意:Target Platform下的Bundle不要选择,只要选中所有Workspace中的Bundle就可以了),最后点击“Run按钮”,这时Eclipse会关闭当前窗口,并出现Console窗口,在Console中会出现OSGi启动的日志信息,如下图所示:
(图四)OSGi启动的Console
如果在启动时出现错误信息,一般是未按照上一篇文章中介绍的步骤导入正确的第三方Bundle。在Console中输入“ss”,并按回车,可以看到所有的bundle都已经处于Active状态了,如下图所示:
(图五)Bundle已经处于激活状态
如果需要调试OSGi程序,只需要用Debug模式运行OSGi运行时就可以了(不要忘记打断点)。开发框架也提供了一个Maven插件,用于运行Web程序。打开一个命令行窗口,并将当前目录切换至应用程序的Web目录,如下图所示:
(图六)
然后在提示符下输入如下命令:
(图七)
上图中Tomcat监听端口为:8080。到此开发框架的启动就完成了,之后我们就可以正式进入编码和调试阶段了,当然开发框架还提供了一个OSGi的集成测试框架,用于测试OSGi程序。集成测试框架不需要启动Eclipse中的OSGi运行时,它本身内部模拟了OSGi的整个启动加载过程,后续文章将有详细的介绍。接下来的所有章节,我们将从开发OSGi企业级应用中所遇到的具体问题来说明我们的框架如何的帮助你更方便和快速的完成工作。