OSGI技术要求(3)

2020-02-20 23:12

线消息 \} 表示上线的无线设备的 \MAC地址;

A.4 对USB Dongle管理要求

要求网关在OSGi框架中提供CtUsbService服务,供第三方插件用于访问USB外设使用。其中,CtUsbService服务应实现如下功能要求:

a) 监控USB Dongle插拔事件:插入、拔出;

b) 解析USB Dongle设备类型至少包括USB Serial、USB CDC ACM、USB HID

或USB Storage;

c) 向插件提供接口用于注册感兴趣的USB Dongle设备类型; d) 当监测到USB Dongle插入事件时,为该USB Dongle设备分配唯一的USB设备

标识,并通过插件配置通道依次向感兴趣的插件发送插入消息通知,对于USB Serial、USB CDC ACM和USB HID类型的设备,要求插件在15秒内确认是否需要占用设备,如果插件要求占用设备,则停止向其他插件发送插入通知,否则继续轮询通知其他感兴趣的插件;

e) 当监测到USB Dongle拔出事件时,通过插件配置通道向目前正在占用设备的插

件发送拔出消息通知;

f) 向插件提供接口用于访问USB Dongle外设。其中供第三方bundle可调用的具体

接口要求见表B.6(接口名: com.chinatelecom.smartgateway.deviceservice .CtUsbService)。 A.5 对OSGi插件配置管理要求

网关应通过Configuration Admin Service来实现对基于OSGi插件进行配置管理(参

见图B.1)。

sd 插件传递参数流程Config Admin 手机APP管理平台网关侧平台接口模块管理BundleOSGi ConfigAdmin第3方插件Bundle插件启动()注册SetMsgConfig的ManagedService服务(Properties包括消息的内容和事务标识)插件启动()注册一个名称为 ResponseMsgConfig 的 ManagedService服务(Properties包括消息的内容和事务标识)发送插件配置消息(SetPlug-inParameterValues)配置参数发送到OSGi(指明目的插件名称)获取对应插件的SetMsgConfig()将云平台的配置消息及事务ID设置到SetMsgConfig的Properties中()调用SetMsgConfig的Update通知更新()更新回调()执行云平台的配置消息()将响应消息写入ResponseMsgConfig()调用ResponseMsgConfig的update通知更新()更新回调()从ResponseMsgConfig取出响应消息,发到插件管理模块()发送插件配置消息响应()

图B.1 插件平台配置插件参数流程图

具体要求如下:

1、 要求网关提供的Configuration Admin服务将Configuration保存到内存中(即设置

Configuration的保存路径为内存文件系统路径,如/tmp等),不允许保存到Flash中。 2、 要求网关预置管理Bundle,用于解析和处理来自智能网关及应用管理平台对插件的相关

管理命令。其中,管理bundel统一命名为:com.chinatelecom.smartgateway.mangement。 3、 要求管理Bundle应注册ManagedService服务,供第三方插件发送配置响应消息使用。其

中,要求该服务的PID为“com.chinatelecom.smartgateway.mangement.

ResponseMsgConfig”,且提供msgContent(值为“第三方插件发送的配置响应消息”,类型为“string”)和msgID(值为“第三方插件发送的配置响应消息ID”,类型为“string”)、msgType(值为“消息类型”:“0” 表示为网关内部消息、“1” 表示为来自智能网关及应用管理平台的消息,类型为“Boolean”)三个键值。第三方插件通过msgContent、msgID、msgType三个键值向管理Bundle发送响应消息。当msgType值为“1”时,管理Bundle应将该相应消息发送给智能网关及应用管理平台。

4、 要求第三方插件应注册ManagedService服务,供管理Bundle发送配置信息或消息使用。

其中,要求该服务PID为“第三方插件SymbolicName. SetMsgConfig”,且提供msgContent

(值为“来自管理Bundle的配置信息或消息”,类型为“string”)和msgID(值为“来自管理Bundle的配置信息或消息ID”,类型为“string”)、msgType(值为“消息类型”:“0”表示为网关内部消息、“1”表示为来自智能网关及应用管理平台的消息,类型为“Boolean”)三个键值。

5、 要求管理Bundle根据第三方插件的SymbolicName,获取第三方插件的SetMsgConfig的

PID,并将配置信息或消息、消息ID、消息类型分别写入msgContent、msgID、msgType三个键值内,通过update将消息传递到第三方插件。

6、 为了简化第三方插件的开发,要求管理Bundle针对第三方插件封装一个抽象类public

