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

【OSGi初学】入门

    博客分类:
  • OSGi
阅读更多

1、OSGi的实现机制

OSGi是如何实现的呢?从本质上说,OSGi是充分使用了Java的类加载机制,对模块和应用进行了更加精细粒度的控制,然后在类域上建立一系列松耦合应用。OSGi为每一个Bundle组件定义了一些元数据信息,通过这些元数据,OSGi在运行时为每一个Bundle构建了一个独立的类域(即类空间),详细描述参考OSGi之Bundle小节。

2、OSGi的组成

OSGi在R4种将功能分为几层,包括:安全层、模块层、生命周期层、服务层和实际的服务。OSGi的核心实现即为OSGi框架,它本身也是一个OSGi Bundle。

  • OSGi的安全层(Security Layer)是一个可选的实现,该层基于Java2 安全架构,位于OSGi服务平台的底层对OSGi环境中应用的部署和管理提供更好的安全控制。
  • OSGi的模块层(Module Layer)为基于Java的应用、组件的打包,部署和校验提供了一个通用的标准化的解决方案。其他类似的解决方案如JBoss、NetBeans。
  • 生命周期层(Life Cycle Layer)为Bundle组件的安全和生命周期操作提供了API定义,该层位于安全层和模块层之上。
  • 服务层(Service Layer)定义了一个与生命周期层紧密结合的组件动态交互模型。OSGi中的服务是实现了一个或多个Java接口的Java对象,通过将这些对象依据其实现的接口注册到服务注册表中,Bundle组件可以发布自己的服务,查找使用服务,注册监听处理服务的状态变更等。
  • 实际的服务(Actual Services)是OSGi定义的一些标准的服务接口如日志服务(Log Service),包管理服务(Package Admin Service)、启动级别服务(Start Level Service)、HTTP服务(Http Service)、配置服务(Config Admin Service)、用户管理服务(User Admin Service)等等,详细的服务定义参考OSGi规范。

3、OSGi之Bundle

OSGi中的重要元素就是Bundle 和Service,Bundle提供了一种静态资源边界,类似于Web容器中的Web应用的概念。

每一个Bundle通过一个元数据文件(MANIFEST.MF)描述。OSGi框架(即SystemBundle)通过解析这个元数据文件对该Bundle进行加载和管理。Bundle通过元数据中的"Export-Package"属性将内部的类包发布给OSGi系统中其他Bundle使用,通过"Import-Package","Requie-Bundle"属性引用OSGi系统中其他Bundle发布的类包。

每一个Bundle有自己独立的类加载器(Fragment Bundle例外,其资源通过其Host Bundle加载),Bundle内部的资源(类,文件等)通过该类加载器查找和加载。Bundle的类加载器能够控制的类加载边界包括:启动类路径上的类资源,OSGi框架即SystemBundle上的类资源和Bundle内部的类资源。该类资源边界即形成该Bundle的类域。

每一个Bundle在OSGi框架中具有自己的生命周期,其生命周期内的状态包括:INSTALLED、RESOLVED、STARTING、ACTIVE、STOPPING和UNINSTALLED。

INSTALLED状态是Bundle的初始状态,当该Bundle部署到OSGi系统的Bundle Repository中时,Bundle的状态标记为INSTALLED。

Bundle内部的资源在加载之前,首先由OSGi框架对其进行解析(Resolve),解析的过程就是分析Bundle的元数据的过程,详细过程参考OSGi规范。解析后的Bundle进入RESOLVED状态,解析失败时,仍然处于INSTALLED状态。

Bundle内的资源被其它Bundle使用时,该Bundle被启动,也可以通过设定让OSGi框架在加载该Bundle时直接启动。

Bundle内的资源通过BundleContext与其他Bundle进行交互。元数据中的"Bundle-Activator"属性指定了实现BundleActivator接口的实现类,Bundle通过该类得到BundleContext,通过BundleContext可以查找其他的Bundle,查找注册在OSGi中的服务(Service)与OSGi环境进行交互等等。Bundle可以在其提供的BundleActivator实现类中进行初始化的工作,也可以注册服务到OSGi的服务注册表中,供其他Bundle查找使用。

4、开源的OSGi实现

Knopflerfish:http://www.knopflerfish.org

Oscar:http://oscar.objectweb.org

Equinox:http://www.eclipse.org/equinox

Flex:http://felix.apache.org

分享到:
评论

