基于OSGi构建软件运行中进行调试实现方法及系统与流程

文档序号:12120564阅读:572来源:国知局
基于OSGi构建软件运行中进行调试实现方法及系统与流程

本发明涉及OSGi平台技术领域,尤其涉及的是基于OSGi构建软件运行中进行调试实现方法及系统。



背景技术:

当前的软件系统在实际运行过程中,常常会暴露出设计与实现中埋入的问题;而定位和调式这些运行过程中发现的问题,显得非常困难;尽管基于JVM(Java Virtual Machine,即Java虚拟机)的软件系统有许多有利的条件,特别是基于OSGi技术(Open Service Gateway Initiative,即开放服务网关协议,其是Java动态化模块化系统的一系列规范)开发的软件系统为动态调式带来诸多优势条件,但是实际中仍然依赖如下的两个方法:

1)将JVM开启调试模式并借助IDE(Integrated Development Environment,即集成开发环境)工具打断点的方式;这种方法可以对照代码的执行顺序得到程序中每个变量和运行轨迹,但是在正常运行的生产环境是无法通过断点进行运行的;即使是启动时候打开远程调式端口,因存在安全隐患和运行效率的问题,也是不接受的;因此这种方式在生产环境一般受到限制。

2)借助第三方付费软件对字节码进行修改的方式;但是商业软件一般费用较高和使用的技术问题,很难规模化运用。

因此,现有技术还有待于改进和发展。



技术实现要素:

鉴于上述现有技术的不足,本发明的目的在于提供基于OSGi构建软件运行中进行调试实现方法及系统,旨在解决现有技术中JVM开启调试模式并借助IDE工具打断点的方式因安全性及运行效率均低下的缺陷。

本发明的技术方案如下:

一种基于OSGi构建软件运行中进行调试实现方法,其中,所述方法包括以下步骤:

A、初始化安装脚本语言库,并在OSGi服务端初始化安装OSGi执行脚本语言命令行插件;其中,所述OSGi执行脚本语言命令行插件用于捕获控制台输入,并调用脚本程序;

B、当通过OSGi执行脚本语言命令行插件捕获到脚本程序时,在控制台中执行调试程序对脚本程序进行调试,当完成调试时判断是否卸载所述OSGi执行脚本语言命令行插件;

C、当需卸载所述OSGi执行脚本语言命令行插件时,则对所述OSGi执行脚本语言命令行插件进行卸载。

所述基于OSGi构建软件运行中进行调试实现方法,其中,所述脚本语言库为Groovy语言库、JRuby语言库或Scala语言库。

所述基于OSGi构建软件运行中进行调试实现方法,其中,所述步骤B中脚本程序可实时进行修改,并在修改完成且保存后由调试程序再次调用进行调试。

所述基于OSGi构建软件运行中进行调试实现方法,其中,所述步骤B中当根据脚本程序得到待调试的对象后,对待调试的对象所包括属性值进行显示,并将待调试的对象打印到控制台。

一种基于OSGi构建软件运行中进行调试实现系统,其中,包括:

初始化模块,用于初始化安装脚本语言库,并在OSGi服务端初始化安装OSGi执行脚本语言命令行插件;其中,所述OSGi执行脚本语言命令行插件用于捕获控制台输入,并调用脚本程序;

调试检测模块,用于当通过OSGi执行脚本语言命令行插件捕获到脚本程序时,在控制台中执行调试程序对脚本程序进行调试,当完成调试时判断是否卸载所述OSGi执行脚本语言命令行插件;

卸载模块,用于当需卸载所述OSGi执行脚本语言命令行插件时,则对所述OSGi执行脚本语言命令行插件进行卸载。

所述基于OSGi构建软件运行中进行调试实现系统,其中,所述脚本语言库为Groovy语言库、JRuby语言库或Scala语言库。

所述基于OSGi构建软件运行中进行调试实现系统,其中,所述调试检测模块中脚本程序可实时进行修改,并在修改完成且保存后由调试程序再次调用进行调试。

所述基于OSGi构建软件运行中进行调试实现系统,其中,所述调试检测模块中当根据脚本程序得到待调试的对象后,对待调试的对象所包括属性值进行显示,并将待调试的对象打印到控制台。

本发明所提供的基于OSGi构建软件运行中进行调试实现方法及系统,方法包括:初始化安装脚本语言库,并在OSGi服务端初始化安装OSGi执行脚本语言命令行插件;当通过OSGi执行脚本语言命令行插件捕获到脚本程序时,在控制台中执行调试程序对脚本程序进行调试,当完成调试时判断是否卸载所述OSGi执行脚本语言命令行插件;当需卸载所述OSGi执行脚本语言命令行插件时,则对所述OSGi执行脚本语言命令行插件进行卸载。本发明通过编写脚本程序,依赖OSGi的热拔插和基于服务查找特性,实现调试脚本独立于被调试程序,而运行时获取被调试系统上下文的及时编译及时使用。

附图说明

图1为本发明所述基于OSGi构建软件运行中进行调试实现方法较佳实施例的流程图。

图2为本发明所述基于OSGi构建软件运行中进行调试实现系统较佳实施例的结构框图。

具体实施方式

