上篇文章介绍了什么是OSGI以及使用OSGI构建应用的优点,接着介绍了两款常用的OSGI实现,分别为Apache Felix和Equinox,接下来开始介绍如何在Eclipse中使用Apache Felix和Equinox搭建OSGI运行环境。

一、搭建Apache Felix运行环境

上篇文章中介绍了Felix的下载与使用,本节我们在Eclipse中搭建Felix运行环境,并开发一个自己的Bundle,然后发布到Felix容器中,下载解压后的Felix框架文件结构如下:

felix-framework-5.6.1
│ DEPENDENCIES
│ LICENSE
│ LICENSE.kxml2
│ NOTICE

├─bin
│ felix.jar

├─bundle
│ org.apache.felix.bundlerepository-2.0.8.jar
│ org.apache.felix.gogo.command-0.16.0.jar
│ org.apache.felix.gogo.runtime-0.16.2.jar
│ org.apache.felix.gogo.shell-0.10.0.jar

├─conf
│ config.properties

└─doc
│ ....

bin/felix.jar文件为Felix最核心的部分,包括Felix框架的启动类,bundle目录下为Felix的核心Bundle,包括控制台命令,运行环境,远程Bundle资源等,conf/config.properties文件为Felix的配置信息,用于配置日志级别,Http服务端口号。了解了这些之后,接下来我们就开始在Ecilpse中搭建Felix的运行环境。

1、打开Eclipse,新建一个Java工程,名称为org.apache.felix.main。

2、在新建的Java工程中新建一个lib目录,接着把felix.jar拷贝到该目录下,然后將Felix框架中的bundle和conf目录拷贝到工程中。完成后项目结构如下图所示:



3、接下来將felix.jar添加到classpath中,操作很简单,在felix.jar上单击鼠标右键=>Build Path=>Add to Build Path。

4、接着单击Run=>Debug Configrations…菜单,在Java Application条目上单击右键new,配置如下图所示:



5、单击Debug按钮即可启动Felix框架,接着可以在控制台中输入lb命令查看所有运行的Bundle,如下图所示:

二、开发一个自己的Bundle

到此为止Felix运行环境已经搭建起来了,接下来我们可以开发一个自己的Bundle。

1、新建一个Plug-in Project,如下图所示:

如上图所示,工程名称为com.csdn.osgi.common,在Target Platform的an OSGI framewor选项,选择standard,单击Next按钮,进入如下界面:



2、继续单击Next按钮,进入如下界面,选择Hello OGSI Bundle,单击Finish按钮。



3、工程新建完毕后,项目结构如下图所示:



Eclipse向导为我们生成一个Activator,该类的内容如下:

package com.csdn.osgi.common;

import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext; public class Activator implements BundleActivator { /*
* (non-Javadoc)
* @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
*/
public void start(BundleContext context) throws Exception {
System.out.println("Hello World!!");
} /*
* (non-Javadoc)
* @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
*/
public void stop(BundleContext context) throws Exception {
System.out.println("Goodbye World!!");
} }

该类用于控制Bundle的生命周期,start方法会在Bundle启动时调用,而stop方法则会在Bundle卸载是调用。

4、接下来就是发布该Bundle,在com.csdn.osgi.common工程上单击右键=>Export,如下图所示:



5、单击Next按钮,选择导出路径,如下图所示:



6、將导出的jar包放到org.apache.felix.main工程的bundle目录下,Felix启动时即可自动加载该目录下的bundle。



7、重新运行Felix框架,输入lb命令,控制台输出内容如下:

Hello World!!
____________________________
Welcome to Apache Felix Gogo g! lb
START LEVEL 1
ID|State |Level|Name
0|Active | 0|System Bundle (5.6.1)|5.6.1
1|Active | 1|Apache Felix Bundle Repository (2.0.8)|2.0.8
2|Active | 1|Apache Felix Gogo Command (0.16.0)|0.16.0
3|Active | 1|Apache Felix Gogo Runtime (0.16.2)|0.16.2
4|Active | 1|Apache Felix Gogo Shell (0.10.0)|0.10.0
5|Active | 1|Common (1.0.0.201612172059)|1.0.0.201612172059
g!

控制台输出Hello World!!,说明我们的自己开发的Bundle已经成功运行!实际项目中我们可以使用构建工具Ant来帮助我们完成这一操作,本节内容就介绍这么多,下节介绍Eclipse中搭建Equinox运行环境。

本文源码下载地址:

http://download.csdn.net/detail/rongbo_j/9714354

转载请注明本文地址:

http://blog.csdn.net/rongbo_j/article/details/53711964

