`
wdhdd889
  • 浏览: 151833 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

OSGi入门

阅读更多
再过一到两周,EclipseZone将运行一系列OSGI的简短公告。放到一起它们将从一个平滑的道路进入掌握OSGi编程的艺术,不过每个公告只有一个新技术,并且它尽可能的通过10分钟来完成。所以,我们想要展示OSGi开发能够如何简单,因此我们将不使用Eclipse来开发——仅仅使用一个文本编辑器和基本的命令行工具来做。那么,欢迎来到“OSGi入门”系列。

事实上,第一个公告将比其他的要稍微长一点,因为我们需要设置一个非常基本的工作环境。开始之前,我们需要一个OSGi框架来运行。有三种开源实现来选择:Apache Felix,Knopflerfish和Equinox。我们将要写的代码都会统一在你选择的任意一个上都没问题,但是在启动指令上将有小小的不同。在EclipseZone中我们将使用Equinox,这个runtime是Eclipse自己创建的。你能从你已存在的Eclipse安装程序中复制一个副本:只需要找到org.eclipse.osgi_3.2.1.R32x_v20060919.jar文件,并复制它到一个空的目录(这个版本字符串可能不同,取决于你的Eclipse版本)。如果你没有一个Eclipse的版本,那么你可以进下载这个Jar文件:http://download.eclipse.org/eclipse/equinox/。

要保持命令的简短,我们重命名这个Jar文件为equinox.jar。现在把命令提示符带到我们的开发目录下并运行以下命令:
1 > java -jar equinox.jar –console



几秒钟,osgi>提示符将显示出来。恭喜,你正在运行OSGi!

osgi>提示符给我们访问Equinox中的命令来控制框架。如果你愿意,键入help来查看命令列表,并玩玩它们。那就完了?现在输入ss。这个是最频繁使用的命令;它代表“short status”并且它向我们展示已经安装了的Bundle列表,和它们当前的状态。(一个“Bundle”在OSGi术语中是一个模块。或者如果你是一个Eclipse开发人员,你可以认为它们像plug-ins一样;Bundles和plug-ins根本上一样的东西。)

Equinox将输出如下语句:
1234 Framework is launched.

id      State       Bundle
0       ACTIVE      system.bundle_3.2.1.R32x_v20060919



这告诉我们有一个Bundle被安装和激活了,并且它是系统Bundle。这是一个在OSGi中总是存在的特殊Bundle,它表示框架本身。

现在我们将要书写我们自己的Bundle。在之前的同样的目录下,建立一个名为HelloActivator.java的文件并复制如下代码到里面:
1234567891011 import org.osgi.framework.*;

public class HelloActivator implements BundleActivator {
  public void start(BundleContext context) {
    System.out.println("Hello EclipseZone Readers!");
  }

  public void stop(BundleContext context) {
    System.out.println("Goodbye EclipseZone Readers!");
  }
}



一个Bundle也需要一个manifest文件来声明各种关于Bundle的描述数据,例如它的名称,版本等等。所以创建一个名为HelloWorld.mf并复制以下文本到里面。非常肯定的是这个文件以一个空行结尾,不然的话jar命令行工具将截去这个文件。
1234567 Manifest-Version: 1.0
Bundle-Name: HelloWorld
Bundle-Activator: HelloActivator
Bundle-SymbolicName: HelloWorld
Bundle-Version: 1.0.0
Import-Package: org.osgi.framework




现在打开一个新的命令提示符(因为我们想要离开OSGi的运行)并使用下列命令建立Jar文件:
12 > javac -classpath equinox.jar HelloActivator.java
> jar -cfm HelloWorld.jar HelloWorld.mf HelloActivator.class



回到OSGi控制台,输入install file:HelloWorld.jar。回复将是“Bundle id is 1”。再次输入ss并且你将看到如下输出:
12345 Framework is launched.

id      State       Bundle
0       ACTIVE      system.bundle_3.2.1.R32x_v20060919
1       INSTALLED   HelloWorld_1.0.0



我们的HelloWorldBundle安装上了,但是它仍然没有激活。我们将在之后的Post中学习这些状态的意思,但是现在我们只需要通过输入start 1启动这个Bundle。“1”是第一列中这个Bundle的ID。当你做完这个你将看到“Hello EclipseZone Readers!”字样的信息。重复到你无聊了为止。不要忘了偶尔输入ss来看看Bundle的状态的变化。

这里发生了什么?我们的代码实现了BundleActivator接口,允许框架重要的生命周期时间通知我们。当Bundle启动了,框架调用start方法,并当Bundle停止了,框架调用stop方法。其他的事情将是在manifest文件中的“Bundle-Activator: HelloActivator”这一行来告诉框架我们的Bundle中的哪个类是启动器。正常情况下,我们将给个完全限定的类名,但是我们懒了下使用了默认的包。

分享到:
评论

相关推荐

    OSGI 入门资料PDF

    在本入门资料中,我们将探讨OSGI的关键概念、优势以及如何通过实战和最佳实践来掌握它。 1. OSGI原理: OSGI的核心在于它的模块系统,称为“bundle”。一个bundle是一个自包含的Java模块,包含了类、资源和元数据...

    OSGi入门教程(OSGi Introduce)

    OSGi(Open Services Gateway Initiative)是一种Java平台上的模块化服务框架,它定义了一种标准,使得开发者能够构建可互操作的、动态的、模块化的软件系统。OSGi的核心概念是基于Java的模块化,它的主要目标是为...

    OSGi入门资料-初探OSGi 的全文

    OSGi的入门资料,网上找的,初探OSGi 的全文

    OSGI入门和例子

    标题"OSGI入门和例子"意味着我们将探讨OSGI的基本概念以及如何通过实例来学习和理解这个框架。下面,我们将深入讨论OSGI的关键知识点: 1. **模块系统**:OSGI的核心是模块化,它定义了一种基于Java导出和导入包的...

    OSGI入门和整合Spring

    学习OSGI入门和整合Spring,对于开发复杂的企业级应用,或者想要提升系统灵活性和可维护性的开发者来说,是非常有价值的。通过理解OSGI的模块化机制和Spring的依赖注入原理,可以构建出更加高效和可扩展的Java应用。

    Spring OSGi 入门.pdf

    ### Spring OSGi 入门知识点...以上内容为Spring OSGi入门的基本知识点,涵盖了Spring DM的基础概念、配置方法以及如何在OSGi环境中导出和引用服务等内容。这些知识点对于理解如何将Spring与OSGi结合使用具有重要意义。

    OSGI资料,OSGI进阶,OSGI实战,OSGI入门和整合Spring

    《OSGI入门和整合Spring》则关注OSGI与Spring框架的结合,主要讨论: 1. **Spring与OSGI集成原理**:Spring的bean管理如何与OSGI服务机制相结合,实现更灵活的依赖注入。 2. **Declarative Services(DS)**:利用...

    Spring OSGi 入门.rar

    下面将详细介绍Spring OSGi的基本概念、优势以及如何入门。 一、Spring OSGi 基本概念 1. Spring Framework:Spring是一个全面的Java企业级应用开发框架,提供依赖注入、AOP(面向切面编程)、数据访问、事务管理...

    OSGI入门资料(非常beautiful的ppt)

    很基础全面的OSGI ppt教程,讲解的很详细。

    osgi入门与实践

    ### OSGi 入门与实践 #### OSGi 的历史背景 OSGi,全称为 Open Service Gateway Initiative,从字面上理解,它最初被设计为一个面向服务的平台。1999 年,OSGi 联盟成立,旨在为通过网络向设备提供服务建立开放的...

    精彩:OSGI入门以及提升

    在OSGI入门阶段,首先要理解的是它的基本概念,如bundle(模块)、服务、生命周期管理和依赖管理。Bundle是OSGI中的核心组件,它类似于Java的JAR文件,但具有自己的元数据和生命周期。每个bundle可以导出和导入服务...

    OSGi入门篇:模块层(by 静默虚空)

    在OSGi入门篇:模块层这篇文章中,作者静默虚空深入探讨了OSGi框架中模块层的基础知识以及设计模块层时OSGi联盟所做的考虑。OSGi模块层是框架中最基础的部分,它实现了Java的模块化特性,但又与Java现有的模块化特性...

    osgi入门

    **标题:“OSGi入门”** **描述:** 这篇博客文章主要介绍了OSGi(Open Services Gateway Initiative)的基础知识,包括它的起源、概念以及在Java开发中的应用。作者通过一个实际的例子来帮助读者理解如何使用OSGi...

    spring osgi 入门

    ### Spring OSGi 入门知识点详解 #### 一、Spring-DM与OSGi结合的优势 Spring Dynamic Modules (Spring DM) 是Spring Framework的一个扩展项目,它使得Spring可以在OSGi环境中运行,进而为开发者提供了模块化的...

    spring-osgi 入门手册和代码

    Spring OSGi 是一个将 Spring 框架与 OSGi(Open Service Gateway Initiative)容器相结合的开源项目,旨在提供一种在 ...提供的压缩包文件可能包含了入门手册和示例代码,这些资源将有助于你快速上手 Spring OSGi。

    OSGi 入门+进阶+实战

    **入门篇** 1. **模块系统**:OSGi的核心是模块化,每个模块称为一个Bundle,它包含类、资源和元数据。Bundle之间通过导出和导入包来实现依赖关系。 2. **生命周期管理**:OSGi Bundle有启动、停止、安装、更新和...

Global site tag (gtag.js) - Google Analytics