`
ferreousbox
  • 浏览: 284683 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

基于Equinox的OSGI4的单独部署与基本应用

阅读更多

    大家如果关注eclipse的话应该会注意到,目前eclipse的底层插件体系架构已经改成了OSGI的插件结构。OSGI就是“开放服务网关协议”,OSGI官方称是面向服务的系统架构,也可以理解为面向组件的架构,系统中每一个组件或者一个模块称之为bundle,这也是OSGI里的概念模型。更多的OSGI的介绍,大家可以Google一下或baidu一下。

 

    本人接触OSGI时间不长,没有过多的深入,也是初涉OSGI,不过也是非常看好目前这一架构的,相信应该是后期软件开发的潮流吧。今天主要是记录下如何部署一个单独的OSGI系统,一来便于自己以后速查,二来也希望可以给初学者一个Best Practice。

 

    我这里以eclipse3.4的plugin目录下的org.eclipse.osgi_3.4.0.v20080605-1900.jar为例,其实这个jar包就是OSGI4的完整实现,eclipse官方称为Equinox,我们将其复制并改名为equinox.jar,呵呵。或者你也可以到equinox的官方网站下载最新的jar包。随后我们在同目录下建立一个bat文件,如下:

 

java -jar equinox.jar -console -Declipse.ignoreApp=true -Dosgi.noShutdown=true

 

    保存然后双击该bat文件,会出现:osgi>的提示符,这表示OSGI已经启动成功了。接着输入:

 

osgi>ss

 

    会出现如下内容:


Framework is launched.

id      State       Bundle
0       ACTIVE      org.eclipse.osgi_3.4.0.v20080605-1900

 

    我们可以看到有一个bundle已经启动了。然后我们就可以很方便的部署和卸载(完全动态)一个个bundle了。我们随便从eclipse的plugin目录中copy一个bundle到该目录,比如org.eclipse.osgi.services_3.1.200.v20071203.jar,然后在OSGI的控制模式下输入如下命令:

 

osgi>install reference:file:org.eclipse.osgi.services_3.1.200.v20071203.jar

 

    会看到系统提示如下:

 

Bundle id is 1

 

    表示OSGI框架自动为该bundle分配了一个唯一的ID,然后再输入ss命令查看如下:

 

Framework is launched.

id      State       Bundle
0       ACTIVE      org.eclipse.osgi_3.4.0.v20080605-1900
1       INSTALLED   org.eclipse.osgi.services_3.1.200.v20071203

 

    结果列表中的State表示bundle的状态,我们可以看到刚刚部署的services为INSTALLED,表示该bundle处于已经被安装的状态,但是还没有启动,接着我们来启动该bundle。

 

osgi>start 1

 

    使用start命令来启动刚安装的bundle,其后的1参数表示该bundle的唯一ID,如果没有出现错误(因为启动bundle时OSGI框架会校验该bundle的相关信息),接着输入ss再次查看,会出现如下结果:

 

Framework is launched.

id      State       Bundle
0       ACTIVE      org.eclipse.osgi_3.4.0.v20080605-1900
1       ACTIVE      org.eclipse.osgi.services_3.1.200.v20071203

 

    这样,我们的bundle就已经正式运行了。同样,我们也可以动态的停止或卸载某一个bundle,使用stop命令停止bundle,如下:

 

osgi>stop 1

 

    然后再ss查看结果:

 

Framework is launched.

id      State       Bundle
0       ACTIVE      org.eclipse.osgi_3.4.0.v20080605-1900
1       RESOLVED    org.eclipse.osgi.services_3.1.200.v20071203

 

    这时我们看到刚刚的bundle处于RESOLVED状态,该状态表示bundle已经处于被解析完毕状态,可以启动或已经停止了。被停止的bundle是处于非服务状态的,然后我们也可以卸载该bundle,卸载后该bundle将不能够再使用和管理了,必须重新安装。如下:

 

osgi>uninstall 1

 

    然后,再ss查看如下:

 

Framework is launched.

id      State       Bundle
0       ACTIVE      org.eclipse.osgi_3.4.0.v20080605-1900

 

    发现已经没有了刚才的bundle,即完全从OSGI中被移除了,除非我们重新安装,重新安装后,其ID将会被重新分配,而不是之前的1了,比如我们再次安装。

 

osgi> install reference:file:org.eclipse.osgi.services_3.1.200.v20071203.jar

 

    然后再ss查看状态如下:

 

Framework is launched.

id      State       Bundle
0       ACTIVE      org.eclipse.osgi_3.4.0.v20080605-1900
2       INSTALLED   org.eclipse.osgi.services_3.1.200.v20071203

 

    可以看到其ID已经变成了2,而不是之前的1了。

 

    这基本上就是OSGI的bundle的基本管理命令,更多的命令可以输入help来获取帮助。当然,看懂这必须得熟悉OSGI框架的基本结构和应用模式。希望以后也可以和大家一起探讨OSGI的开发和部署等各个方面:-)

3
1
分享到:
评论

相关推荐

    node-v9.9.0-win-x86.zip

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    node-v6.13.0-sunos-x64.tar.gz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    毕业设计Python基于LSTM的多步向前手术风险预测项目源代码+数据+论文

    毕业设计Python基于LSTM的多步向前手术风险预测项目源代码+数据+论文

    node-v9.2.0-x86.msi

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    258ssm-mysql-jsp 陆丰市医院分诊管理系统.zip(可运行源码+数据库文件+文档)

    医院分诊管理管理系统是典型的信息管理系统,其主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起一致性、完整性强和安全性好的数据库。而对于后者则要求应用程序具有功能完备,易使用等特点。经过分析如此情况,决定使用Java语言进行开发,利用其提供的各种面向对象的开发工具,数据库方面使用当前比较流行的mysql。 本系统主要包括以下功能:系统设置功能、患者管理模块、分诊管理功能、诊断管理功能。1) 系统设置模块 系统设置包括权限管理和用户信息。此模块主要功能包括: ·添加、修改、删除和查看用户信息; ·给用户分配权限; 2) 患者管理功能 此模块的主要功能包括: ·包括添加、修改、删除和查看患者信息; 3) 科室管理模块 此模块主要功能包括: ·包括添加、修改、删除和查看信息; 4) 分诊管理模块 本模块用于对分诊信息进行统计和查询,主要包括: ·分诊排队; ·分诊叫号; 关键字 面向对象;数据库;java;医院分诊管理系统;mysql。

    心电图机监控软件 vc++ 心电图机数据采集 曲线显示诊断病历源码.zip

    心电图机监控软件 vc++ ,心电图机数据采集 , 曲线显示, 诊断 , 病历

    node-v9.10.0-x86.msi

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    儿童编程启蒙之Scratch编程详解

    Scratch是一款专为儿童设计的图形化编程语言,通过直观易懂的界面和丰富的功能模块,帮助孩子们理解编程的基本概念,激发创新思维,培养解决问题的能力。本文将全面介绍Scratch的特点、应用及教育意义,为广大家长和教育工作者提供有益的参考。 Scratch作为一款专为儿童设计的图形化编程语言,以其直观易懂的界面和丰富的功能模块,为儿童编程启蒙教育提供了有力的支持。它不仅能够帮助孩子们掌握基本的编程技能,还能够培养他们的逻辑思维能力、创新精神和团队合作能力。因此,广大家长和教育工作者应该充分利用Scratch这一工具,为孩子们创造一个充满乐趣和挑战的编程学习环境,让他们在快乐中成长,为未来的学习和发展打下坚实的基础。

    node-v9.11.0-x86.msi

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    波士顿.py

    波士顿.py

    Fortran学习规划与基本案例.pdf

    这份文档是一份详细的Fortran语言学习规划及基本案例说明,对于希望学习和掌握Fortran编程语言的用户来说,是一份极为宝贵的参考资料。 首先,文档明确了学习Fortran的背景与目标,有助于学习者明确自己的学习方向和目的,从而更有针对性地进行学习。同时,文档还详细规划了学习内容和时间安排,从基础知识学习到项目实践与综合应用,每个阶段的学习任务都清晰明了,为学习者提供了一个系统的学习框架。 其次,文档还介绍了Fortran语言的基本用法和案例,包括变量声明与赋值、数组、程序结构与流程控制等方面的知识,并通过实例练习来帮助学习者加深对知识点的理解和应用。这些案例不仅具有代表性,而且具有很强的实用性,可以帮助学习者更好地掌握Fortran编程技能。 此外,文档还提供了学习方法与资源的建议,为学习者提供了多样化的学习途径和参考资料。无论是官方文档、教材与参考书目,还是在线学习平台和科研团队的经验分享,都为学习者提供了丰富的学习资源,有助于学习者更全面地了解Fortran语言的特点和应用。

    answer.sql

    answer.sql

    Sora AI Video Preview Case Sora AI 视频模版项目,React全栈快速部署.zip

    Sora AI Video Preview Case Sora AI 视频模版项目,React全栈快速部署.zip

    最新试用版发货100虚拟商品自动发货系统 源码免费下载.rar

    最新试用版发货100虚拟商品自动发货系统 源码免费下载.rar最新试用版发货100虚拟商品自动发货系统 源码免费下载.rar

    ### Linux:信息、使用技巧和优缺点

    linux

    node-v8.16.0-x86.msi

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    node-v12.22.9-linux-x64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    源代码-access 管理 系统 API 文件.zip

    源代码-access 管理 系统 API 文件.zip

    基于Qt的频谱分析器,修改于Spek,支持Windows和Linux平台.zip

    基于Qt的频谱分析器,修改于Spek,支持Windows和Linux平台

Global site tag (gtag.js) - Google Analytics