OSGI企业应用开发(二)Eclipse中搭建Felix运行环境的更多相关文章

  1. OSGI企业应用开发(三)Eclipse中搭建Equinox运行环境

    上篇文章介绍了如何在Eclipse中搭建Felix的运行环境,我们需要將Bundle发布到Felix框架的bundle目录下,Felix框架启动时才会自动加载这些Bundle,否则需要在Felix框架 ...

  2. 在Eclipse中搭建C/C++环境

    在Eclipse中搭建C/C++环境 本文地址:http://blog.csdn.net/you_and_me12/article/details/7389934 习惯了使用eclipse编程后,现在 ...

  3. Ubuntu使用日志2(在Eclipse中搭建C++交叉编译环境)

    Release用交叉编译:arm-none-linux-gnueabi-gcc. 搭建步骤: 1).在Project->Properties->C/C++ Build->Settin ...

  4. Tomcat源码分析----eclipse中搭建源码环境

    前提:JDK,至少1.7,ant,要设置ANT_HOME环境变量,需要再classpath中增加ant的lib目录,在path变量中增加ant的bin目录 1.官网下载tomcat源码包:apache ...

  5. Windows 8 IIS中配置PHP运行环境的方法

    在Windows 8 的IIS(8.0)中搭建PHP运行环境: 一:安装IIS服务器 1.进入控制面板>>程序和功能>>打开或关闭Windows 功能,找到Internet信息 ...

  6. Windows2016的 IIS中配置PHP7运行环境

    Windows2016的 IIS中配置PHP7运行环境 在Windows 的IIS(8.0)中搭建PHP运行环境: 一:安装IIS服务器 .进入控制面板>>程序和功能>>打开或 ...

  7. OSGI企业应用开发(七)细说Blueprint & Gemini Blueprint(二)

    上篇文章介绍了标准的Blueprint 规范与 Gemini Blueprint如何自定义Bean配置文件路径,本文接着上篇文章继续介绍Blueprint的使用. 一.Bean的配置 前面提到过,Ge ...

  8. eclipse中SSH三大框架环境搭建<二>

    通过上一篇博客我们可以轻松搭建strtus2的环境,接下来由我来继续介绍spring的环境搭建以及spring注入的简单使用 相关链接:eclipse中SSH三大k框架环境搭建<一> ec ...

  9. [转]在Eclipse中搭建Python开发环境

    在Eclipse中搭建Python开发环境 来自: http://hi.baidu.com/hqwfreefly/blog/item/2543181d0afd9604314e150e.html 前言 ...

随机推荐

  1. jdk1.8+SpringAOP注解报java.lang.IllegalArgumentException: error at ::0 can't find referenced pointcut select错误的不知原因的解决办法[仅供参考]

    先说办法:如果Aspectweaver-1.*.*jar这三个包版本比较低, 比如1.5.0这一层次的,可以找版本高一点的包替换低版本的包,问题可以得到解决 jar包的下载地址:https://mvn ...

  2. 安卓Dialog对话框多次显示而闪退的解决办法

    事情是这样子的,我在一个活动中自定义了一个AlertDialog,通过一个按钮点击即可弹出,而后来出现的情况是,第一次点击就没问题, 正常跳出,而第二次就直接程序闪退,然后报The specified ...

  3. JS常用工具函数(持续记录)

    1.设置获取cookie //方式1 //设置cookie function SetCookie(name, value)//两个参数,一个是cookie的名字,一个是值 { var Days = 3 ...

  4. vue教程3-06 vue路由嵌套(多层路由),路由其他信息

    多层嵌套: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...

  5. MySQL笔记(1)---MySQL体系结构和存储引擎

    1.前言 本系列记录MYSQL数据库的一些结构和实现特点,方便查询. 2.基本概念 数据库:物理操作系统文件或者其他形式文件类型的集合.MySQL中数据库文件可以是frm.MYD.MYI.ibd结尾的 ...

  6. Entity framework 预热

    Entity framework  预热 对于在应用程序中定义的每个DbContext类型,在首次使用时,Entity Framework都会根据数据库中的信息在内存生成一个映射视图(mapping ...

  7. Chapter 3 Phenomenon——22

    He paused, and for a brief moment his stunning face was unexpectedly vulnerable. 他愣住了,然后一段时间他令人昏迷的脸变 ...

  8. MathType试用期到了如何继续用

    1,卸载原来的MathType(不知道需不需要,其实删不删应该无所谓吧) 2,删除注册表中的一个值(不是默认,而是另外一个值) HKEY_CURRENT_USER\Software\Install O ...

  9. JVM学习记录-线程安全与锁优化(二)

    前言 高效并发是程序员们写代码时一直所追求的,HotSpot虚拟机开发团队也为此付出了很多努力,为了在线程之间更高效地共享数据,以及解决竞争问题,HotSpot开发团队做出了各种锁的优化技术常见的有: ...

  10. MyCAT全局序列号-数据库方式

    1.MyCat中的全局序列号介绍 在实现分库分表的情况下,数据库自增主键已无法保证自增主键的全局唯一.为此,MyCat 提供了全局 sequence,并且提供了包含本地配置和数据库配置等多种实现方式. ...