CN103064676B - 一种对开放服务网关中组件的控制方法 - Google Patents
一种对开放服务网关中组件的控制方法 Download PDFInfo
- Publication number
- CN103064676B CN103064676B CN201210567776.2A CN201210567776A CN103064676B CN 103064676 B CN103064676 B CN 103064676B CN 201210567776 A CN201210567776 A CN 201210567776A CN 103064676 B CN103064676 B CN 103064676B
- Authority
- CN
- China
- Prior art keywords
- pty
- executable file
- file
- felix
- bundle
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种对开放服务网关中组件的控制方法,应用于Linux操作系统,控制任务包括一管理进程和一运行进程,在内核中设置相互通信的一PTY主设备和一PTY从设备;管理进程打开PTY主设备,并调出运行进程,接收来自用户任务的消息输入并转化为Felix命令行输入后向运行进程发送;运行进程打开PTY从设备,接收来自于管理进程的输入,重定向标准输入,标准输出和标准错误至PTY从设备,然后运行Felix命令行命令。本发明在当前的嵌入式设备中,依然是以Linux作为操作系统,而且大部分的管理任务依然是工作在C环境下,因此本发明方案对于环境的适应性强,能够方便地对Bundle进行灵活的控制,安全性高。
Description
技术领域
本发明涉及网络及计算机领域,尤其涉及一种对开放服务网关中组件的控制方法。
背景技术
随着信息技术的不断演进,用户需求不断提高,对于嵌入式设备,特别是终端设备的业务需求不断提升,为了更好地进行模块管理以及服务升级,在嵌入式设备中开始引入OSGi框架。
OSGi(Open Service Gateway Initiative,公共服务平台)是一种基于Java语言的服务(业务)平台规范。该服务平台是一种为多种环境下的所有类型的网络设备的应用程序和服务进行传递和远程管理的开放式平台。该规范的核心部分是一个框架,其中定义了应用程序的生命周期模式和服务注册,并且OSGi强调模块化与服务化,技术人员可以在基于OSGi应用的情况下切换服务,实现动态更新的目的。
OSGi可以将具体的应用划分为各个独立的Bundle(应用集合),并进行非常灵活的组合,在运行时还可以对每个Bundle进行独立的控制,如利用start、stop、uninstall等命令。
OSGi的实现框架有很多,对于Bundle的控制也略有不同,但是主要都以命令行及配置文件为主,有些实现框架,如Eclipse的Equinox,还提供了telnet的控制方式。但是很明显,命令行方式对于C任务并不方便,配置文件只能在启动时起作用,灵活性大打折扣,而telnet方式不但不方便,而且会引入安全性问题。
发明内容
针对上述存在的问题,本发明的目的是提供一种对开放服务网关中组件的控制方法,基于伪终端的控制方式,实质上对OSGi的命令行控制方式进行了封装,即获得了对Bundle的灵活控制,又使C环境的任务能够方便的进行操作。
本发明的目的是通过下述技术方案实现的:
一种对开放服务网关中组件的控制方法,应用于Linux操作系统,其中,用户通过Linux的消息机制向一控制任务发送消息,实现对Linux系统中可执行文件的安装和控制管理;
所述控制任务包括一管理进程和一运行进程,在内核中设置相互通信的一PTY主设备和一PTY从设备;
所述管理进程打开所述PTY主设备,并调出所述运行进程作为所述管理进程的子进程,接收来自用户任务的消息输入并转化为Felix命令行输入后向所述运行进程发送;
所述运行进程打开所述PTY从设备,接收来自于所述管理进程的输入,重定向标准输入,标准输出和标准错误至所述PTY从设备,然后运行所述Felix命令行命令;
所述管理进程和所述运行进程通过所述PTY主设备和所述PTY从设备进行通信。
上述对开放服务网关中组件的控制方法,其中,所述Linux系统中可执行文件的状态包括Installed状态、Resolved状态、Starting状态、Active状态、Stopping状态和Uninstalled状态,其中,所述Installed状态表示可执行文件已经被成功安装,所述Resolved状态表示可执行文件所需要的所有类已经可用,所述Starting状态表示可执行文件正在启动且开始方法已经被调用但是还未返回,所述Active状态表示可执行文件已被激活,所述Stopping状态表示可执行文件正在被停用,所述Uninstalled状态表示可执行文件已经被卸载。
上述对开放服务网关中组件的控制方法,其中,在所述管理进程中,当用户任务卸载状态为Uninstalled的可执行文件时,所述可执行文件将从所述管理进程的内部数据中删除。
上述对开放服务网关中组件的控制方法,其中,在安装所述可执行文件时,所述管理进程接受参数为本地文件的请求或者为远端文件的请求,当为远端文件时,所述管理进程先完成对此文件的下载,再进行安装。
上述对开放服务网关中组件的控制方法,其中,在所述管理进程和所述运行进程中,所有的操作的参数均为所述可执行文件对应的文件名称,在所述命令行命令中,在安装所述可执行文件时使用的参数是文件名称,此时将返回一个Bundle ID,之后对所述可执行文件的操作均使用所述Bundle ID作为参数。
上述对开放服务网关中组件的控制方法,其中,在所述管理进程中,在收到来自用户任务安装所述可执行文件的请求后,将该请求转化为对应的Felix命令行命令,发送给所述PTY主设备,并且读取所述PTY主设备的输出,解析其中返回的所述Bundle ID,保存为内部数据;在收到用户任务对于所述可执行文件进行非安装操作的请求时,根据所述可执行文件的文件名称,找到对应的所述Bundle ID,再转化为相应的Felix命令行命令,发向所述PTY主设备。
上述任意一项对开放服务网关中组件的控制方法,其中,所述Linux系统中可执行文件表示所有除Felix框架所需要的系统可执行文件以外的可执行文件。
与已有技术相比,本发明的有益效果在于:
在当前的嵌入式设备中,依然是以Linux作为操作系统,而且大部分的管理任务依然是工作在C环境下,因此本发明方案对于环境的适应性强,能够方便的对Bundle进行灵活的控制,安全性高。
附图说明
图1示出了本发明对开放服务网关中组件的控制方法的框架结构示意图;
图2示出了本发明对开放服务网关中组件的控制方法的Bundle状态的迁移状况示意图;
图3示出了本发明对开放服务网关中组件的控制方法的管理进程的流程示意图。
具体实施方式
下面结合原理图和具体操作实施例对本发明作进一步说明。
本发明对开放服务网关中组件的控制方法主要应用于Linux操作系统,用户通过Linux的消息机制向一控制任务发送消息,实现对Linux系统中可执行文件的安装和控制管理。
如图1所示,控制任务包括一管理进程和一运行进程,与常见的伪终端任务类似,控制任务分为父子两个进程,管理进程为父进程,运行进程为子进程。管理进程打开PTY主设备,并通过fork函数调出运行进程在内核中设置相互通信的一PTY主设备和一PTY从设备,管理进程打开PTY主设备,并调出运行进程作为管理进程的子进程,接收来自用户任务的消息输入并转化为Felix命令行输入后向运行进程发送。
运行进程打开PTY从设备,接收来自于管理进程的输入,重定向标准输入,标准输出和标准错误至PTY从设备,然后运行Felix命令行命令。
对于外部用户任务来说,通过Linux的消息机制向控制任务发送消息,对可执行文件,即Bundle进行控制管理,实际上就是控制Bundle的生命周期的变化。
理论上来说,Bundle的状态,即生命周期分为六种:
Installed:Bundle已经被成功安装
Resolved:Bundle所需要的所有类已经可用
Starting:Bundle正在启动,start方法已经被调用,但还未返回
Active:Bundle已被激活
Stopping:Bundle正在被停用
Uninstalled:Bundle已经被卸载。
上述六种状态的迁移状况如图2所示。
管理进程的主要任务是接收来自用户任务的消息输入,转化为Felix的命令行输入。
如图3所示,在安装Bundle时,管理进程不但可以接受参数为本地文件的请求,还是接受参数为远端文件的请求。当为远端文件时,管理进程先完成对此文件的下载,再进行安装。
从上文中介绍的管理接口可以看到,为了方便用户任务,所有的操作的参数均为Bundle对应的文件名称。实际上,在Felix的命令行命令中,在安装Bundle时使用的参数是文件名称,此时会返回一个Bundle ID。之后对此Bundle的操作,如Start、Stop等都使用此Bundle ID作为参数。
因此在管理进程中,在收到来自用户任务安装Bundle的请求后,将此请求转化为对应的Felix命令行命令,发送给PTY主设备。并且,读取PTY主设备的输出,解析其中返回的Bundle ID,保存为内部数据。在收到用户任务对于某Bundle进行非安装操作的请求时,根据此Bundle的文件名称,找到对应的Bundle ID,再转化为相应的Felix命令行命令,发向PTY主设备。
在管理进程中,并不保留状态为Uninstalled的Bundle,也就是说,当用户任务Uninstall某个Bundle时,此Bundle将会被从管理进程的内部数据中删除。
运行进程与普通伪终端的子进程基本相同,即打开PTY从设备,重定向标准输入,标准输出和标准错误至PTY从设备,然后运行Felix。
实际上在OSGi框架中一般至少有两种方式,配置文件和命令行,Felix也不例外。控制任务需要了解特定Bundle在Felix中对应的Bundle ID,才能对此Bundle进行操作,在实现中是在安装此Bundle时读取Felix的返回信息来获得的。虽然实际上控制任务可以通过主动向Felix发送一个Bundle状态获取命令来得到Bundle的信息,但是为了简化逻辑,在实际部署中,所有的用户Bundle均通过向控制任务发送消息的方式进行安装。用户任务Bundle指的是所有除Felix框架所需要的系统Bundle以外的Bundle,系统Bundle一般均与命令行操作相关,常见的有:
org.apache.felix.gogo.command_0.8.0.jar
org.apache.felix.gogo.runtime_0.8.0.jar
org.apache.felix.gogo.shell_0.8.0.jar
Bundle依然需要通过配置文件启动,因为在这些Bundle启动之前,Felix无法接受命令行命令。
本发明在当前的嵌入式设备中,依然是以Linux作为操作系统,而且大部分的管理任务依然是工作在C环境下,因此本发明方案对于环境的适应性强,能够方便地对Bundle进行灵活的控制,安全性高。
以上对本发明的具体实施例进行了详细描述,但本发明并不限制于以上描述的具体实施例,其只是作为范例。对于本领域技术人员而言,任何等同修改和替代也都在本发明的范畴之中。因此,在不脱离本发明的精神和范围下所作出的均等变换和修改,都应涵盖在本发明的范围内。
Claims (3)
1.一种对开放服务网关中组件的控制方法,应用于Linux操作系统,其特征在于,用户通过Linux的消息机制向一控制任务发送消息,实现对Linux系统中可执行文件的安装和控制管理;
所述控制任务包括一管理进程和一运行进程,在内核中设置相互通信的一PTY主设备和一PTY从设备;
所述管理进程打开所述PTY主设备,并调出所述运行进程作为所述管理进程的子进程,接收来自用户任务的消息输入并转化为Felix命令行输入后向所述运行进程发送;
所述运行进程打开所述PTY从设备,接收来自于所述管理进程的输入,重定向标准输入,标准输出和标准错误至所述PTY从设备,然后运行Felix命令行命令;
所述管理进程和所述运行进程通过所述PTY主设备和所述PTY从设备进行通信;
所述Linux系统中可执行文件的状态包括Installed状态、Resolved状态、Starting状态、Active状态、Stopping状态和Uninstalled状态,其中,所述Installed状态表示可执行文件已经被成功安装,所述Resolved状态表示可执行文件所需要的所有类已经可用,所述Starting状态表示可执行文件正在启动且开始方法已经被调用但是还未返回,所述Active状态表示可执行文件已被激活,所述Stopping状态表示可执行文件正在被停用,所述Uninstalled状态表示可执行文件已经被卸载;
在安装所述可执行文件时,所述管理进程接受参数为本地文件的请求或者为远端文件的请求,当为远端文件时,所述管理进程先完成对此文件的下载,再进行安装;
在所述管理进程和所述运行进程中,所有的操作的参数均为所述可执行文件对应的文件名称,在所述Felix命令行命令中,在安装所述可执行文件时使用的参数是文件名称,此时将返回一个Bundle ID,之后对所述可执行文件的操作均使用所述Bundle ID作为参数;
在所述管理进程中,在收到来自用户任务安装所述可执行文件的请求后,将该请求转化为对应的Felix命令行命令,发送给所述PTY主设备,并且读取所述PTY主设备的输出,解析其中返回的所述Bundle ID,保存为内部数据;在收到用户任务对于所述可执行文件进行非安装操作的请求时,根据所述可执行文件的文件名称,找到对应的所述Bundle ID,再转化为相应的Felix命令行命令,发向所述PTY主设备。
2.如权利要求1所述对开放服务网关中组件的控制方法,其特征在于,在所述管理进程中,当用户任务是卸载状态为Uninstalled的可执行文件时,所述可执行文件将从所述管理进程的内部数据中删除。
3.如权利要求1至2中任意一项所述对开放服务网关中组件的控制方法,其特征在于,所述Linux系统中可执行文件表示所有除Felix框架所需要的系统可执行文件以外的可执行文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210567776.2A CN103064676B (zh) | 2012-12-24 | 2012-12-24 | 一种对开放服务网关中组件的控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210567776.2A CN103064676B (zh) | 2012-12-24 | 2012-12-24 | 一种对开放服务网关中组件的控制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103064676A CN103064676A (zh) | 2013-04-24 |
CN103064676B true CN103064676B (zh) | 2017-09-26 |
Family
ID=48107314
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210567776.2A Expired - Fee Related CN103064676B (zh) | 2012-12-24 | 2012-12-24 | 一种对开放服务网关中组件的控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103064676B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103677820B (zh) * | 2013-12-05 | 2018-02-06 | 上海斐讯数据通信技术有限公司 | 一种嵌入式开发软件输出方法及系统 |
CN103970531A (zh) * | 2014-03-26 | 2014-08-06 | 深圳英飞拓科技股份有限公司 | 中心管理服务器及其管理app的方法 |
CN106716371B (zh) * | 2016-11-09 | 2020-11-10 | 达闼科技(北京)有限公司 | 打开应用的方法、电子设备及管理服务器 |
-
2012
- 2012-12-24 CN CN201210567776.2A patent/CN103064676B/zh not_active Expired - Fee Related
Non-Patent Citations (2)
Title |
---|
"Linux伪终端设备及其在L2TP中的应用";彭淑芬等;《计算机工程与设计》;20050731;第26卷(第7期);第1955-1957页 * |
"OSGi框架研究与分布式应用研究";杨锴;《中国优秀硕士学位论文全文数据库信息科技辑》;20110415(第4期);第I138-322页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103064676A (zh) | 2013-04-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102006333B (zh) | 安装软件组件的方法、系统及装置 | |
CN101317381B (zh) | 对能力管理对象维护、对能力管理的方法、系统及终端 | |
US9223559B2 (en) | Information processing apparatus, electronic control unit, information processing method, and program | |
JP2004192602A (ja) | ホームネットワークシステムおよびその運用方法 | |
US20080109828A1 (en) | Application component communication apparatus of sca-based system and method thereof | |
CN102081533A (zh) | 设备管理系统、电子设备及软件更新方法 | |
US8423996B2 (en) | Delivery system, server device, terminal device, and delivery method | |
CN105653306B (zh) | 显示启动设置界面的方法和装置 | |
CN103064676B (zh) | 一种对开放服务网关中组件的控制方法 | |
JP5476834B2 (ja) | 情報処理装置、ワークフローシステム、ワークフロー管理方法、プログラムおよび記録媒体 | |
JP2002268707A (ja) | コントローラ及びツール並びにそれらにより構成されるシステム | |
CN105763345A (zh) | 一种网元升级管理方法、装置及系统 | |
CN111880446A (zh) | 控制指令的发送方法及控制指令的接收方法 | |
CN105959302A (zh) | 一种终端管理框架及方法 | |
CN105787300B (zh) | 一种控制软件使用的方法及系统 | |
CN111818125A (zh) | 一种全厂商rpa机器人的控制方法 | |
CN113254156A (zh) | 一种容器组部署方法、装置、电子设备及存储介质 | |
CN110417598B (zh) | 网关组件的管理方法及组件管理器 | |
CN101521600A (zh) | 一种网关设备中业务控制方法和网关设备 | |
CN101944033A (zh) | 一种嵌入式系统中动态支持多种协议的装置及方法 | |
CN102929649B (zh) | Pcs7软件系统的配置系统和配置方法 | |
CN104469278A (zh) | 一种监控系统升级方法及装置 | |
CN110519092B (zh) | 边缘网关、配置工具和软plc功能的脚本化实现方法 | |
CN104331283A (zh) | 一种基于模板化wtc协议调用中间件的系统及方法 | |
CN113193981B (zh) | 一种配置下发方法及装置、网络系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170926 Termination date: 20181224 |
|
CF01 | Termination of patent right due to non-payment of annual fee |