在上一篇文章中我们介绍了如何创建基于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企业级应用中所遇到的实际问题出发来讲解开发框架是如何的帮助我们更方便和快捷的完成工作。

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

  1. 基于OSGi的企业级开发框架实践——序篇

    OSGi就好比达摩克利斯之剑一般,在其锋利而强大的背后却隐藏着不可预知的危险.我的形容好像有点夸张,不过大多数的研发团队基本上都认为OSGi并非像各类评论文章中介绍的那样光彩熠熠,而更多的是疑惑.怀疑 ...

  2. 基于 OSGi的企业级开发框架实践——认识OSGi和SpringDM

    一. OSGi基础 1. 什么是OSGi OSGi--Open Service Gateway Initiative,最初的目的是为各种嵌入式设备提供通用的软件运行平台.后来经过10年的发展和壮大,O ...

  3. 基于OSGi的企业级开发框架实践——发布和使用分布式OSGi服务

    随着公司业务的不断扩展,业务人员向IT部门提出了更多的需求,为了快速响应业务人员的需求,尽快的交付成果,码农们日以继夜的将代码往现有系统中不断的堆叠,直到某一天,码农们发现无法再继续往系统上堆叠新的代 ...

  4. 基于 OSGi的企业级开发框架实践——开发框架的创建

    终于到了主角登场的时刻了!之前化了不少笔墨介绍有关OSGi和Spring DM框架的内容,目的就是为了我们开发框架的出场做铺垫.在序篇中我已经介绍了做为应用程序开发框架所应具备的要素.其中最为关键的是 ...

  5. 基于OSGi的企业级开发框架实践——OSGi Annotations

    我们的开发框架之所以选择使用Spring框架,是因为它提供了一个简单易用的Bean编程模型(采用IoC和AOP设计模式),通过XML配置文件简化了复杂而冗长的Bean初始化以及依赖关系的定义.不过随着 ...

  6. Admui 源码 是一个基于最新 Web 技术的企业级通用管理系统快速开发框架

    ** QQ194633530 索取源码 ** Admui 是一个基于最新 Web 技术的企业级通用管理系统快速开发框架,可以帮助企业极大的提高工作效率,节省开发成本,提升品牌形象. 您可以 Admui ...

  7. osgi java web_基于OSGi和Spring开发企业级Web应用

    Spring 作为一个新的事实上的工业标准,OSGi已经受到了广泛的关注,就在不久前EclipseCon也发布企业级OSGi标准,而IBM以及Eclipse也宣称将大力发展Java模块化.Spring ...

  8. 软件著作权 开源框架_开源软件分享-基于.net core 3.1的快速开发框架

    曾几何时.NET们很羡慕JAVA的生态,java开源生态里面你用得着的几乎都有开源的实现.比如大数据.微服务.以及各种各样的快速开发框架,特别是spring boot出来以后,简化了SSM那套繁琐的配 ...

  9. IMI 基于 Swoole 开发的协程 PHP 开发框架 常驻内存、协程异步非阻塞

    介绍 IMI 是基于 Swoole 开发的协程 PHP 开发框架,拥有常驻内存.协程异步非阻塞IO等优点. IMI 框架文档丰富,上手容易,致力于让开发者跟使用传统 MVC 框架一样顺手. IMI 框 ...

最新文章

  1. 漂亮的PCB设计图案
  2. python3基础知识梳理(一)
  3. Kubernetes — 基于层级命名空间的多租户隔离
  4. vc中出现stack overflow错误(VS设置默认栈大小)
  5. OpenCV人脸检测并把图片写成avi视频
  6. qt中拖动窗口widget
  7. CentOS 新增swap交换空间
  8. 5G手机产业链将带动多少A股上市公司?
  9. 华为考虑对外出售5G芯片 但对象只包括苹果公司
  10. php网页事件处理方法,PHP实现事件机制的方法
  11. python中的range与xrange
  12. 何以笙箫默,一部有剧情的创意广告集?
  13. 更改项目文件夹图标(程序图标)
  14. 【Android】小米开发应用App上线注册
  15. 飞行堡垒FN+F5风扇调节失灵怎么办? 一文教你完美解决此问题
  16. Hyperledger Fabric Service Discovery CLI(服务发现命令行工具)学习笔记
  17. xx省联通SUN M5000清除故障灯MBU_B Degraded
  18. 测试员,面对自己30岁后的下坡路,我们该何去何从?
  19. 极客时间运维进阶训练营第二周作业
  20. 手机端我的优惠券页面html代码

热门文章

  1. 经典代码-request请求获取参数(post和get两种方式)
  2. 惊天大突破!「我国数学家证明 NP=P」!道翰天琼认知智能机器人平台API接口大脑为您揭秘。
  3. 四平方和定理_简化循环
  4. hbase数据库的一些基本操作(持续更新中)
  5. 读《矿矿上高中一年级》所得到的收获
  6. CompareTo和compare的区别
  7. 想要转行成为程序员该怎么做呢?
  8. 搜索FTP服务器上的文件
  9. 图的建立——邻接矩阵
  10. 服务器2003丢失系统文件,如何解决开机提示windows/system32/config/system文件丢失