基于maven快速搭建自定义的karaf开发调试环境

本文目的

Apache Karaf项目在基于OSGi的组件框架应用开发中为开发者和架构师提供了一个便利的基础运行和部署框架。通过Karaf的Feature定义及Kar打包,开发者可以自由的定义OSGi Bundle的分组并按需定制细粒度的打包定义,在系统发布时,通过自由组合这些feature及kar,可以快速发布针对性的产品或特定的发布包。

Karaf通过与maven相结合,可以为用户基于OSGi Bundle的模块化开发、测试、集成和持续交付提供方便和快速的解决方案。

本文为主要探讨在开发阶段如何快速搭建基于maven的自定义的karaf开发调试环境提供一种方案,对于想对karaf的配置环境进行自定义和裁剪的开发人员可以参考此方案。

Karaf概念基础

关于Karaf项目为OSGi基础运行环境提供的功能请参考其官方网站。这里,我重点提一下Karaf的Feature定义和Kar打包。

Karaf的Feature定义

Karaf的Feature概念可以看作是一个系统的子系统实现。我们知道OSGi是基于Bundle和Service进行开发的,对于Bundle的粒度控制需要开发人员根据项目和系统功能凭借经验自己控制。在一个大的系统中,可能存在成百上千的Bundle,这么多Bundle如果聚合在一起,如何区分和维护将是一个巨大的挑战,这往往导致一些开发人员和架构师对OSGi模块化望而却步。而通过Karaf的Feature定义,最小单元的OSGi Bundle可以根据功能部分聚合在一起形成一个功能Feature,多个Feature可以聚合在一起形成一个大的Feature,最终所有的OSGi Bundle就有序的组合起来,就可以形成清晰的,可重复利用的一个个功能Feature,实现系统的真正模块化开发和组件的重复利用。



 

现在,我们来看一个Karaf的Feature定义:

 

Xml代码   收藏代码
  1. <feature resolver="(obr)" description="Implementation of the OSGI HTTP Service" version="3.0.0-SNAPSHOT" name="http">  
  2.         <feature version="3.0.4-SNAPSHOT">pax-http</feature>  
  3.         <bundle start-level="30">mvn:org.apache.karaf.http/org.apache.karaf.http.core/3.0.0-SNAPSHOT</bundle>  
  4.         <bundle start-level="30">mvn:org.apache.karaf.http/org.apache.karaf.http.command/3.0.0-SNAPSHOT</bundle>  
  5.     </feature>  

 

 

从这个Feature定义可以看到,此Feature定义了OSGi中提供Http服务的功能,Feature里有karaf的两个http功能相关的bundle,同时,这个feature也对ops4j的Pax web项目提供的一组bundle组成的feature “pax-http”具有依赖关系。

当Karaf运行时,如果加载了此feature(位于Karaf的standard feature库中)和其所依赖的pax-http feature(位于pax-web-features库中),同时指定启动http featue,则Karaf启动时自动加载并启动这一组相关的bundle集。

Karaf Kar打包

Karaf的Kar打包功能存在于karaf的karaf-maven-plugin插件中。通过此插件,karaf可以将featue定义中的所有bundle及其依赖打包到一个以.kar为后缀的压缩文件中,形成可发布的组件包。通过karaf-maven-plugin插件与maven打包相关的其它插件配合,用户可以自由定义发布包的结构。

对于多个已定义的kar分发包,通过maven依赖,可以在一个最终的maven发布工程中打包在一起,形成一个产品的发布包。


 基于Maven的Karaf自定义调试环境搭建过程

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值