上篇文章介绍了如何在Eclipse中搭建Felix的运行环境,我们需要將Bundle发布到Felix框架的bundle目录下,Felix框架启动时才会自动加载这些Bundle,否则需要在Felix框架启动后手动安装Bundle,我们可以发现Bundle的管理非常麻烦,而且一旦Bundle启动报错,我们修改代码后,又需要重新发布Bundle进行调试,虽然我们可以使用自动化工具Ant或者Maven进行管理,但是一个项目中如果有几百个自定义的Bundle,这些Bundle管理起来就相当繁琐。

本文开始介绍如何在Eclipse中搭建Equinox的运行环境,由于Equinox是Eclipse组织对OSGI的实现,Eclipse中也集成了Equinox框架的管理工具,而Eclipse也是目前使用非常广泛的集成开发工具,所以使用Equinox开发实际的OSGI项目是非常方便的。

一、Eclipse中的Bundle管理工具

接下来我们就来了解一下Eclipse中内置的Bundle管理工具,首先单击Run=>Debug Configurations…菜单,打开如下界面:

在OSGI Framework条目下,右键=>New,如下图所示:

这里会显示Eclipse开发工具plugins目录下的所有Bundle,由于Eclipse中已经集成了Equinox框架,所以我们只需要勾选Equinox框架的几个核心的Bundle即可启动Equinox框架。下面是启动Equinox框架必须的几个Bundle:



勾选完成后,单击Debug即可完成Equinox框架的启动,接下来可以在控制台中输入ss命令查看所有运行的Bundle,如下:

osgi> ss
"Framework is launched." id State Bundle
0 ACTIVE org.eclipse.osgi_3.10.0.v20140606-1445
1 ACTIVE org.apache.felix.gogo.shell_0.10.0.v201212101605
2 ACTIVE org.apache.felix.gogo.runtime_0.10.0.v201209301036
3 ACTIVE org.apache.felix.gogo.command_0.10.0.v201209301215
4 ACTIVE org.eclipse.equinox.console_1.1.0.v20140131-1639
osgi>

如果我们自己开发一个Bundle,该Bundle自动会在Bundle管理工具中显示,我们只需要勾选即可启动我们开发的Bundle,所以Bundle的开发与调试非常方便。

二、搭建Equinox运行环境

上节介绍了Eclipse中集成的Bundle管理工具,由于Eclipse中内置了Equinox框架,所有只需要勾选几个核心的Bundle即可运行Equinox框架,但是这种方式并不能用在项目中,因为不同的Eclipse版本,对应的Equinox框架版本不相同,项目中依赖的Bundle不能和具体的Eclipse版本有关,因为使用不同的Eclipse版本会引起很多未知的问题,而且Eclipse的plugins目录下的大多数Bundle是项目中用不到的,都会显示在Bundle管理工具列表中,所以我们需要自己下载Equinox框架的Release包,使用特定版本的Equinox框架搭建项目。

1、下载Equinox框架

首先我们需要下载Equinox框架Release发行包,读者可以从Eclipse官网下载,下载地址如下:

http://download.eclipse.org/equinox/



我们可以选择一个相对稳定的版本,例如笔者选择equinox-SDK-Luna版,下载后解压目录结构如下:



其中plugins目录下为Equinox框架所有的Bundle。

2、搭建Equinox运行环境

获取到Equinox框架的发行包后,接下来我们就开始搭建Equinox运行环境。

首先新建一个Java工程,名称为DynamicRuntime,接着新建一个core目录,將Equinox框架发行包plugins目录下的所有bundle拷贝到core目录下,如下图所示:



接着单击Window=>Preferences菜单,在弹出窗口中单击Plug-in Development=>Target Platform选项,如下图所示:



单击Add按钮,新建一个目标平台,如下图所示:



直接单击Next按钮,进入如下界面:



如上图所示,修改名称为DynamicRuntime,单击Add按钮,进入如下界面:



选择Directory条目,单击Next按钮,进入如下界面:



