`
snoopy7713
  • 浏览: 1148633 次
  • 性别: Icon_minigender_2
  • 来自: 火星郊区
博客专栏
Group-logo
OSGi
浏览量:0
社区版块
存档分类
最新评论

karaf分析

    博客分类:
  • OSGi
阅读更多

从四个方面对karf进行了分析,分别为karaf的环境变量、启动级别、karaf中出现的新概念和核心技术。

karaf涉及两个环境变量,分别为KARAF_HOME和KARAF_BASE,KARAF_HOME目录下存放的是启动karaf的必需文件,目录结构如下所示: KARAF_HOME
lib目录中包含三个文件,分别为karaf.jar、karaf-client.jar和karaf-jaas-boot.jar,这些文件会缺省加入karaf的CLASSPATH中。
etc目录中主要包含了OSGi Framework的选择配置,如使用何种OSGi Framework实现。
system目录中包含了eclipse和felix实现的OSGi Framework实现jar包。

karaf拥有6个启动级别,分别为5、8、10、15、30、40。其启动顺序是先启动数字小的级别。

  • 5级,包含了符合OSGi URL Handlers Service Specification(OSGi Core规范中第11章)的mvn协议和wrap协议。
  • 8级,包含了日志适配器(包含log4j,slf4j,commons-logging等)和日志服务。
  • 10级,包含了规范API、配置管理服务(104)、用户偏好服务(106)。
  • 15级,包含了热部署器。
  • 30级,包含了GShell、Spring DM、JMX等。
  • 40级,包含了GShell的启动器,运行至此级别时GShell转换为可用状态。

karaf设置了两个缺省级别,分别为60和100,60是指当有外部应用部署至karaf时,karaf将会把此应用的启动级别设置为60;100是指karaf启动时会缺省启动到级别100,即100以下的所有bundle都会被启动。
karaf中引用了feature的概念。feature是符合某个功能特性的bundle集的部署描述符,配置文件如下所示:

 

<features>
    <repository>urn:r1</repository>
    <feature name="f1">
        <config name="c1">
            k=v
        </config>
        <bundle>b1</bundle>
        <bundle>b2</bundle>
    </feature>
    <feature name="f2">
        <feature>f1</feature>
        <bundle>b3</bundle>
    </feature>
</features>
 


krarf可以静态的切换OSGi Framework实现,它的实现方法如下所示:

  1. 从配置文件中得到OSGi实现jar包的相对路径
  2. 利用反射机制将此jar包加入到当前ClassLoader
  3. 读取/META-INF/services/org.osgi.framework.launch.FrameworkFactory文件以得到FrameworkFactory的实现类名
  4. 通过反射机制将此类实例化后创建Framework实例并启动
分享到:
评论
4 楼 fengzhiyu_sh 2014-11-12  
你好,请教一个问题:
karaf的feature文件中,可否使用环境变量
例如:
环境变量有XX_HOME用以指定应用根目录,那么feature配置中能否写成
<?xml version="1.0" encoding="UTF-8"?>
<features xmlns="http://karaf.apache.org/xmlns/features/v1.0.0">
    <feature name="csbBase" version="1.0.1">
    <bundle start-level="80">file:${XX_HOME}/repository/******.jar</bundle>
    </feature>
</features>
我这边试验,貌似加载不到该组件。
3 楼 snoopy7713 2013-04-23  
谁是女滴?
2 楼 luckywnj 2013-04-07  
真女强人耶,122篇的OSGI,正为没有karaf的资料发愁呢,thank you 先
1 楼 liliang_xf 2013-01-29  
女枪人。  

相关推荐

    apache-karaf-4.0.0

    源代码分析可以帮助开发者深入理解Karaf的工作原理,学习如何配置和扩展容器,以及如何在OSGi环境中开发和管理应用程序。这些源码可能包括核心组件、模块、配置文件和示例应用,它们可以作为学习和调试的基础。 ...

    learning Apache Karaf 配套源码

    例如,你可以通过分析和运行源码来探索如何创建和部署bundle,配置特征,以及如何利用Felix进行服务注册和消费。此外,源码还可以帮助你了解Karaf与其他技术(如Spring、JMS等)的集成方式。 在阅读“learning ...

    Karaf在Eclispe中的启动环境

    6. **源码分析**: 标签中的“源码”可能暗示了博客可能涉及Karaf的源代码层面,如自定义Karaf配置、编写OSGi Bundle或扩展Karaf功能。 7. **工具使用技巧**: 博文可能会涵盖如何利用Eclipse和Karaf Tools提高...

    karaf启动脚本

    ### 脚本分析 #### 文件路径与环境配置 ```bash TEST_HOME=/home/niubie/tmp TEST_BIN=$TEST_HOME/bin cd $TEST_HOME ``` 这里定义了两个环境变量`TEST_HOME`和`TEST_BIN`,用于指定脚本操作的基本路径。`cd $...

    karaf decanter 示例

    《Karaf Decanter 示例详解与实践》 Apache Karaf 是一个轻量级的Java OSGi容器,它为开发人员提供了快速构建、部署和管理Java应用程序的平台。Decanter是Karaf的一个模块,专注于监控和日志管理,提供了一套全面的...

    Learning Karaf Cellar

    4. **管理集群**:深入探讨如何管理运行中的集群,包括监控、日志分析、故障排除等运维技巧。 5. **高级主题**:除了基本的集群管理之外,还涉及了高级话题,如动态扩展、性能调优等。 #### 五、核心知识点详解 ...

    distribution-karaf-0.2.0-Helium.tar.gz

    6. **流处理引擎**:提供了一套强大的流处理规则,可以动态定义数据包处理逻辑,实现细粒度的流量控制和分析。 四、OpenDaylight Helium的应用场景 OpenDaylight Helium适用于各种网络环境,包括数据中心、云计算、...

    优化Karaf+ActiveMQ运维框架.zip

    《优化Karaf+ActiveMQ运维框架详解》 在IT领域,高效的运维框架是保障系统稳定运行的关键。本篇文章将深入探讨“优化Karaf+ActiveMQ运维框架”的核心知识点,帮助读者理解并掌握如何构建和优化这样的框架,以提升...

    learning-apache-karaf:学习Apache Karaf,书籍源代码-apache source code

    10. **源代码分析**:通过阅读"学习Apache Karaf"的源代码,可以深入理解Karaf的工作原理,以及如何设计和实现一个基于OSGi的应用。 这个压缩包中的"learning-apache-karaf-master"可能是这本书的源码仓库,你可以...

    analyzer:用于分析非必需资源的特征描述符的 Karaf 命令,并测试系统存储库中是否所有资源都可用

    分析仪Karaf 特征分析器命令分析器 - 检测不需要的功能整体。 描述: 分析器处理 Karaf 功能文件依赖项,以确定接线不需要哪些存储库或工件。 注意:如果某些资源未在容器中连接,则它们可能会被标记为非必需,用户...

    CVE-2018-11788:Apache Karaf XXE漏洞(CVE-2018-11788)

    = 4.1.6分析根据,Apache Karaf默认情况下提供了功能部署程序,该功能允许用户通过将文件直接放置在deploy文件夹中来“热部署”功能XML。 将功能XML放置在deploy文件夹中时,功能部署程序将执行以下操作: 将功能XML...

    Karaf链接错误:javax.xml.dataype

    压缩包中的“Karaf-Linkage-Error-javax-xml-dataype.pdf”文件很可能提供了关于如何诊断和解决此类问题的详细指南,包括具体的命令行操作、日志分析以及可能的解决方案。建议仔细阅读这份文档,以获取更深入的理解...

    org.eclipse.4karaf:更改依赖项以与 felix 兼容

    当我们遇到“org.eclipse.4karaf:更改依赖项以与 felix 兼容”的问题时,这通常意味着我们需要调整Eclipse 4 Karaf项目的依赖关系,以便它能在Felix OSGi环境中顺利运行。 Eclipse 4 Karaf是Eclipse针对Apache ...

    Eclipse-OSGi内核源码分析

    Eclipse OSGi是Java平台上的一种模块化框架,它基于OSGi规范,为开发者提供了动态、模块化的应用程序构建环境。...同时,这也为理解和研究其他基于OSGi的框架,如Spring DM或Apache Karaf等,提供了基础。

    kettle工具——用于数据迁移等

    4. **数据分析准备**:对原始数据进行预处理,以便进行数据分析或建立数据模型。 5. **实时数据处理**:Kettle的Kitchen和Pan组件可用于调度和执行定时任务,实现数据的实时处理。 通过理解Kettle的基本概念和特点...

    ServiceMix做内部服务器发布WebService(附带案例源码)

    7. **案例源码分析**:“Login内部发布案例”可能包含一个简单的登录服务示例,展示了如何创建一个处理用户登录请求的Web服务。源码中可能会包含WSDL文件、服务实现类、部署描述符以及任何必要的配置文件。 8. **...

    ServiceMix学习笔记

    然后,你需要掌握ServiceMix的命令行工具,如karaf shell,这是进行日常管理和部署的主要手段。 接下来,理解如何创建和部署服务单元至关重要。这涉及编写服务端点的代码,封装成符合JBI规范的服务单元,然后通过...

Global site tag (gtag.js) - Google Analytics