Equinox容器的搭建

OSGi是基于Java的服务平台的规范,本质是将Java面向对象的开发转向面向组件和服务的开发,具有服务组件模块化,动态加载应用等特点。Equinox 则是Eclipse所使用的OSGi框架,是Eclipse强大的插件体系的基础,是Eclipse著名的PDE开发环境的底层,Eclipse的稳定可靠性也为该框架带来了声誉。

 

EquinoxEclipseRT工程的一部分,为Eclipse提供基于OSGi的运行时环境。从代码的角度来看,Equinox不仅是OSGi R4核心标准规范的实现,它还借助Eclipse环境的一些自身的特点,提供了扩展OSGi R4提供的Bundle,以及运行基于OSGi的系统的基础架构。

 

本篇文章中我们从单个的eclipse入手,提取一个后台以命令行方式运行的Equinox容器。

 

首先,我们需要一个PDE版本的eclipse,这里以eclipse-indigo(3.7)作介绍。在PDE版本的eclipse中所有的插件都是在eclipse/plugins目录下。

 

新建文件夹用于存放所有的equinox容器中的文件,这里命名为equinox-sample-3.7,其中建立configuration(存放容器配置文件)和plugins(存放容器中的所有插件)子文件夹。

 

plugins文件夹中存放所有的系统启动必须的bundle,后续如果想要在这里存放bundle也可以直接放在该目录下,当前系统中所有必须的bundle列表如下:

 

 

 

configuration文件夹中建立config.ini文件,用于启动bundle的基本配置,配置的基本内容如下:

osgi.framework=file\:plugins\org.eclipse.osgi_3.7.2.v20120110-1415.jar
osgi.parentClassloader=ext
eclipse.ignoreApp=true
osgi.noShutdown=true
osgi.clean=true
osgi.console=
org.osgi.framework.system.packages=javax.naming, javax.naming.directory, javax.naming.spi, javax.management, javax.management.loading, javax.management.modelmbean, javax.net, javax.net.ssl, javax.crypto, javax.crypto.interfaces, javax.crypto.spec, javax.security.auth, javax.security.auth.spi, javax.security.auth.callback, javax.security.auth.login, javax.security.cert, javax.xml.parsers, javax.xml.xpath, javax.xml.transform.sax, javax.xml.transform.dom, javax.xml.namespace, javax.xml.transform, javax.xml.transform.stream, javax.xml.validation, org.xml.sax, org.xml.sax.helpers, org.xml.sax.ext, com.sun.org.apache.xalan.internal, com.sun.org.apache.xalan.internal.res, com.sun.org.apache.xml.internal.utils, com.sun.org.apache.xpath.internal, com.sun.org.apache.xpath.internal.jaxp, com.sun.org.apache.xpath.internal.objects, com.sun.org.apache.xml.internal, org.w3c.dom, org.w3c.dom.traversal, org.w3c.dom.ls, javax.sql, javax.transaction, sun.misc
org.osgi.framework.bootdelegation=*
osgi.bundles.defaultStartLevel=4
osgi.bundles=reference\:file\:org.eclipse.equinox.registry_3.5.101.R37x_v20110810-1611.jar@start,\
reference\:file\:org.eclipse.equinox.common_3.6.0.v20110523.jar@start,\
reference\:file\:org.eclipse.osgi.services_3.3.0.v20110513.jar@start,\
reference\:file\:org.eclipse.equinox.ds_1.3.1.R37x_v20110701.jar@start,\
reference\:file\:org.eclipse.equinox.util_1.0.300.v20110502.jar@start,\
reference\:file\:org.eclipse.equinox.preferences_3.4.2.v20120111-2020.jar@start

 

 

 

其中最重要的配置项就是osgi.bundles,其中定义了引用的bundle文件,以相对路径的方式引用plugins文件夹中的内容;org.osgi.framework.system.packages定义jdk中的扩展jar包,否则在equinox容器运行时会出现找不到对应的这些类似javax开头的class错误。本文中定义的属性都可以在实现bundle中通过System.getProperty获得。

 

建立完成后,我们需要写一下windows下运行的start.bat脚本:

java -jar plugins\org.eclipse.osgi_3.7.2.v20120110-1415.jar -configuration configuration -console -Xms40m -Xmx512m
 

 

 

 

 

以及Linux下运行的shell脚本:

java -jar plugins\org.eclipse.osgi_3.7.2.v20120110-1415.jar -configuration configuration -console -Xms40m -Xmx512m
 

 

具体的环境信息可以查看: https://github.com/clamaa/equinox-sample-3.7

 

windows下进行start.bat脚本的验证:



 

 

此时就可以使用equinox容器的基本命令与容器中的bundle进行操作了。

 

Equinox的控制台的部分基本命令如下(区分大小写):

install [URL]将URL表示的bundle安装到框架中
uninstall [bundleID]将id=bundleID的bundle卸载
start [bundleID]启动一个bundle
stop [bundleID]停止一个bundle
refresh [bundleID]刷新bundle
update [bundleID]更新bundle 的内容
ss简单显示所有bundle的状态
status展示安装的bundle和注册的服务
headers [bundleID]展示bundle 的manifest中的元数据

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值