如上图所示输入Location为${workspace_loc}\DynamicRuntime\core,单击Finish按钮,即可显示加载的Bundle,如下图:



单击Finish按钮,接下来选择我们新建的Target Platform,单击OK按钮即可完成操作。

3、启动Equinox框架

接下来我们就可以启动上面搭建的Equinox运行环境了,单击Run=>Debug Configurations…菜单,会发现Eclipse Bundle管理工具中会显示DynamicRuntime/core目录下的所有Bundle,如下图:



勾选如下几个核心的Bundle,单击Debug按钮即可启动Equinox框架。



框架启动后,输入ss命令即可查看所有启动的Bundle,如下:

osgi> ss
"Framework is launched." id State Bundle
0 ACTIVE org.eclipse.osgi_3.10.0.v20140606-1445
5 ACTIVE org.apache.felix.gogo.command_0.10.0.v201209301215
6 ACTIVE org.apache.felix.gogo.runtime_0.10.0.v201209301036
7 ACTIVE org.apache.felix.gogo.shell_0.10.0.v201212101605
8 ACTIVE org.eclipse.equinox.console_1.1.0.v20140131-1639
osgi>

本篇文章就介绍这么多内容,下篇文章介绍如何开发一个自定义的Bundle,并使用Blueprint將Spring框架整合到OSGI中。

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

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

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

  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. eclipse中SSH三大框架环境搭建<三>

    相关链接: eclipse中SSH三大框架环境搭建<一> eclipse中SSH三大框架环境搭建<二> 引言:通过上两篇文章我们已经可以掌握struts2和spring的环境的 ...

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

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

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

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

随机推荐

  1. [LeetCode]138复制带随机指针的链表

    题目描述: 给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点. 要求返回这个链表的深度拷贝. 思路: 先遍历链表,将每个节点对应的随机指针指向的对象利用Hash ...

  2. 课程一(Neural Networks and Deep Learning),第一周(Introduction to Deep Learning)—— 0、学习目标

    1. Understand the major trends driving the rise of deep learning.2. Be able to explain how deep lear ...

  3. C++:实现类似MFC的IsKindOf功能

    假设需要一个类别库,改类别库共包含以下5个类:GrandFather(祖父类).Father(父类).Son(儿子类).Daughter(女儿类).GrandSon(孙子类) 各个类之间的继承关系为: ...

  4. Java 多线程学习笔记:wait、notify、notifyAll的阻塞和恢复

    前言:昨天尝试用Java自行实现生产者消费者问题(Producer-Consumer Problem),在coding时,使用到了Condition的await和signalAll方法,然后顺便想起了 ...

  5. Jenkins使用TFS部署

    之前发表过一篇Jenkins的文章 使用Jenkins部署.Net应用程序 里面是使用GIT做的版本管理 今天更新下使用TFS做版本管理 首先在插件管理中搜索tfs,我这里因为已经装了,所以在已安装列 ...

  6. Nginx配置资源下载目录

    访问我的博客 之前在网上找 CentOs 的镜像的时候,发现了阿里云的这个镜像源,速度蛮快的.今天也来搭建一个类似的站,使用 nginx 作为资源下载服务器. 图片详情: 安装 Nginx 参考这篇教 ...

  7. mysql计算排名 转

    from :http://www.cnblogs.com/aeiou/p/5719396.html http://www.cnblogs.com/zengguowang/p/5541431.html ...

  8. PHP面向对象——类

    <?php/** * Created by PhpStorm. * User: 63448 * Date: 2018/5/6 * Time: 9:44 *///类:相似的数据和数据操作的封装 c ...

  9. (win10)Wamp环境下php升级至PHP7.2

    (win10)Wamp环境下php升级至PHP7.2 ①下载php7.2到本地 链接:https://pan.baidu.com/s/16jqmF7GR_CRklHPAZ9VRrg 密码:4ob4 ② ...

  10. 浅析 JavaScript 链式调用

    对$函数你已经很熟悉了.它通常返回一个html元素或一个html元素的集合,如下: function$(){ var elements = []; for(vari=0,len=arguments.l ...