相关推荐

    Spring OSGI 快速入门中文教程

    本教程将帮助初学者快速理解并掌握Spring OSGi的基础概念和应用。 **1. OSGi基本概念** - **模块化系统**:OSGi的核心是模块化,每个模块称为Bundle,包含代码和元数据,可以独立加载、卸载、启动和停止。 - **生命...

    OSGi 入门 学习 实战 进阶

    "PPT"文件如"Introduce.OSGi.ppt"、"OSGI.ppt"、"OSGi in Action.ppt"和"和清华学子交流的一个OSGi PPT .pptx"可能是教学或演讲材料,通过幻灯片的形式解释了OSGi的基本概念、工作原理和实际应用场景...

    osgi入门

    作者通过一个实际的例子来帮助读者理解如何使用OSGi,使初学者能够快速入门。 **标签:“源码”,“工具”** **正文:** OSGi是一种Java模块化系统,它为Java应用程序提供了一个动态的运行时环境。在Java世界中,...

    初学OSGI

    初学者在接触OSGi时,通常会面临如何理解和应用这个技术的挑战。这篇博客文章链接()可能提供了关于OSGi入门的指导,但由于描述为空,我们将基于OSGi的基本概念和实践来展开讨论。 1. **OSGi基本概念**: - **...

    osgi相关文档、及学习资料

    教程通常会提供逐步指导,帮助初学者快速入门OSGi。可能会包括如何创建和打包OSGi Bundle、配置Manifest文件(包含Bundle的元数据)、使用Blueprint或Declarative Services进行服务声明、理解OSGi的生命周期管理以及...

    OSGi HelloWorld实例

    "OSGi HelloWorld实例"是一个典型的入门教程,旨在帮助初学者理解如何在OSGi环境中创建和运行一个简单的程序。 首先,我们需要了解OSGi的基本概念: 1. **模块(Bundle)**:在OSGi中,模块是软件的基本单元,它们...

    OSGI最佳实践

    对于初学者来说,从简单的OSGi项目开始实践,并在过程中不断学习和应用新知识,是逐步掌握该技术的有效途径。 由于提供的【部分内容】中并未包含具体的技术细节,所以无法进一步深入展开知识点。但是,根据标题和...

    osgi 实战 pdf

    《OSGi实战》一书由BlueDavy撰写,是一份详尽的OSGi入门与实战指南,适合初学者和有经验的开发者深入了解OSGi框架及其应用。以下是对该书籍核心知识点的总结: ### OSGi简介 OSGi(Open Service Gateway Initiative...

    osgi helloworld

    "osgi helloworld"是一个入门级的示例,旨在帮助初学者理解OSGi的基本概念和工作原理。这个实例包括了两个部分:`server`和`client`,它们都是OSGi的bundle。 首先,我们来看`server` bundle。这个bundle通常扮演...

    OSGi and Apache Felix 3.0 Beginner's Guide

    通过阅读《OSGi and Apache Felix 3.0 Beginner's Guide》书籍,初学者可以掌握如何利用Felix框架创建OSGi应用程序,这包括如何设置开发环境、构建、打包和部署OSGi束,以及如何使用Maven进行项目管理。这本书为想要...

    OSGi原理与最佳实践完整版+精简版+代码

    完整版通常包含了更详细的技术探讨和实践案例,而精简版则可能更侧重于基础知识的介绍,方便初学者快速入门。 首先,我们需要理解OSGi的核心特性。模块化是OSGi的基础,每个模块称为一个“bundle”,它包含Java类和...

    Enterprise OSGI in Action

    本书不仅适合初学者入门,也适合有经验的开发者从中学习实践技巧,是OSGI领域内的一部宝典。 OSGI(Open Service Gateway Initiative)是一个面向Java的动态模块系统,它定义了一组用于在单个Java虚拟机中实现模块...

    OSGI相关资料

    3. **osgi入门图解.pptx** - 这份PPT可能包含了一套逐步的OSGI入门教程,通过图表和示例帮助初学者理解OSGI的基本概念,比如bundle的结构、配置、依赖关系以及如何构建和运行一个简单的OSGI应用。这种视觉化的学习...

    OSGI实战(PDF)

    OSGI实战这本书是面向对OSGI技术感兴趣的Java开发者的入门资料,旨在提供全面的OSGI知识体系,帮助读者理解和应用OSGI框架。 在OSGI中,每个bundle都是一个独立的运行单元,有自己的类加载器,可以加载自己的类和...

    转载osgi学习,开发框架

    对于初学者,了解OSGi的运行机制和通过“Hello World”程序实践是入门的好方法。通过这个过程,开发者可以深入理解OSGi如何处理模块之间的依赖关系,以及如何动态地管理服务和组件。总的来说,OSGi不仅是一个框架,...

    OSGI 实践 资料 pdf中文

    4. "初探OSGi的全文_程序人生.htm":这可能是介绍OSGi基础知识的文章,适合初学者入门。 5. "PatternsInJava(GOF java设计模式).pdf":设计模式是软件工程中的重要概念,理解它们有助于更好地利用OSGi进行模块化设计...

Global site tag (gtag.js) - Google Analytics