CN104424043B - 一种应用平台与插件间异常隔离的方法及系统 - Google Patents
一种应用平台与插件间异常隔离的方法及系统 Download PDFInfo
- Publication number
- CN104424043B CN104424043B CN201310392576.2A CN201310392576A CN104424043B CN 104424043 B CN104424043 B CN 104424043B CN 201310392576 A CN201310392576 A CN 201310392576A CN 104424043 B CN104424043 B CN 104424043B
- Authority
- CN
- China
- Prior art keywords
- plug
- platform
- information
- queue
- loaded
- 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
- 238000000034 method Methods 0.000 title claims abstract description 58
- 230000002159 abnormal effect Effects 0.000 claims abstract description 32
- 230000008569 process Effects 0.000 claims description 27
- 238000004891 communication Methods 0.000 claims description 26
- 230000004044 response Effects 0.000 claims description 9
- 238000002955 isolation Methods 0.000 claims description 3
- 238000012544 monitoring process Methods 0.000 claims description 3
- 230000006870 function Effects 0.000 description 10
- 230000005856 abnormality Effects 0.000 description 6
- 238000012360 testing method Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
Landscapes
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种应用平台与插件间异常隔离的方法,包括:应用平台通过已设置的代理平台加载所述插件,如果检测或接收到代理平台出现异常时,将所述代理平台的信息以及所述对应的插件的信息从已加载插件队列中删除,将所述插件的信息添加在待加载插件队列中,并根据预先的配置重新加载所述插件。本发明还同时公开了一种实现所述方法的系统,运用该方法和系统可实现在插件出现异常时保证应用平台不受影响而能正常运行。
Description
技术领域
本发明涉及Windows系统中插件异常处理技术领域,尤其涉及一种应用平台与插件间异常隔离的方法及系统。
背景技术
当前,Windows桌面应用的内容越来越丰富,程序也越来越庞大,特别是一些比较成熟的商业化产品,为了更好的满足用户对程序功能扩展的需求,往往将程序主体功能设计为应用平台,而扩展功能则作为插件,插件被应用平台调用来实现功能的扩展。例如:常见的word、firefox、photoshop等软件,它们都支持插件扩展。由于Windows操作系统以及常见的技术手段的限制,插件通常被设计为dll形式、或ocx形式,然后由应用平台通过加载动态链接库、或加载ActiveX控件等方式进行调用。
对于插件,通常是由应用平台厂商、具有认证资质的厂商、开源项目、个人开发者进行开发,对于前两种开发者而言,插件可能会经过较为严格的测试过程后才进行发布;而对于后两种开发者,特别是个人开发者,由于时间、成本以及开发人员自身的技术能力和责任心等原因,插件很难通过较完善的测试过程,就直接发布了,而这种发布几乎是对用户不负责任的行为,可以说是将测试的工作转嫁给了用户。
如上所述,又由于Windows系统的特性,一旦在动态链接库或ActiveX控件中出现异常,而这种异常又没有被动态库程序或控件程序自身捕获和处理,则异常将被发送到上级调用者,也就是上文所述的应用平台,更为严重的问题是,通常这种异常并不是由应用平台调用插件的直接调用操作导致的,而很可能是插件在运行过程中自身出现的异常导致的,而对于这种异常,应用平台无法在插件调用入口处进行捕获,只能将异常抛到最外层异常捕获函数中去处理,此时程序整体已经崩溃。
综上所述,插件的异常将会导致应用平台的崩溃。目前,针对上述问题并无通用的技术手段来解决,现有技术中仅提供了定位异常崩溃原因的技术。因此,对于插件的异常影响应用平台正常运行的问题,亟待提出一种有效的解决方案。
发明内容
有鉴于此,本发明的主要目的在于提供一种应用平台与插件间异常隔离的方法及系统,可实现在插件出现异常时保证应用平台不受影响而能正常运行。
为达到上述目的,本发明的技术方案是这样实现的:
本发明提供了一种应用平台与插件间异常隔离的系统,包括:插件;该系统还包括:应用平台和代理平台;其中,
所述应用平台,包括插件管理器,用于与代理平台进行通信,通过代理平台加载插件,检测或接收到代理平台出现的异常,将所述代理平台的信息以及所述对应的插件的信息从已加载插件队列中删除,将所述插件的信息添加在待加载插件队列中,并根据预先的配置重新加载所述插件;
所述代理平台,用于与应用平台进行通信,根据应用平台的指令加载所述插件,判断所述插件出现异常时,通知所述应用平台。
其中,所述插件管理器通过代理平台加载插件,为:
所述插件管理器创建一个或多个代理平台的实例,与代理平台进行通信,将所要调用的插件的信息通知所述代理平台;将所述代理平台的注册信息中的代理平台的进程ID以及对应的插件的信息存入已加载插件队列中,之后通知代理平台加载所述插件,以及监视代理平台的运行状况。
优选的,所述插件管理器包括:插件启动模块、插件通信模块和队列存储模块;其中,
所述插件启动模块,用于创建一个或多个代理平台的实例,并将所要调用的插件的信息通知所述代理平台;
所述插件通信模块,用于执行所述应用平台与所述代理平台间的通信,接收所述代理平台发送给所述应用平台的消息,并向所述代理平台发送控制信息;
所述队列存储模块,用于存储已加载插件队列和待加载插件队列,所述已加载插件队列用于存储已运行的代理平台的信息以及所述对应的插件的信息;所述待加载插件队列用于存储等待启动的插件的信息。
优选的,所述代理平台包括:插件容器模块和通信模块,其中,
所述插件容器模块,用于加载所述插件;
所述通信模块,用于执行所述代理平台与所述应用平台间的通信,接收所述应用平台发送的控制信息,并向所述应用平台发送信息。
上述方案中,所述代理平台,还用于插件正常退出时,通知所述应用平台所述插件运行结束,并结束自身的运行;
相应的,所述应用平台中的所述插件管理器,还用于收到所述代理平台的通知后,将所述代理平台的信息从已加载插件队列中删除。
上述方案中,所述异常为不可被捕获的异常时,所述应用平台中的所述插件管理器,还用于定时扫描所述已加载插件队列,判断所述已加载插件队列中所述代理平台的进程ID在内存映像中不存在,则将所述代理平台的信息以及所述对应的插件的信息从已加载插件队列中删除,并将所述插件的信息添加在待加载插件队列中,并根据预先的配置重新加载所述插件;或者,
所述插件管理器,还用于定时向所述代理平台发送心跳包,如果所述代理平台在设置的时间内未返回心跳响应,则确定所述代理平台出现异常,将所述代理平台的信息以及所述对应的插件的信息从已加载插件队列中删除,并将所述插件的信息添加在待加载插件队列中,并根据预先的配置重新加载所述插件;或者,
所述插件管理器,还用于判断所述代理平台在设置的时间内未主动向所述应用平台发送心跳包,则确定所述代理平台出现异常,将所述代理平台的信息以及所述对应的插件的信息从已加载插件队列中删除,并将所述插件的信息添加在待加载插件队列中,并根据预先的配置重新加载所述插件;
相应的,所述代理平台,还用于收到所述插件管理器发送的心跳包后,在设置的时间内返回心跳响应;或者,还用于在设置的时间内主动发送心跳包。
优选的,所述异常为可被捕获的异常时,所述应用平台中的插件管理器,用于通过已设置的代理平台加载所述插件,确定所述代理平台捕获到插件程序的异常时,将所述代理平台的信息以及所述对应的插件的信息从已加载插件队列中删除,将所述插件的信息添加在待加载插件队列中,并根据预先的配置重新加载所述插件;
所述代理平台,用于根据应用平台的指令加载所述插件,如果捕获到插件程序的异常,则通知所述应用平台。
本发明还提供了一种应用平台与插件间异常隔离的方法,该方法包括:
应用平台通过已设置的代理平台加载所述插件,如果检测或接收到代理平台出现异常时,将所述代理平台的信息以及所述对应的插件的信息从已加载插件队列中删除,将所述插件的信息添加在待加载插件队列中,并根据预先的配置重新加载所述插件。
其中,所述应用平台通过所述代理平台加载所述插件,包括:
当用户在应用平台上启动插件时,应用平台创建一个或多个代理平台的实例,并将所要调用的插件信息通知给所述代理平台;代理平台向所述应用平台进行注册,所述应用平台将所述注册信息中所述代理平台的进程ID以及对应的插件的信息存入已加载插件队列中,之后由代理平台加载所述插件;应用平台监视代理平台的运行状况。
优选的,该方法还包括:
如果插件正常退出,则代理平台通知应用平台所述插件运行结束,应用平台将所述代理平台的信息从已加载插件队列中删除,代理平台结束运行。
优选的,该方法还包括:
所述应用平台定时扫描所述已加载插件队列,判断所述已加载插件队列中所述代理平台的进程ID在内存映像中不存在,则将所述代理平台的信息以及所述对应的插件的信息从已加载插件队列中删除,并将所述插件的信息添加在待加载插件队列中,并根据预先的配置重新加载所述插件;或者,
所述应用平台定时向所述代理平台发送心跳包,如果所述代理平台在设置的时间内未返回心跳响应,则确定所述代理平台出现异常,将所述代理平台的信息以及所述对应的插件的信息从已加载插件队列中删除,并将所述插件的信息添加在待加载插件队列中,并根据预先的配置重新加载所述插件;或者,
所述应用平台判断所述代理平台在设置的时间未主动发送心跳包,则确定所述代理平台出现异常,将所述代理平台的信息以及所述对应的插件的信息从已加载插件队列中删除,并将所述插件的信息添加在待加载插件队列中,并根据预先的配置重新加载所述插件。
优选的,如果所述异常为可被捕获的异常时,该方法包括:
所述应用平台通过已设置的代理平台加载所述插件,如果所述代理平台捕获到插件程序的异常,则通知所述应用平台;应用平台将所述代理平台的信息以及所述对应的插件的信息从已加载插件队列中删除,将所述插件的信息添加在待加载插件队列中,并根据预先的配置重新加载所述插件。
本发明提供的应用平台与插件间异常隔离的方法及系统,应用平台通过已设置的代理平台加载所述插件,如果所述应用平台判断所述代理平台出现异常,则应用平台将所述代理平台的信息以及所述对应的插件的信息从已加载插件队列中删除,将所述插件的信息添加在待加载插件队列中,并根据预先的配置重新加载所述插件。本发明采用引入独立进程的方式,即通过代理平台,将应用平台和插件之间的直接调用关系转为间接调用关系,从逻辑上实现了两者的隔离,可实现在插件出现异常时保证应用平台不受影响而能正常运行。
此外,本发明还对插件正常退出、插件出现可被捕获的异常以及插件出现不可捕获的插件异常等几种情况提供了对应的解决方案,为插件异常的预防与隔离提供了有效途径。
附图说明
图1为本发明实施例所述应用平台与插件间异常隔离的系统结构示意图;
图2为本发明实施例所述应用平台与插件间异常隔离的方法流程图示意图;
图3为本发明实施例所述应用平台与插件间异常隔离的具体方法流程图。
具体实施方式
为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合附图和实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
下面结合附图及具体实施例对本发明作进一步详细说明。
图1为本发明实施例所述应用平台与插件间异常隔离的系统结构示意图,如图1所示,包括:应用平台10、代理平台20和已有的插件30;其中,
所述应用平台10,包括插件管理器101,运行于主机上,用于与代理平台进行通信,通过代理平台20加载插件30,检测或接收到所述代理平台出现的异常后,将所述代理平台20的信息以及所述对应的插件30的信息从已加载插件队列中删除,将所述插件30的信息添加在待加载插件队列中,并根据预先的配置重新加载所述插件30;
这里,所述应用平台10主要提供应用的主体功能,并设置有扩展接口供第三方开发插件,支持对插件的安装、显示和调用,所述应用平台10还具有其他功能,由于为现有技术,此处不再详述。
所述代理平台20,用于与应用平台进行通信,根据应用平台的指令加载所述插件30,判断所述插件30出现异常时,通知所述应用平台10;
所述插件30,为拥有特定的扩展功能,通常作为所述应用平台10的功能扩展,为用户提供更丰富的辅助功能或更佳的用户体验。
在本发明的一个实施例中,所述代理平台20,还用于插件正常退出时,通知所述应用平台10所述插件30运行结束,并结束自身的运行;
相应的,所述应用平台10中的所述插件管理器101,还用于收到所述代理平台20的通知后,将所述代理平台20的信息从已加载插件队列中删除。
在本发明的一个实施例中,所述异常为不可被捕获的异常时,所述应用平台10中的所述插件管理器101,还用于定时扫描所述已加载插件队列,判断所述已加载插件队列中所述代理平台20的进程ID在内存映像中不存在,则将所述代理平台20的信息以及所述对应的插件30的信息从已加载插件队列中删除,并将所述插件30的信息添加在待加载插件队列中,并根据预先的配置重新加载所述插件30;或者,
所述插件管理器,还用于定时向所述代理平台发送心跳包,如果所述代理平台在设置的时间内未返回心跳响应,则确定所述代理平台出现异常,将所述代理平台的信息以及所述对应的插件的信息从已加载插件队列中删除,并将所述插件的信息添加在待加载插件队列中,并根据预先的配置重新加载所述插件;或者,
所述插件管理器,还用于判断所述代理平台在设置的时间内未主动向所述应用平台发送心跳包,则确定所述代理平台出现异常,将所述代理平台的信息以及所述对应的插件的信息从已加载插件队列中删除,并将所述插件的信息添加在待加载插件队列中,并根据预先的配置重新加载所述插件;
相应的,所述代理平台,还用于收到所述插件管理器发送的心跳包后,在设置的时间内返回心跳响应;或者,还用于在设置的时间内主动发送心跳包。
所述异常为可被捕获的异常时,所述应用平台中的插件管理器,用于通过已设置的代理平台加载所述插件,确定所述代理平台捕获到插件程序的异常时,将所述代理平台的信息以及所述对应的插件的信息从已加载插件队列中删除,将所述插件的信息添加在待加载插件队列中,并根据预先的配置重新加载所述插件;
所述代理平台,用于根据应用平台的指令加载所述插件,如果捕获到插件程序的异常,则通知所述应用平台。
其中,所述插件管理器101通过代理平台20加载所述插件30,具体为:
所述插件管理器101创建一个或多个代理平台20的实例,与代理平台进行通信,将所要调用的插件30的信息通知所述代理平台20;将所述代理平台20的注册信息中的代理平台的进程ID以及对应的插件的信息存入已加载插件队列中,之后通知代理平台20加载所述插件30,以及监视代理平台的运行状况。
相应的,在本发明的一个实施例中,所述插件管理器101还包括:插件启动模块1011、插件通信模块1012和队列存储模块1013;其中,
所述插件启动模块1011,用于创建一个或多个代理平台20的实例,并将所要调用的插件30的信息通知所述代理平台20;
所述插件通信模块1012,用于执行所述应用平台10与所述代理平台20间的通信,接收所述代理平台20发送给所述应用平台10的消息,并向所述代理平台20发送控制信息;例如:接收代理平台20发送的注册信息、心跳包、正常退出通知、以及插件异常通知等消息。
所述队列存储模块1013,用于存储已加载插件队列和待加载插件队列,所述已加载插件队列用于存储已运行的代理平台20的信息以及所述对应的插件30的信息;所述待加载插件队列用于存储等待启动的插件的信息。
在本发明的一个实施例中,所述代理平台20还包括:插件容器模块201和通信模块202,其中,
所述插件容器模块201,用于加载所述插件30;
所述通信模块202,用于执行所述代理平台20与所述应用平台10间的通信,接收所述应用平台10发送的控制信息,并向所述应用平台10发送信息。例如:向应用平台10发送注册信息、心跳包、正常退出通知、以及插件异常通知等消息。
图2为本发明实施例所述应用平台与插件间异常隔离的方法流程图示意图,如图2所示,包括如下步骤:
步骤201:在应用平台与插件间设置代理平台;
其中,所述代理平台介于应用平台与插件之间,它同时具备应用平台和插件的部分特性,例如:和插件相似的调用接口、加载和管理插件的能力等。对于应用平台而言,它就是插件;而对插件而言,它就是应用平台,通过代理平台实现应用平台和插件之间的隔离。所述代理平台的应用见后续描述。
步骤202:应用平台通过所述代理平台加载所述插件;
具体为:当用户在应用平台上启动插件时,创建一个或多个代理平台的实例,并将所要调用的插件信息通知给所述代理平台;代理平台向所述应用平台进行注册,即:代理平台将自身的进程ID、通信端口和对应的、负责调用的插件信息通知所述应用平台,所述应用平台将所述注册信息中的所述代理平台的进程ID以及对应的插件的信息存入已加载插件队列中,之后代理平台加载所述插件。
步骤203:如果所述应用平台检测或接收到代理平台出现异常后,则应用平台将所述代理平台的信息以及所述对应的插件的信息从已加载插件队列中删除,并将所述插件的信息添加在待加载插件队列中,并根据预先的配置重新加载所述插件;
具体为:用户在使用插件过程中,若插件出现可被捕获的异常时,例如:出现内存地址非法访问时,则代理平台捕获到所述异常,并发送消息通知应用平台当前的插件出现异常。应用平台收到所述代理平台发送的消息后,记录所述异常信息,并将所述代理平台的信息以及所述插件的信息从已加载插件队列中删除,同时将所述插件的信息添加在待加载插件队列中。之后,根据用户预先的配置策略通过所述代理平台重新加载所述插件。当然,还可在用户界面通知用户“该插件已崩溃,是否重新加载”等。
在本发明一个实施例中,所述步骤202与步骤203之间还包括:
如果插件正常退出,则代理平台通知应用平台所述插件运行结束,应用平台将所述代理平台的信息从已加载插件队列中删除,代理平台结束运行。
在本发明一个实施例中,对于不可被捕获的异常,所述步骤203还包括:
所述应用平台定时扫描所述已加载插件队列,判断所述已加载插件队列中所述代理平台的进程ID在内存映像中不存在,即:将与所述代理平台对应的插件识别为已崩溃的插件,则将所述代理平台的信息以及所述对应的插件的信息从已加载插件队列中删除,并将所述插件的信息添加在待加载插件队列中,并根据预先的配置重新加载所述插件;或者,
所述应用平台定时向所述代理平台发送心跳包,如果所述代理平台在设置的时间内未返回心跳响应,则确定所述代理平台出现异常,将所述代理平台的信息以及所述对应的插件的信息从已加载插件队列中删除,并将所述插件的信息添加在待加载插件队列中,并根据预先的配置重新加载所述插件;或者,
所述应用平台判断所述代理平台在设置的时间内未主动发送心跳包,则确定所述代理平台出现异常,将所述代理平台的信息以及所述对应的插件的信息从已加载插件队列中删除,并将所述插件的信息添加在待加载插件队列中,并根据预先的配置重新加载所述插件。
下面结合一具体实施例对本发明所述方法和系统进行详细描述,如图3所示,实现流程如下:
步骤301:用户从应用平台上调用插件;
步骤302:应用平台调用插件管理器检查已加载插件队列中是否包含需要被调用的插件,若已包含,则直接调用该插件,流程结束;否则,执行步骤303;
步骤303:若要被调用的插件尚未启动,则插件管理器调用自身的插件启动模块,插件启动模块创建一个新的代理平台的实例,并将所要调用的插件通过启动参数传递给代理平台;
步骤304:代理平台启动后,向应用平台注册,即:将自己的进程ID、通信端口和所负责调用的插件通过通讯模块发送给插件管理器中的插件通信模块,插件管理器在收到代理平台的注册消息后,将该代理平台的进程ID及其负责调用的插件程序添加在已加载插件队列中;
步骤305:代理平台调用内部的插件容器模块来加载所述插件;
步骤306:代理平台判断所述插件在运行过程中是否正常退出,如果为正常退出,则通讯模块会发送消息给插件通信模块,告知本代理平台将要退出,通知插件管理器将所述代理平台的信息从已加载插件队列中清除,至此流程结束;如果为非正常退出,则执行步骤307;
这里,若是由用户主动关闭插件,则属于正常退出,若是由于插件程序内部异常导致的程序崩溃则是非正常退出。
步骤307:若插件在使用过程中出现非正常退出,则所述代理平台判断所述插件是否出现可被捕获的异常,如果是,则执行步骤309,否则,执行步骤308;
这里,如果插件在使用过程中出现非正常退出,可能会出现两种情况,即代理平台捕获到了插件异常,以及代理平台未捕获到插件异常(插件有极少数的异常是无法捕获的,如:除零异常)。
步骤308:对于代理平台未捕获到的异常,会导致代理平台的崩溃,而对于应用平台和插件管理器而言,这种崩溃是不知情的,所以插件管理器通过定时扫描已加载插件队列,判断所述已加载插件队列中所述代理平台的进程ID在内存映像中是否存在;或者,使用与代理平台之间的心跳包等方式,判断所述代理平台是否已经出现异常,判断代理平台出现异常后,执行步骤310;
步骤309:对于代理平台可捕获到的异常,代理平台可记录异常信息,如:所述代理平台的进程ID、负责调用的插件、崩溃消息等,并将所述异常信息通过通讯模块发送给插件管理器中的插件通信模块,之后执行步骤310;
这里,对于代理平台可捕获到的异常,同样会导致代理平台的崩溃,不同的是相对于未捕获到的异常而言,能够即时对捕获到的异常进行异常处理。
步骤310:插件管理器将所述代理平台的信息以及所述对应的插件的信息从已加载插件队列中删除,并将所述插件的信息添加在待加载插件队列中,之后执行步骤311;
步骤311:根据预先的配置重新加载所述插件;
这里,可以根据用户预先的插件异常处理的设置重新加载所述插件,即:将待加载插件队列中的待加载插件的信息通过上述步骤所述操作流程重新启动代理平台,并由代理平台加载插件。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
Claims (10)
1.一种应用平台与插件间异常隔离的系统,包括:插件;其特征在于,该系统还包括:应用平台和代理平台;其中,
所述应用平台,包括插件管理器,用于与代理平台进行通信,通过代理平台加载插件,检测或接收到代理平台出现的异常,将所述代理平台的信息以及对应的插件的信息从已加载插件队列中删除,将所述插件的信息添加在待加载插件队列中,并根据预先的配置重新加载所述插件;
其中,所述通过代理平台加载插件包括:所述插件管理器创建一个或多个代理平台的实例,与代理平台进行通信,将所要调用的插件的信息通知所述代理平台;将所述代理平台的注册信息中的代理平台的进程ID以及对应的插件的信息存入已加载插件队列中,之后通知代理平台加载所述插件,以及监视代理平台的运行状况;
所述代理平台,用于与应用平台进行通信,根据应用平台的指令加载所述插件,判断所述插件出现异常时,通知所述应用平台。
2.根据权利要求1所述的系统,其特征在于,所述插件管理器包括:插件启动模块、插件通信模块和队列存储模块;其中,
所述插件启动模块,用于创建一个或多个代理平台的实例,并将所要调用的插件的信息通知所述代理平台;
所述插件通信模块,用于执行所述应用平台与所述代理平台间的通信,接收所述代理平台发送给所述应用平台的消息,并向所述代理平台发送控制信息;
所述队列存储模块,用于存储已加载插件队列和待加载插件队列,所述已加载插件队列用于存储已运行的代理平台的信息以及所述对应的插件的信息;所述待加载插件队列用于存储等待启动的插件的信息。
3.根据权利要求1所述的系统,其特征在于,所述代理平台包括:插件容器模块和通信模块,其中,
所述插件容器模块,用于加载所述插件;
所述通信模块,用于执行所述代理平台与所述应用平台间的通信,接收所述应用平台发送的控制信息,并向所述应用平台发送信息。
4.根据权利要求1-3中任一项所述的系统,其特征在于,所述代理平台,还用于插件正常退出时,通知所述应用平台所述插件运行结束,并结束自身的运行;
相应的,所述应用平台中的所述插件管理器,还用于收到所述代理平台的通知后,将所述代理平台的信息从已加载插件队列中删除。
5.根据权利要求1-3中任一项所述的系统,其特征在于,所述异常为不可被捕获的异常时,所述应用平台中的所述插件管理器,还用于定时扫描所述已加载插件队列,判断所述已加载插件队列中所述代理平台的进程ID在内存映像中不存在,则将所述代理平台的信息以及所述对应的插件的信息从已加载插件队列中删除,并将所述插件的信息添加在待加载插件队列中,并根据预先的配置重新加载所述插件;或者,
所述插件管理器,还用于定时向所述代理平台发送心跳包,如果所述代理平台在设置的时间内未返回心跳响应,则确定所述代理平台出现异常,将所述代理平台的信息以及所述对应的插件的信息从已加载插件队列中删除,并将所述插件的信息添加在待加载插件队列中,并根据预先的配置重新加载所述插件;或者,
所述插件管理器,还用于判断所述代理平台在设置的时间内未主动向所述应用平台发送心跳包,则确定所述代理平台出现异常,将所述代理平台的信息以及所述对应的插件的信息从已加载插件队列中删除,并将所述插件的信息添加在待加载插件队列中,并根据预先的配置重新加载所述插件;
相应的,所述代理平台,还用于收到所述插件管理器发送的心跳包后,在设置的时间内返回心跳响应;或者,还用于在设置的时间内主动发送心跳包。
6.根据权利要求1-3中任一项所述的系统,其特征在于,所述异常为可被捕获的异常时,所述应用平台中的插件管理器,用于通过已设置的代理平台加载所述插件,确定所述代理平台捕获到插件程序的异常时,将所述代理平台的信息以及所述对应的插件的信息从已加载插件队列中删除,将所述插件的信息添加在待加载插件队列中,并根据预先的配置重新加载所述插件;
所述代理平台,用于根据应用平台的指令加载所述插件,如果捕获到插件程序的异常,则通知所述应用平台。
7.一种应用平台与插件间异常隔离的方法,其特征在于,该方法包括:
应用平台通过已设置的代理平台加载所述插件,如果检测或接收到代理平台出现异常时,将所述代理平台的信息以及对应的插件的信息从已加载插件队列中删除,将所述插件的信息添加在待加载插件队列中,并根据预先的配置重新加载所述插件;
其中,所述应用平台通过代理平台加载插件包括:当用户在应用平台上启动插件时,应用平台创建一个或多个代理平台的实例,并将所要调用的插件信息通知所述代理平台;代理平台向所述应用平台进行注册,所述应用平台将所述注册信息中所述代理平台的进程ID以及对应的插件的信息存入已加载插件队列中,之后由代理平台加载所述插件,应用平台监视代理平台的运行状况。
8.根据权利要求7所述的方法,其特征在于,所述应用平台通过所述代理平台加载所述插件之后,该方法还包括:
如果插件正常退出,则代理平台通知应用平台所述插件运行结束,应用平台将所述代理平台的信息从已加载插件队列中删除,代理平台结束运行。
9.根据权利要求7所述的方法,其特征在于,如果所述异常为不可被捕获的异常时,该方法还包括:
所述应用平台定时扫描所述已加载插件队列,判断所述已加载插件队列中所述代理平台的进程ID在内存映像中不存在,则将所述代理平台的信息以及所述对应的插件的信息从已加载插件队列中删除,并将所述插件的信息添加在待加载插件队列中,并根据预先的配置重新加载所述插件;或者,
所述应用平台定时向所述代理平台发送心跳包,如果所述代理平台在设置的时间内未返回心跳响应,则确定所述代理平台出现异常,将所述代理平台的信息以及所述对应的插件的信息从已加载插件队列中删除,并将所述插件的信息添加在待加载插件队列中,并根据预先的配置重新加载所述插件;或者,
所述应用平台判断所述代理平台在设置的时间未主动发送心跳包,则确定所述代理平台出现异常,将所述代理平台的信息以及所述对应的插件的信息从已加载插件队列中删除,并将所述插件的信息添加在待加载插件队列中,并根据预先的配置重新加载所述插件。
10.根据权利要求7所述的方法,其特征在于,如果所述异常为可被捕获的异常时,该方法包括:
所述应用平台通过已设置的代理平台加载所述插件,如果所述代理平台捕获到插件程序的异常,则通知所述应用平台;应用平台将所述代理平台的信息以及所述对应的插件的信息从已加载插件队列中删除,将所述插件的信息添加在待加载插件队列中,并根据预先的配置重新加载所述插件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310392576.2A CN104424043B (zh) | 2013-09-02 | 2013-09-02 | 一种应用平台与插件间异常隔离的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310392576.2A CN104424043B (zh) | 2013-09-02 | 2013-09-02 | 一种应用平台与插件间异常隔离的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104424043A CN104424043A (zh) | 2015-03-18 |
CN104424043B true CN104424043B (zh) | 2017-11-28 |
Family
ID=52973099
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310392576.2A Expired - Fee Related CN104424043B (zh) | 2013-09-02 | 2013-09-02 | 一种应用平台与插件间异常隔离的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104424043B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108205450B (zh) * | 2017-12-29 | 2021-04-23 | 北京奇虎科技有限公司 | 一种对基于插件的应用平台进行动态优化的方法及系统 |
CN108319482B (zh) * | 2018-02-11 | 2021-07-06 | 北京恒华伟业科技股份有限公司 | 一种JavaWeb模块管理方法及装置 |
CN109344035A (zh) * | 2018-09-30 | 2019-02-15 | 北京奇虎科技有限公司 | 一种应用程序的运行控制方法、装置、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1705938A (zh) * | 2002-10-22 | 2005-12-07 | 崔云虎 | 信息基础结构的综合攻击事故应对系统及其运营方法 |
CN1889053A (zh) * | 2005-06-29 | 2007-01-03 | 英业达股份有限公司 | 系统信息的自动诊断方法 |
CN101378400A (zh) * | 2007-08-30 | 2009-03-04 | 国际商业机器公司 | 实现桌面应用和Web应用聚合的方法、服务器和系统 |
CN103197951A (zh) * | 2012-01-04 | 2013-07-10 | 腾讯科技(深圳)有限公司 | 一种搭建应用运行环境的方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4125227B2 (ja) * | 2003-12-25 | 2008-07-30 | キヤノン株式会社 | 認証システム及び認証方法 |
US8677194B2 (en) * | 2006-11-29 | 2014-03-18 | Red Hat, Inc. | Method and system for site configurable error reporting |
-
2013
- 2013-09-02 CN CN201310392576.2A patent/CN104424043B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1705938A (zh) * | 2002-10-22 | 2005-12-07 | 崔云虎 | 信息基础结构的综合攻击事故应对系统及其运营方法 |
CN1889053A (zh) * | 2005-06-29 | 2007-01-03 | 英业达股份有限公司 | 系统信息的自动诊断方法 |
CN101378400A (zh) * | 2007-08-30 | 2009-03-04 | 国际商业机器公司 | 实现桌面应用和Web应用聚合的方法、服务器和系统 |
CN103197951A (zh) * | 2012-01-04 | 2013-07-10 | 腾讯科技(深圳)有限公司 | 一种搭建应用运行环境的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104424043A (zh) | 2015-03-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8601493B2 (en) | Application controlling apparatus and storage medium which stores software for the apparatus | |
JP5579650B2 (ja) | 監視対象プロセスを実行する装置及び方法 | |
CA2974820C (en) | System and method for introducing functionality to an application for use with a network service | |
WO2000054385A1 (en) | User transparent software malfunction detection and reporting | |
US7856639B2 (en) | Monitoring and controlling applications executing in a computing node | |
WO2018019242A1 (zh) | 网站服务器的自恢复方法和自恢复系统 | |
US11055416B2 (en) | Detecting vulnerabilities in applications during execution | |
CN104424043B (zh) | 一种应用平台与插件间异常隔离的方法及系统 | |
CN106055421A (zh) | 智能终端及其异常处理方法 | |
CN110618853B (zh) | 一种僵尸容器的检测方法、装置及设备 | |
CN106997313B (zh) | 一种应用程序的信号处理方法、系统及终端设备 | |
CN102314382A (zh) | 一种紧急探查系统信息的方法及模块 | |
KR102705465B1 (ko) | 이상 처리 방법, 단말 기기 및 저장 매체 | |
CN109032767B (zh) | 异步多进程的业务处理系统、方法、装置及存储介质 | |
CN110928787B (zh) | 自动化测试脚本录制回放方法、装置、设备和存储介质 | |
CN102081720B (zh) | 一种实时防护中检测进程创建的方法及系统 | |
CN109634782B (zh) | 一种系统健壮性的检测方法、装置、存储介质及终端 | |
CN106557693A (zh) | 一种恶意Hook行为检测方法及系统 | |
CN115190052A (zh) | 一种长连接的管理方法、系统和控制单元 | |
CN111857689A (zh) | 一种框架、框架的功能配置方法、终端及存储介质 | |
WO2016119398A1 (zh) | 一种被测设备挂起跑飞故障的检测方法、装置及系统 | |
CN110308943B (zh) | 程序运行方法、装置、计算设备以及存储介质 | |
CN111666168B (zh) | 一种自动记录测试异常的方法及终端 | |
JP7298694B2 (ja) | 異常検出装置、制御方法、及びプログラム | |
CN111984341B (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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20171128 |