Karaf OSGi && JavaEE 通俗易懂版 实战教程入门(一)

6 篇文章 0 订阅
5 篇文章 0 订阅

2015,出于工作需要我学习了下OSGi作为新项目的基础平台,但有感于该技术在实际运用上的资料匮乏,为避免他人也遇到同样的问题,特写下此文。

希望能让看到的人能少走我走过的弯路,那就是我最大的荣幸。

注:

本文非JavaEE入门级教程,很多细节可能会被无意识的忽略,比如maven、jetty、javaEE各部件等等,你需要对这些有点基本了解。

常年的研发工作,使我早已习惯在linux下开展工作,Windows对我来说只是使用Office系列的平台。如非特别需要,文中都将使用linux里的命令,希望你对linux的基本命令也有所了解。

1、参考资料

书籍:

《深入理解OSGi 》equinox原理、应用与最佳实践     周志明 谢小明

官网:

apache karaf 

eclipse VTS

osgi 规范

2、建议学习路线

第一步:仔细阅读《深入理解OSGi》这本书的第一部分和第二部分,对osgi有系统的概念。

这时的你写不出osgi下的程序

第二步:照着《深入理解OSGi》的第5章写出基于 Equinox的hello world

能写出该App即可,不要对Equinox太纠结,它不是我们的主要目标,注重对第一步中的osgi 的模块层、生命周期层、服务层这三大部分的理解

第三步:OSGi技术选型

没错,选型!!该过程能让你对OSGi更加理解,剧透以下,Equinox及其衍生除的VTS并不适合生产用,但建议你去学习、研究,搞明白为什么我会这么说,想走捷径者可以忽略选型过程,直接看结果即可

第四步:构建基于OSGi的JavaEE平台

这里你需要填很多坑,希望看完本教程能让你少填一些。但我个人很喜欢干填坑的事,遇到问题、研究问题、解决问题,不断拜读各官网资料的同时自身也得到提高,划算!!

3、OSGi基础入门

这里你需要理解OSGI规范的三个最重要部分:模块层、生命周期层、服务层。为了能做到理解深刻,即使在你已经完成全部学习路线后,依然回到这里仔细读下,一定有能让你再领悟一次的知识在等你。

使用OSGi的基本目标:高度模块化!!!高度解藕!!!SOA!!!!好维护!!!

a、模块层:OSGi是严格要求模块化的,模块有个专有名词:bundle。每个模块都是一个bundle,一个Business Logic由多个bundle来实现。

重点:这一部分需要额外理解java的类加载器架构及osgi的类加载器架构,两者的区别要能分清。

注:后面全部使用bundle代替模块来表述。

b、生命周期层:bundle是需要osgi进行解析的,每个bundle在变得可用之前,都需要完整经历该生命周期。

重点:当一个bundle无法被解析时,请按照osgi的类加载器架构和bundle的生命周期周期来检查问题,统统都能找到根源。

c、服务层:osgi技术全面贯彻了SOA,每个bundle都是其他bundle提供服务,夸张一点说,不提供服务的bundle就没有存在的价值。

重点:为了能够提供、或者使用服务,每个bundle都需要引入(ref)或者向外提供服务(service)。

4、OSGi技术选型

从OSGi基础入门直接跳到了OSGi技术选型,是为了节省大家的时间,作为OSGI入门,了解上述基础知识也就够了。书中的其他后续章节暂时不用去看,因为我们是用JavaEE的理念去构架OSGi框架,快速见到阶段性成果才有动力。

工作中我写了一篇技术选型报告,这里只摘录下结论:

1、Equinox    :比较适合不需要集成太多外部技术的应用,如桌面应用开发,当需要进行集成时,会遇到相当多的兼容性问题;

2、VTS      :Eclipse Virgo Tomcat Server具备开发BS架构的能力,但第三方集成存在许多障碍,许多第三方厂商在提供OSGi服务时会要求平台本身就具备一些依赖项,比如特定的配置管理服务等等,有些服务VTS是无法集成的(第三方未提供支持)。

3、Felix    :与Equinox非常相似,都属于基础环境。但也有一个最大的不同,其兼容性、可扩展性都比较强,能够很方便的集成Web Container、DataSource管理等许多实际开发中必须具备的组件。但是这里有个很大的隐患:所有的集成都需要手工完成,质量、测试都无法保证,作为系统最重要的基础运行环境,其稳定性、可靠性是至关重要的。

4、Karaf  :在基础OSGi环境基础上,默认集成了一些常规服务,并且提供了比VTS更宽泛的第三方支持,许多第三方厂商需要的依赖项其已默认集成并经过了测试。这些特性都体现出Karaf比其他三项更适合作为商业化产品的开发、运行平台。

结论:使用karaf作为接下来的osgi基础平台,进行下一步的JavaEE与OSGi整合工作。


5、第一次运行apache karaf

Apache karaf官网中下载3.0.4或者3.0.5,一定要是3.0.x系列,写本文的时候4.0.3已经可以使用,但我不建议这么做。比较好的路线是:

a、使用3.0.x开发一个具备基本功能的JavaEE应用

b、将该应用migrate到4.0.x,解决其中遇到的问题

c、总结遇到的问题,该过程会让你对OSGI更加了解,有些最重要的知识、经验教训在书本或者很多资料中是没有的,这些都是财富。

有没有发现,这个产品经历了从产品开发到OSGI架构升级的完整过程,如果打算在OSGI上走的更远,这一步必不可少。


运行karaf的前提条件:oracle java sdk 运行库,1.7以上版本(注意限定了oracle ,版本1.7以上,因为openjava jdk是无法提供完整功能的),安装过程暂略,有时间会写一篇完整的linux下搭建javaee开发环境


下面以karaf 3.0.5 为例:

tar -vxf apache-karaf-3.0.5.tar.gz   //解压缩

cd apache-karaf-3.0.5/bin

./karaf  //启动karaf

如无意外,应该看到karaf的命令行提示符界面:



恭喜成功!!!!!

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值