OSGi 探秘系列 (2)- 开发第一个OSGi Bundle

在这篇文章中,我将大概讲述一下如何在Eclipse里面安装和配置OSGi开发环境,并且如何以OSGi Bundle的形式开发史上最牛的应用程序 "Hello World"。读者读完这篇文章,可以扬帆远行,开始自己的OSGi之旅了。

 

所需软件

==================================================================================

Eclipse:3.3.1

Felix binary:http://labs.xiaonei.com/apache-mirror/felix/felix-framework-2.0.1.zip

Felix 源代码:http://download.youkuaiyun.com/source/1958471

BND 编辑器:http://www.aqute.biz/repo/biz/aQute/bnd/0.0.384/bnd-0.0.384.jar

 

注释:1)BND编辑器是一个很轻的工具,能够帮助我们从.bnd文件自动在Eclipse中生成Bundle的jar文件

         2)Felix的源代码分散在不同的子项目中,我在这里整理好,供大家下载。

 

Eclipse 环境设置

==================================================================================

1 解压缩Eclipse到本地磁盘

2 将bnd-0.0.384.jar放在Eclipse的plugins目录。

3 导入Felix源代码项目:在Eclipse中,点击" File -> Import -> General -> Existing Projects into Workspace", 选中Flex源代码的zip文件,最后在Eclipse里面可以看到一个项目felix-src .

4 解压缩Felix binary的zip文件到本地磁盘, 假定路径为Felix_Home (不需要设置环境变量)

5 创建并且配置OSGi开发项目

   5.1) 创建一个Java项目,名字为"OSGi ".

   5.2) 配置OSGi项目的Java Build Path属性,在里面创建一个新的User Library 名称为"Felix", 将$Felix_Home/bin/felix.jar加入到该User Library中,并且指定Source Attachement为felix-src/src目录。

   5.3) 将$Felix_Home/bundle和$Felix_Home/conf两个目录导入到项目OSGi的根目录下面。

   5.4) 配置Run选项:点击"Run -> Open Run Dialog... " 右击 Java Application, 创建一个新的Run选项,设置选项name为Felix, Project为OSGi,Main Class为org.apache.felix.main.Main。

 

经过上述配置过程,在Eclipse Package Explorer里面,OSGi的目录结构看起来是下面这个样子:

 

OSGi /

     src

     JRE System Library (library)

     Felix (library)

     bundle /

           org.apache.felix.bundlerepository-1.4.2.jar

           org.apache.felix.shell.tui-1.4.1.jar

           org.apache.felix.shell-1.4.1.jar

     conf /config.properties

 

 

验证Eclipse 环境的Felix设置

==================================================================================

1 点击"Run -> Felix", 这是应该在Console这个View中看到下面的信息,证明你已经打开了与Flex交互的Shell会话。

 

                   Welcome to Felix
                   ================

                   ->

 

2 输入 ps 命令, 你应该看到下面信息:

 

                   Welcome to Felix
                   ================

                   -> ps
                   START LEVEL 1
                      ID   State         Level  Name
                   [   0] [Active     ] [    0] System Bundle (2.0.1)
                   [   1] [Active     ] [    1] Apache Felix Bundle Repository (1.4.2)
                   [   2] [Active     ] [    1] Apache Felix Shell Service (1.4.1)
                   [   3] [Active     ] [    1] Apache Felix Shell TUI (1.4.1)

 

我们可以看到目前有4个Bundle在运行。System Bundle是Felix框架自己,Apache Felix Bundle Repository提供了一个接口,使得我们可以下载其它Bundle,另外两个Bundle是运行我们正在使用的Shell的Bundle。

 

创建第一个OSGi Bundle

==================================================================================

1 在src下创建下面的Java类

 

package org.osgi.helloworld;

import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;

public class HelloWorldActivator implements BundleActivator {

    public void start(BundleContext context) throws Exception {
        System.out .println("Hello World!" );
    }

    public void stop(BundleContext context) throws Exception {
        System.out .println("Goodbye World" );
    }
}

 

2 在src下创建文件helloworld.bnd

 

Private-Package : org.osgi.helloworld
Bundle-Activator : org.osgi.helloworld.HelloWorldActivator

 

3 右击helloworld.bnd文件,在弹出菜单中点击Make Bundle, 这时可以看到在src目录下生成了一个helloworld.jar

 

4 在Console中输入 install file:src/helloworld.jar

5 在Console中输入 ps,这时可以看到下面信息,我们可以看到helloworld这个Bundle被安装,ID是8

 

                   START LEVEL 1
                      ID   State         Level  Name
                   [   0] [Active     ] [    0] System Bundle (2.0.1)
                   [   1] [Active     ] [    1] Apache Felix Bundle Repository (1.4.2)
                   [   2] [Active     ] [    1] Apache Felix Shell Service (1.4.1)
                   [   3] [Active     ] [    1] Apache Felix Shell TUI (1.4.1)
                   [   8] [Installed  ] [    1] helloworld (0)

 

6 分别输入命令start 8 和 stop 8,可以在Console里看到下面的信息

 

                   -> start 8
                   Hello World!
                   -> stop 8
                   Goodbye World
                   ->

 

恭喜,我们已经配置好环境,并且开发了第一个OSGi的Bundle,希望大家继续关注我后面的文章系列,继续一起学习~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值