基于OSGi的企业级开发框架实践——运行开发框架

来源:互联网 发布:数据可视化案例 编辑:程序博客网 时间:2024/06/05 10:51

在上一篇文章中我们介绍了如何创建基于OSGi的企业级开发框架,并将开发框架导入到Eclipse中。接下去,我们将在Eclipse中让开发框架运行起来,一来可以检测一下我们的开发框架是否完整无缺,二来在今后的开发中我们会经常的在本地启动开发框架运行时,用来测试我们编写的代码以及发布的OSGi服务。不过在这之前,我们先来看看开发框架中这些Bundle的职能以及它们之间的依赖关系。如下图:

(图一)

我们的开发框架一共由12个项目组成,下表列出了每个项目(Bundle)的职能:

项目(Bundle)职能描述biz-service-impl业务逻辑的实现代码写在此Bundle中。接口定义也可写在common-service-facade中。biz-share业务逻辑中可以共享的实现代码写在此Bundle中,比如一些工具、助手、服务类等。common-dal数据库访问相关的实现代码写在此Bundle中 ,比如DTO,DAO等接口的定义和实现。common-service-client外部服务接口实现代码写在此Bundle中。开发框架提供Hessian做为外部服务的调用框架,也可以使用Http协议。common-service-facade服务门面接口定义,一般会被其他bundle或系统引入。common-service-integration统一接入其他系统的外部服务并转换成内部的Service调用。core-model核心模型实现代码,例如数据模型,业务模型,领域模型等。core-platform核心功能的实现代码或是系统在启动时需要做初始化的实现代码或是系统底层的服务实现代码。*-config一些配置文件用来覆盖默认Bundle的行为,例如log4j,jta,jetty容器(Fragment Bundle)。web用户界面实现代码。是一个标准WAR工程结构。(表一)Bundle职能说明

下图展示了开发框架中各Bundle之间的依赖关系:

(图二)Bundle依赖关系图

从上图可知,core-model Bundle是最底层的,它服务于除facade和integeration之外的所有Bundle。

现在我们可以尝试启动Eclipse中的OSGi运行时环境了,请点击“Run -> Run Configurations...”,弹出“Run Configurations”对话框,如下图所示:


(图三)

在“OSGi Framework”选项上点击右键,在上下文菜单上选择“New”菜单项,界面会发生变化,最终结果如下图所示:

(图四)

在“Name”栏中修改一下运行时环境的名称,例如:Helloworld,然后浏览一下Bundles列表中被选中的Bundle(注意:Target Platform下的Bundle不要选择,只要选中所有Workspace中的Bundle就可以了),将org.springframework.osgi.web.extender Bundle的“Start Level”修改为5(我们让Web Bundle最后启动),最后点击“Run按钮”,这时Eclipse会关闭当前“Run Configurations”窗口,并出现Console窗口,在Console中会出现OSGi启动的日志信息,如下图所示:

(图五)OSGi启动的Console

注意,在第一次启动时会出现如下的错误:


(图六)

这是因为我们的开发框架需要读取一个指定的system.properties文件,该文件中定义了一些全局的系统配置参数,如第一个红色框中。在assembly目录中有一个system.properties模板,将其复制到全局配置文件路径中,例如:D:/home/admin/share/data/helloworld。关于全局配置参数的更多信息将在下一篇文章中介绍。这里我们现在console中输入close命令,关闭OSGi运行时。然后将system.properties复制到指定目录中,然后再次启动OSGi。这一次,OSGi运行时启动成功了。在Console中输入“ss”,并按回车,可以看到所有的bundle都已经处于Active状态了,如下图所示:

(图七)Bundle已经处于激活状态

如果需要调试OSGi程序,只需要用Debug模式运行OSGi运行时就可以了(不要忘记打断点),和普通的Java程序调试完全一样。

开发框架还提供了一个Maven插件,用于运行Web程序。打开一个命令行窗口,并将当前目录切换至应用程序的Web目录,如下图所示:

(图八)

然后在提示符下输入如下命令:

mvn tomcat:run

之后,命令行窗口开始快速滚屏,如果是第一次启动会比较慢,因为要去远程中央仓库下载Tomcat依赖的Jar包,请耐心等待。看到如下图所示的内容,表示Tomcat启动成功

(图九)

上图中Tomcat监听端口为:8080。到此开发框架的启动就完成了(其中包含了OSGi容器的启动以及Tomcat容器的启动),之后我们就可以正式进入编码和调试阶段了,当然开发框架还提供了一个OSGi的集成测试框架,用于测试OSGi程序。集成测试框架不需要启动Eclipse中的OSGi运行时,它本身内部模拟了OSGi的整个启动加载过程,后续文章将有详细的介绍。接下来的所有章节,我们将从开发OSGi企业级应用中所遇到的实际问题出发来讲解开发框架是如何的帮助我们更方便和快捷的完成工作。

原创粉丝点击