本发明提供一种基于OSGi构建软件运行中进行调试实现方法及系统,为使本发明的目的、技术方案及效果更加清楚、明确,以下对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

如图1所示,为本发明所述通讯信息隐藏实现方法较佳实施例的流程图,所述方法包括以下步骤:

步骤S100、初始化安装脚本语言库,并在OSGi服务端初始化安装OSGi执行脚本语言命令行插件;其中,所述OSGi执行脚本语言命令行插件用于捕获控制台输入,并调用脚本程序;

步骤S200、当通过OSGi执行脚本语言命令行插件捕获到脚本程序时,在控制台中执行调试程序对脚本程序进行调试,当完成调试时判断是否卸载所述OSGi执行脚本语言命令行插件;

步骤S300、当需卸载所述OSGi执行脚本语言命令行插件时,则对所述OSGi执行脚本语言命令行插件进行卸载。

本发明的实施例中,当OSGi执行脚本语言命令行插件是利用OSGi平台的热插拔的特性进行安装或卸载。OSGi执行脚本语言命令行插件可以在需要使用的时候安装,完成调试以后移除而不影响原有系统的正常运行。

本发明中还利用脚本语言(尤其是解释性脚本语言)的特性,在修改代码时无需编译即可即时生效,提升诊断和调试的效率,节省定位问题的时间。

而且,在不改变脚本语言原有字节码的基础上通过脚本语言的元编程特性,可以查看对象内部的数据结构和对原有的对象织入代码。

可见,本发明实现了方便快捷的对系统(即OSGi服务端)进行诊断调试,无需重启系统,热拔插的方式对运行的系统增加/删除调试模块;也不影响生产环境下用户的使用,诊断用的脚本程序是即时生效的,最大化提升诊断效率;不对原有系统的类文件进行修改,灵活查看运行时用户数据和插入调试代码, 可以防止调试程序时引入新的问题。

进一步的,所述脚本语言库为Groovy语言库、JRuby语言库或Scala语言库。

其中,Groovy是用于Java虚拟机的一种敏捷的动态语言,它是一种成熟的面向对象编程语言,既可以用于面向对象编程,又可以用作纯粹的脚本语言。使用该种语言不必编写过多的代码,同时又具有闭包和动态语言中的其他特性。

JRuby是面向Ruby、基于Java虚拟机(JVM)的一种解释程序,它结合了Ruby语言的简易性和功能强大的JVM的执行机制,包括与Java库 全面集成。

Scala是一门多范式的编程语言,一种类似java的编程语言,设计初衷是实现可伸缩的语言、并集成面向对象编程和函数式编程的各种特性。Scala可以与Java互操作。它用scalac这个编译器把源文件编译成Java的class文件(即在JVM上运行的字节码)。可以从Scala中调用所有的Java类库,也同样可以从Java应用程序中调用Scala的代码。

优选的,所述步骤S200中脚本程序可实时进行修改,并在修改完成且保存后由调试程序再次调用进行调试。

优选的,所述步骤S200中当根据脚本程序得到待调试的对象后,对待调试的对象所包括属性值进行显示,并将待调试的对象打印到控制台。

基于上述方法实施例,本发明还提供一种基于OSGi构建软件运行中进行调试实现。如图2所示,所述基于OSGi构建软件运行中进行调试实现系统包括:

初始化模块100,用于初始化安装脚本语言库,并在OSGi服务端初始化安装OSGi执行脚本语言命令行插件;其中,所述OSGi执行脚本语言命令行插件用于捕获控制台输入,并调用脚本程序;

调试检测模块200,用于当通过OSGi执行脚本语言命令行插件捕获到脚本程序时,在控制台中执行调试程序对脚本程序进行调试,当完成调试时判断是否卸载所述OSGi执行脚本语言命令行插件;

卸载模块300,用于当需卸载所述OSGi执行脚本语言命令行插件时,则对所述OSGi执行脚本语言命令行插件进行卸载。

优选的,在所述基于OSGi构建软件运行中进行调试实现系统中,所述脚本语言库为Groovy语言库、JRuby语言库或Scala语言库。

优选的,在所述基于OSGi构建软件运行中进行调试实现系统中,所述调试检测模块中脚本程序可实时进行修改,并在修改完成且保存后由调试程序再次调用进行调试。

优选的,在所述基于OSGi构建软件运行中进行调试实现系统中,所述调试检测模块中当根据脚本程序得到待调试的对象后,对待调试的对象所包括属性值进行显示,并将待调试的对象打印到控制台。

综上所述,本发明所提供的基于OSGi构建软件运行中进行调试实现方法及系统,方法包括:初始化安装脚本语言库,并在OSGi服务端初始化安装OSGi执行脚本语言命令行插件;当通过OSGi执行脚本语言命令行插件捕获到脚本程序时,在控制台中执行调试程序对脚本程序进行调试,当完成调试时判断是否卸载所述OSGi执行脚本语言命令行插件;当需卸载所述OSGi执行脚本语言命令行插件时,则对所述OSGi执行脚本语言命令行插件进行卸载。本发明通过编写脚本程序,依赖OSGi的热拔插和基于服务查找特性,实现调试脚本独立于被调试程序,而运行时获取被调试系统上下文的及时编译及时使用。

应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1