abstract class AbsSetMsgConfig implements ManagedService,用于屏蔽从Configuration中获取插件配置消息和发送响应消息的操作。其中,在实现updated方法时,要求定义一个抽象方法SetMsgProcess(String msgContent),供第三方插件实现具体消息(具体见表B.7)或配置信息的处理。SetMsgProcess(String msgContent)的具体实现则由第三方插件根据自己的实际业务需求自行编写。

对于抽象类public abstract class AbsSetMsgConfig implements ManagedService具体说明如下:

public abstract class AbsSetMsgConfig implements ManagedService { public AbsSetMsgConfig (BundleContext context) { /** * 从参数 context 中取出第三方SymbolicName * 使用 “第三方SymbolicName.SetMsgConfig” 作为标识PID注册 ManagedService 服务 */ } public synchronized void updated(Dictionary props) throws ConfigurationException { /** *1. 从参数 props 中取出请求消息内容、ID、消息类型 *2. 调用方法 SetMsgProcess(String msgContent),返回值为响应消息。

*3. 获取管理bundle中处理响应消息的Configuration Admin Service服务

*4. 先将响应消息、消息ID、消息类型分别存放到管理bundle的msgContent、msgID、

*msgType,然后调用管理bundle的configAdmin服务的update,将响应

消息和msgID

*发送给管理bundle。 */

}

public abstract String SetMsgProcess(String msgContent); }

第三方插件应定义插件消息的处理类extends AbsSetMsgConfig,构造函数采用父类构造函数。实现抽象函数,完成配置消息的具体处理。 具体示例如下

/* xxxSetMsgConfig.java */

public class xxxSetMsgConfig extends AbsSetMsgConfig { public xxxSetMsgConfig (BundleContext context) { super(context); } public String SetMsgProcess (String msgContent) { /** * 1. 解析请求消息 * 2. 处理请求 * 3. 生成响应消息作为返回值返回 }

}

*/

7、 要求网关的管理bundle将抽象类public abstract class AbsSetMsgConfig implements

ManagedService通过包的方式输出,包名为com.chinatelecom.smartgateway.mangement. AbsSetMsgConfig.

A.6 对OSGi插件数据存储要求

OSGi插件通过文件的方式存储数据,数据文件通过方法BundleContext.getDataFile()获取,即统一存放在Bundle的Data/目录下。

要求网关在OSGi插件安装完成后为Bundle创建持久化存储目录Data/,用于插件存放持久化数据文件,并在Data/目录下创建非持久化存储子目录Temp/,用于插件存放临时数据文件,网关重启后Temp/目录会自动清空。 A.7 对OSGi插件恢复出厂配置要求

在处理恢复插件参数请求时,要求网关直接将Bundle卸载后重新安装。如果插件正在运行,需要在重新安装后重新启动插件。

A.8 OSGi安全要求

要求网关必须禁止第三方Bundle使用生命周期管理服务和ConditionalPermissionAdmin服务

A.9 OSGi资源管理要求

要求网关必需能够对JVM的资源(包括CPU、RAM、Socket)使用情况进行限制,并能根据所设置的限制值,禁止JVM资源使用超过该限制要求,以确保JVM进程在恶意申请资源时网关能够正常提供业务(JVM进程提供的业务除外)。

要求网关必需能够对OSGi插件的资源(包括CPU、RAM、Socket、Thread)使用情况进行限制,并能根据所设置的限制值,禁止OSGi插件资源使用超过限制要求,以确保OSGi插件在恶意申请资源时,其它业务可正常运行。 A.10 C插件加载要求

A.10.1 C插件组成要求

网关仅能够支持下面两类c插件:

a) 内核模块:主要是内核驱动以及内核中高效业务模块,主要由一个或者几个ko组

成。

b) 业务模块:完成一个独立的业务功能,包括独立进程,以及进程所依赖的so。

A.10.2 C插件文件组成要求

C插件安装包是一个tgz的tar包组成, 扩展名为.cpk,只包含以下一个文件和一个目录(参见图B.2):

? 一个插件描述文件:Info.plugin

? 一个插件运行文件目录MyPlugin/,该目录下包含可选的库文件目录MyPlugin/Lib

C插件安装包Info.pluginMyPlugin/MyPlugin/Lib

图B.2 C插件安装包文件组成

A.10.2.1 C插件配置文件要求

C插件配置文件负责对插件的属性进行描述,由若干个属性描述项构成,属性描述项具体格式要求如下:

? Name:插件名字


OSGI技术要求(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:多媒体数据压缩

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: