OSGi是基于Java的服务平台的规范,本质是将Java面向对象的开发转向面向组件和服务的开发,具有服务组件模块化,动态加载应用等特点。Equinox 则是Eclipse所使用的OSGi框架,是Eclipse强大的插件体系的基础,是Eclipse著名的PDE开发环境的底层,Eclipse的稳定可靠性也为该框架带来了声誉。
Equinox是EclipseRT工程的一部分,为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中的元数据 |
相关推荐
1. **选择OSGi容器**:有多种OSGi容器可供选择,如Apache Felix、Equinox(由Eclipse提供)或Karaf等。这些容器提供了运行和管理OSGi Bundle的基础。 2. **配置容器**:安装并配置选定的OSGi容器,设置相应的配置...
4. **部署服务包**:将开发好的服务包部署到Equinox容器中。通过这种方式,服务可以直接在容器内运行,也可以通过网络被其他应用调用。 5. **开发Web客户机**:创建一个简单的Web应用程序作为客户机,用于测试和...
6. **Equinox配置**:设置Equinox容器的配置,包括定义启动时自动启动的bundle,设置日志记录级别,以及配置HTTP服务等。 7. **开发工具**:Eclipse IDE提供了对OSGi开发的良好支持,例如使用PDE(Plug-in ...
- **安装至OSGi容器**:将打包后的服务安装到Equinox OSGi容器中。 - **验证服务运行状态**:检查服务是否成功启动并在容器中正确运行。 #### 第8章 ECLIPSE PDE TRACING 这部分可能涉及如何使用Eclipse PDE进行...
2. **创建项目目录和ant build文件**:按照前面所述,使用Equinox提供的工具快速搭建项目结构。 3. **编写功能性测试**:通过JUnit或其他测试框架编写测试案例,确保每个功能模块都能按预期工作。 4. **配置...
在Windows 8环境下搭建OSGi环境,通常涉及以下步骤: 1. **选择OSGi框架**:目前主流的OSGi框架有Apache Felix、Equinox等。根据具体需求选择合适的框架。 2. **安装OSGi框架**:下载并安装所选框架,例如Apache ...
1. **配置OSGi容器**:设置OSGi容器(如Equinox或Felix),并确保其正确运行。 2. **创建OSGi服务**:定义服务接口和实现,并将它们打包为OSGi bundle。 3. **配置Spring DM**:在bundle中包含Spring DM配置文件,...
你需要创建并配置这个文件,以启动Spring容器并管理应用中的对象。 **4. 设置业务代理和DAO的依赖性** 在Spring中,业务逻辑通常由业务代理(Business Delegates)处理,它们通过依赖注入与数据访问对象(DAO)进行...
13. Equinox简介:Equinox是基于Spring框架快速搭建Web应用的工具,它提供了一套预定义的目录结构和Ant构建脚本,极大地方便了基于Struts和Spring的应用开发。 14. 开发步骤概述:教程详细介绍了从下载Struts和...
- **如何配置Equinox中的Spring**:可能涉及到在OSGi容器(如Equinox)中部署和管理Spring应用。 - **用Hibernate实现UserDAO**:具体展示了如何使用Hibernate实现用户数据访问对象(UserDAO),并与Spring结合。 ...
使用Equinox搭建项目基础 - **Equinox介绍**:Equinox是一个为开发者提供基本框架的工具,它包含了用于开发Struts-Spring集成项目的目录结构、Ant构建脚本以及必要的jar文件。 - **下载与解压**:从指定网站下载...
1. **环境搭建**:首先需要安装一个支持OSGi的运行时环境,如Apache Felix或Equinox,然后配置Spring OSGi容器,如Spring DM(现在已改名为SpringSource dm Server)。 2. **编写bundle**:创建Spring配置文件,定义...
它涵盖了OSGi的开发环境搭建,如Eclipse Equinox或Apache Felix等实现。书中通过一系列实例展示了如何创建、打包和部署OSGi模块,以及如何使用OSGi的命令行工具进行管理和调试。此外,还讨论了如何利用OSGi进行服务...