一种基于云平台的远程调试方法
技术领域
本发明涉及一种远程调试方法,尤其涉及一种基于云平台的远程调试方法。
背景技术
调试与软件程序开发相伴而生,然而,现在的软件开发技术都在侧重如何做出更合理的软件设计,编写更有效率的代码,编写更精准的测试,很少有涉及到如何通过调试发现和解决代码中的错误。调试在程序员的日常工作中,占用了大部分的时间,试图修复服务器端的缺陷往往需要花费大量的时间去获取问题源,而调试可以显著地缩短发现错误的时间,使开发过程变得更加轻松、享受。
随着云计算技术的广泛应用,大量的用户将自己的应用部署在同一个云平台上,这与传统的应用模式已经迥然不同,如何方便用户对各自的应用进行安全地远程调试已经成为当前行业内研究的重要课题,本发明将提供一种基于云平台的远程调试方法,探索如何通过互联网安全地调试云平台上的应用。
发明内容
针对现有技术的不足,本发明的目的旨在于提供一种基于云平台的远程调试方法,其能通过互联网对云平台上的应用进行安全地调试。
为实现上述目的本发明采用如下技术方案:
一种基于云平台的远程调试方法,包括如下步骤:
a.在客户端上建立远程调试应用类型;
b.客户端向云平台上的代理服务器发起查询远程虚拟机请求;
c.代理服务器接收请求后向客户端发出认证对话框;
d.在对话框中输入认证信息,发送至云平台,通过认证后,获取正在使用的远程虚拟机名称;
e.客户端向代理服务器发出建立调试连接请求,代理服务器接收调试连接请求后根据认证信息与云平台上对应的远程虚拟机建立连接,连接建立后代理服务器给客户端返回一个会话标识;
f.客户端将JDWP请求报文封装为HTTP请求报文,并将HTTP请求报文与会话标识发送给代理服务器,请求调试;
g.代理服务器验证会话标识的有效性,如果有效,则将接收到的HTTP请求报文转化为JDWP请求报文后发送至远程虚拟机;
h.远程虚拟机根据接收到的JDWP请求报文进行调试,并将调试结果以JDWP结果报文的方式发送给代理服务器;
i.代理服务器将接收到的JDWP结果报文封装为HTTP结果报文,并将HTTP结果报文返回给客户端;
j.客户端将接收到的HTTP结果报文转化为JDWP结果报文,显示调试结果。
作为一种优选方案,所述步骤d中的认证信息包括用户名、密码及待调试的应用在云平台上的应用标识。
作为一种优选方案,所述步骤g中,如果代理服务器验证会话标识无效,则主动断开与客户端的连接。
作为一种优选方案,所述步骤i中将HTTP结果报文返回给客户端的具体步骤为:客户端向代理服务器发出读请求,主动拉取代理服务器上的HTTP结果报文,代理服务器接收到读请求后启动一个守候线程,当代理服务器接收到远程虚拟机发来的JDWP结果报文时,将其封装为HTTP结果报文后发送给客户端。
作为一种优选方案,所述步骤f中客户端将JDWP请求报文封装为HTTP请求报文时还设置了报文的编号,同一次调试过程中的所有报文均采用同一个编号。
作为一种优选方案,所述编号为自动增长的标量。
作为一种优选方案,所述代理服务器对已经发送给客户端的HTTP结果报文做缓存处理,客户端发出的读请求的请求包中,包含了当前期望获取HTTP结果报文的编号,代理服务器先从已发送的HTTP结果报文缓存中查找该编号的HTTP结果报文,如果命中则从缓存中发送该编号的HTTP结果报文给客户端。
作为一种优选方案,进一步包括步骤k.客户端向代理服务器发出断开调试连接的请求,代理服务器将请求传递给远程虚拟机,远程虚拟机关闭与代理服务器的连接,同时客户端释放连接资源和调试任务。
本发明所阐述的一种基于云平台的远程调试方法,其有益效果在于:
一、采用本方法,用户需通过认证才能对其应用进行调试,保护了用户的应用不被非法访问,大大提高了安全性;
二、本方法利用云平台的分布式计算的优势,使远程调试自动化执行,更加简单方便。用户调试云平台上的应用时,不必对服务器配置做手动配置,在使用调试客户端时,也只需提供用户的认证信息即可;
三、网络配置简单。软件开发环境和调试环境往往是严格区分的,传统的远程调试方法要求调试环境跟开发环境在同一网段,或者通过配置网络映射关系达到链接的目的,而本方法建立远程调试时是通过HTTP实现客户端与代理服务器之间的通信,无需特殊的网络配置,能连接互联网即可。
附图说明
图1是本发明一种基于云平台的远程调试方法的流程示意图。
具体实施方式
下面结合附图与具体实施例来对本发明作进一步描述。
请参照图1所示,其显示出了本发明一种基于云平台的远程调试方法的主要流程,在步骤a中,在客户端上建立远程调试应用类型。由于Eclipse是最常用的开发工具,故本实施例中的客户端是基于Eclipse OSGI插件机制实现的,即实现具有远程调试功能的Eclipse插件,这样做的优点是不改变Eclipse IDE本身原有的功能,用户不必选择全新的开发工具,只需安装远程调试插件后就可以通过本地Eclipse IDE调试云平台上的应用。本方法由于是客户端与云平台上的代理服务器之间进行数据交互,因而所要求的运行环境不同于Eclipse IDE中原有的类型,需定义一种新的应用类型,调试前需先建立好对应的远程调试类型。
进行到步骤b,客户端向云平台上的代理服务器发起查询远程虚拟机请求。最终的调试工作是由云平台上的远程虚拟机完成的,而用户事先并不知道远程虚拟机位于云平台上的哪一个服务器上,故需通过代理服务器查询对应的远程虚拟机。
进行到步骤c,代理服务器接收请求后向客户端发出认证对话框。云平台上部署了不同用户的大量应用,出于安全性考虑,不同用户间的应用必须是相互透明的,即每一个用户未经授权都无法访问其他用户的应用,因此,代理服务器在接收到查询请求时应该验证该请求是否合法,即验证提出查询请求的用户是否是这个应用的合法用户。
进行到步骤d,在对话框中输入认证信息,发送至云平台,通过认证后,获取正在使用的远程虚拟机名称。认证信息包括用户名、密码和应用在云平台上的应用标识,通过认证后,所获取的远程虚拟机名称将显示在客户端的显示窗口上,当然,如果认证失败,会要求用户重新输入认证信息。
进行到步骤e,客户端向代理服务器发出建立调试连接请求,代理服务器接收调试连接请求后根据认证信息与云平台上对应的远程虚拟机建立连接,连接建立后代理服务器给客户端返回一个会话标识。会话标识的作用是为了进一步加强安全性,客户端接下来与代理服务器的每次请求都会包含这个会话标识,代理服务器自行验证这个会话标识的有效性,如果会话标识在代理服务器端部存在或者超时,即会话标识无效时,代理服务器将主动断开与客户端的调试会话。
进行到步骤f,客户端将JDWP请求报文封装为HTTP请求报文,并将HTTP请求报文与会话标识发送给代理服务器,请求调试。通过Eclipse发出的请求报文是JDWP请求报文,为实现客户端与远程虚拟机之间的读写分离,可建立在HTTP通信方式上,将一次发送JDWP请求过程用一次完整的HTTP交互来完成,这样客户端的JDWP请求报文可以迅速发送至代理服务器,达到更大的读写效率。客户端在将JDWP请求报文封装为HTTP请求报文时还设置了报文的编号,表示当前HTTP请求报文的序号,且同一次调试过程中的所有报文均采用同一个编号,该编号为自动增长的标量。
进行到步骤g,代理服务器验证会话标识的有效性,如果有效,则将接收到的HTTP请求报文转化为JDWP请求报文后发送至远程虚拟机。当然,如果无效,代理服务器将主动断开与客户端的调试会话。
进行到步骤h,远程虚拟机根据接收到的JDWP请求报文进行调试,并将调试结果以JDWP结果报文的方式发送给代理服务器。
进行到步骤i,代理服务器将接收到的JDWP结果报文封装为HTTP结果报文,并将HTTP结果报文返回给客户端。具体而言,由客户端向代理服务器发出读请求,主动拉取代理服务器上的HTTP结果报文,代理服务器接收到读请求后启动一个守候线程,当代理服务器接收到远程虚拟机发来的JDWP结果报文时,将其封装为HTTP结果报文后发送给客户端。当然,此步骤中也可由代理服务器主动将HTTP结果报文发送给客户端。
进行到步骤j,客户端将接收到的HTTP结果报文转化为JDWP结果报文,显示调试结果。
当客户端接收的报文较多、数据量较大时,有时会出现丢包的情况,影响调试的体验,为解决这个问题,所述代理服务器对已经发送给客户端的HTTP结果报文做缓存处理,客户端发出的读请求的请求包中,包含了当前期望获取HTTP结果报文的编号,代理服务器先从已发送的HTTP结果报文缓存中查找该编号的HTTP结果报文,如果命中则从缓存中发送该编号的HTTP结果报文给客户端。
进行到步骤k,客户端向代理服务器发出断开调试连接的请求,代理服务器将请求传递给远程虚拟机,远程虚拟机关闭与代理服务器的连接,同时客户端释放连接资源和调试任务。
需指出的是,在调试过程中,如果出现任何异常,代理服务器都将抛出异常并断开与客户端的连接,此时客户端将主动释放所有启动的调试任务和系统资源。
本发明的设计重点在于:其一,采用本方法,用户需通过认证才能对其应用进行调试,保护了用户的应用不被非法访问,大大提高了安全性;其二,本方法利用云平台的分布式计算的优势,使远程调试自动化执行,更加简单方便。用户调试云平台上的应用时,不必对服务器配置做手动配置,在使用调试客户端时,也只需提供用户的认证信息即可;其三,网络配置简单。软件开发环境和调试环境往往是严格区分的,传统的远程调试方法要求调试环境跟开发环境在同一网段,或者通过配置网络映射关系达到链接的目的,而本方法建立远程调试时是通过HTTP实现客户端与代理服务器之间的通信,无需特殊的网络配置,能连接互联网即可;此外,应用所在的云服务器地址对用户透明,通过认证的用户可远程启动或关闭云平台上的应用,而不必关心应用具体在哪台或哪些云服务器上运行。
以上所述,仅是本发明较佳实施例而已,并非对本发明的技术范围作任何限制,故凡是依据本发明的技术实质对以上实施例所作的任何细微修改、等同变化与修饰,均仍属于本发明技术方案的范围内。