JAVA代理的处理方法、装置、终端设备以及存储介质与流程

文档序号:26050076发布日期:2021-07-27 15:24阅读:85来源:国知局
JAVA代理的处理方法、装置、终端设备以及存储介质与流程

本发明涉及金融科技(fintech)技术领域,尤其涉及一种java代理的处理方法、装置、终端设备以及计算机存储介质。



背景技术:

随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技转变,但由于金融行业的安全性、实时性以及稳定性等要求,也对技术提出了更高的要求。

目前,基于java(计算机编程语言)开发业务应用的测试工具通常都会运用到众多的java代理(javaagent:一种提供使我们能够介入jvm中正在运行的java程序的服务,在最低级别上工作的java代理)工具。由于各java代理都是独立存在和使用的,且各java代理都是在需要使用的时候才基于开发人员的实时交互操作进行启动。

现有使用java代理的方案都是基于jvmti(java虚拟机的工具接口)底层接入java代理的方式来实现,即,由开发人员在需要使用java代理时,临时通过jvmti登录到业务应用所在的机器设备,并把java代理相关的程序包上传到该机器设备上从而实时的将该java代理注入到业务应用当中,进而开启相关功能。然而,由于jvmti的实现逻辑和机器设备os临时目录的清理机制的影响,现有基于jvmti底层接入java代理的方式在业务应用启动超过一定时间之后,往往容易出现java代理注入失败的情况,导致java代理的使用非常不稳定。



技术实现要素:

本发明的主要目的在于提供一种java代理的处理方法、装置、终端设备以及计算机存储介质,旨在规避现有基于jvmti底层接入java代理的方式存在的java代理注入失败风险,提高使用java代理开发应用测试工具的稳定性。

为实现上述目的,本发明提供一种java代理的处理方法,所述java代理的处理方法应用于所述java代理的管理平台,所述java代理的处理方法包括:

向待开发测试工具的业务应用中注入所述java代理;

在所述业务应用之间建立与所述业务应用的运行进程相互独立的通讯连接;

基于所述通讯连接下发实时交互指令以控制所述业务应用在运行过程中动态加载所述java代理。

此外,为实现上述目的,本发明还提供一种java代理的处理装置,所述java代理的处理装置应用于所述java代理的管理平台,所述java代理的处理装置包括:

注入模块,用于向待开发测试工具的业务应用中注入所述java代理;

独立通讯模块,用于在所述业务应用之间建立与所述业务应用的运行进程相互独立的通讯连接;

加载模块,用于基于所述通讯连接下发实时交互指令以控制所述业务应用在运行过程中动态加载所述java代理。

其中,本发明java代理的处理装置的各功能模块在运行时实现如上所述的java代理的处理方法的步骤。

此外,为实现上述目的,本发明还提供一种终端设备,所述终端设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的java代理的处理程序,所述java代理的处理程序被所述处理器执行时实现如上所述的java代理的处理方法的步骤。

此外,为实现上述目的,本发明还提供一种计算机存储介质,所述计算机存储介质上存储有java代理的处理程序,所述java代理的处理程序被处理器执行时实现如上所述的java代理的处理方法的步骤。

此外,为实现上述目的,本发明还提供计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现如上所述的java代理的处理方法的步骤。

本发明提供的一种java代理的处理方法、装置、终端设备、计算机存储介质以及计算机程序产品,通过java代理的管理平台向待开发测试工具的业务应用中注入所述java代理;在所述业务应用之间建立与所述业务应用的运行进程相互独立的通讯连接;基于所述通讯连接下发实时交互指令以控制所述业务应用在运行过程中动态加载所述java代理。

本发明在使用java代理来进行业务应用测试工具的开发过程中,通过该java代理统一的管理平台预先向待开发测试工具的业务应用当中注入java代理,然后进一步在该业务应用之间建立起与该业务应用的运行进程相互独立的通讯连接,从而在需要使用该java代理时,基于该通讯连接向该业务应用下发事实交互指令来控制该业务应用直接在运行过程中,动态的加载该java代理以用于开发测试工具。

本发明相比于传统基于jvmti底层接入java代理的方式,通过预先向业务应用注入java代理并建立与业务应用之间能够控制该业务应用的通讯连接,实现了尽早建立使用java代理的有效可靠的通道,并提前打通了可以针对java代理进行灵活管理的加载方式,能够在真正需要加载java代理的时候,直接基于虚拟机加载外部java程序的方式即可把java代理动态引用进业务应用的运行过程,规避了临时向业务应用注入java代理存在的注入失败风险,提高了使用java代理开发应用测试工具的稳定性。

此外,本发明java代理的处理方法基于预先向业务应用注入java代理并建立与业务应用之间能够控制该业务应用的通讯连接,还实现了java代理与业务应用之间的解耦(无需在需要使用java代理时临时登录应用并向应用上传相关程序包以注入java代理),从而,能够做到使用java代理时对业务应用的零修改、零配置接入,提升了使用java代理进行应用测试工具的开发效率。

附图说明

图1为本发明实施例方案涉及的终端设备硬件运行环境的设备结构示意图;

图2为本发明java代理的处理方法第一实施例的流程示意图;

图3为本发明java代理的处理方法一实施例所涉及的应用场景示意图;

图4为本发明java代理的处理方法一实施例所涉及的另一应用场景示意图;

图5为本发明java代理的处理方法一实施例所涉及的应用流程示意图;

图6为本发明java代理的处理方法一实施例所涉及的另一应用流程示意图;

图7为本发明java代理的处理方法一实施例所涉及的图形用户界面;

图8为本发明java代理的处理装置一实施例的功能模块示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

参照图1,图1为本发明实施例方案涉及的终端设备硬件运行环境的设备结构示意图。

本发明实施例终端设备可以是装载有需要进行测试工具开发的业务应用的设备,或者,本发明实施例终端设备还可以是一个或者多个java代理统一的管理平台,该终端设备可以是智能手机、pc(personalcomputer,个人计算机)、平板电脑、便携计算机等等。

如图1所示,该终端设备可以包括:处理器1001,例如cpu,通信总线1002,用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(display)、输入单元比如键盘(keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如wi-fi接口)。存储器1005可以是高速ram存储器,也可以是稳定的存储器(non-volatilememory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。

本领域技术人员可以理解,图1中示出的终端设备结构并不构成对终端设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及java代理的处理程序。

在图1所示的终端中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端,与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的java代理的处理程序,并执行以下java代理的处理方法的各实施例。

基于上述硬件结构,提出本发明java代理的处理方法的各实施例。

需要说明的是,目前,基于java(计算机编程语言)开发业务应用的测试工具通常都会运用到众多的java代理(javaagent:一种提供使我们能够介入jvm中正在运行的java程序的服务,在最低级别上工作的java代理)工具。由于各java代理都是独立存在和使用的,且各java代理都是在需要使用的时候才基于开发人员的实时交互操作进行启动。

现有使用java代理的方案都是基于jvmti(java虚拟机的工具接口)底层接入java代理的方式来实现,即,如图3所示的应用场景,由开发人员在需要使用java代理时,临时通过jvmti登录到业务应用所在的机器设备,并把java代理相关的程序包上传到该机器设备上从而实时的将该java代理注入到业务应用当中,进而开启相关功能。然而,由于jvmti的实现逻辑和机器设备os临时目录的清理机制的影响,现有基于jvmti底层接入java代理的方式在业务应用启动超过一定时间之后,往往容易出现java代理注入失败的情况,导致java代理的使用非常不稳定。

针对上述现象,本发明提供一种java代理的处理方法。请参照图2,图2为本发明java代理的处理方法第一实施例的流程示意图,在本实施例中,该java代理的处理方法应用于上述java代理的管理平台,该java代理的处理方法包括:

步骤s10,向待开发测试工具的业务应用中注入所述java代理;

针对待开发测试工具的业务应用,由java代理的管理平台获取该业务应用的操作权限配置,从而基于该操作权限配置将一个或者多个java代理注入到该业务应用当中。

具体地,例如,请参照如图5所示的应用流程,java代理的管理平台(图示server)需要针对待开发测试工具的业务应用中的某一个应用进程注入java代理时,该java代理的管理平台先依赖该业务应用当中具备轮询执行命令能力的ims代理(ims,intellegentmaintenancesystem,设备诊断系统)执行命令内容为“ps-eopid,ppid,cmd|grep-e"java|jsvc"|grep-vgrep”的shell命令,以获取得到该应用进程的用户操作权限配置,从而,该java代理的管理平台即藉由该用户操作权限配置,以该业务应用的用户角色调度javaagent列表中待注入的一个或者多个java代理各自的attach功能(实现java代理与应用进程之间进行网络接入与注册的功能),从而把各个java代理注入到该业务应用中,并建立起该各个java代理针对该应用进程进行对应操作(例如采集进程运行数据、监控进程运行状态等)的关联关系。

步骤s20,在所述业务应用之间建立与所述业务应用的运行进程相互独立的通讯连接;

java代理的管理平台在将后续开发测试工具需要使用的一个或者多个java代理,注入到待开发该测试工具的业务应用当中之后,进一步通过成熟的通讯协议建立起与该业务应用之间,且独立于该业务应用运行之外的通讯连接。

需要说明的是,在本实施例中,java代理的管理平台可以针对每一个注入到业务应用当中的java代理均建立单独的独立于该业务应用运行之外的通讯连接,从而java代理的管理平台可单独基于该通讯连接仅管理该java代理针对该业务应用中,该java代理关联的应用进程进行对应操作;或者,该java代理的管理平台还可以同时针对多个注入到业务应用当中的各java代理建立统一的独立于该业务应用运行之外的通讯连接,从而java代理的管理平台可同时基于该通讯连接同步管理该各个java代理针对该业务应用中,该各个java代理各自关联的应用进程进行对应操作。

具体地,例如,java代理的管理平台针对注入到待开发测试工具的业务应用当中,具备通讯与管理功能的mxagent(众多类型的java代理当中的其中一种)通过自定义的mxrpc协议(微众银行内部研发人员自主研发的一套通讯连接协议)在装载有该业务应用的终端设备上,选择一个数据通信接口上载该mxrpc协议以令该数据通信接口通过该mxrpc协议实现与该java代理的管理平台的通讯连接,此外,该java代理的管理平台在通过mxagent使用该mxrpc协议建立与该业务应用之间的通讯连接时,还通过该mxagent配置该装载有该业务应用的终端设备,在其运行进程池当中选择独立于该业务应用的运行进程之外的其它一个或者多个进程来支撑该通讯连接,从而java代理的管理平台在后续开发工作人员需要使用该mxagent时,即可单独基于独立于该业务应用运行之外的通讯连接仅管理该mxagent针对该业务应用中该mxagent关联的应用进程进行管理操作。

进一步地,在本实施例中,java代理的管理平台在建立与注入了java代理的业务应用之间的通讯连接时,还需要针对该业务应用进行权限认证,即,该java代理的管理平台需要在注入了java代理的业务应用通过权限认证并符合java代理的管理标准之后,才开始建立上述通讯连接。具体地,例如,java代理的管理平台与注入了java代理的业务应用之间建立通讯连接时的连接请求需要在头部带上安装包中的认证keys,且连接过程中该java代理的管理平台会对该连接请求的ip与cmdb中的主机信息、应用实例信息做对比,匹配通过即认为符合java代理的管理标准,如此,才真正将该java代理的管理平台与该注入了java代理的业务应用连接成功。

需要说明的是,在本实施例中,由于java代理的管理平台是开放的连接,因此,基于安全考虑,该java代理的管理平台需要在外部建立连接之前做一层如上所述的权限校验。

步骤s30,基于所述通讯连接下发实时交互指令以控制所述业务应用在运行过程中动态加载所述java代理。

java代理的管理平台在将java代理注入到待开发测试工具的业务应用,并建立与该业务应用之间的通讯连接之后,在开发工作人员开发该业务应用的测试工具的过程中,若该开发工作人员需要使用该java代理,则通过该通讯连接向该业务应用下发实时交互指令,以控制该业务应用在运行过程当中,基于该实时交互指令动态的加载该实时交互指令指向的开发工作人员所需要使用的java代理,从而基于该java代理针对预先关联的该业务应用中的应用进程进行对应操作。

具体地,例如,请参照如图4所示的应用场景,java代理的管理平台(图示mxserver)在将java代理—mxagent注入到待开发测试工具的业务应用,并建立与该业务应用之间的通讯连接之后,若开发工作人员基于开发测试工具的需求而需要使用该java代理—mxagent时,即通过该java代理的管理平台—mxserver,利用该mxserver预先与该业务应用之间建立的通讯连接,向该业务应用下发针对java代理—mxagent的实时交互指令,从而由该业务应用在当前运行过程当中,基于vm或者容器(vm和容器都是java应用运行进程当中的虚拟化方法)动态的将该java代理—mxagent加载起来以开启该java代理—mxagent针对其关联的应用进程的通讯与管理操作。

需要说明的是,在本实施例中,java代理的管理平台在与注入各个java代理的业务应用之间建立通讯连接之后,即可以通过该通讯连接持续查看到该各个java代理各自的运行状态。具体地,例如,请参照如图5所示的应用流程,java代理的管理平台在将一个或者多个java代理注入到待开发测试工具的业务应用,并且,该java代理的管理平台也建立起与该业务应用之间的通讯连接之后,该业务应用当中与注入的各个java代理互相关联的应用进程会在整个生命周期,持续不断的加载各自关联的java代理以获取该java代理的运行状态,且该运行状态会基于该通讯连接传递至该java代理的管理平台。

本发明实施例提供的一种java代理的处理方法,针对待开发测试工具的业务应用,由java代理的管理平台获取该业务应用的操作权限配置,从而基于该操作权限配置将一个或者多个java代理注入到该业务应用当中;java代理的管理平台在将后续开发测试工具需要使用的一个或者多个java代理,注入到待开发该测试工具的业务应用当中之后,进一步通过成熟的通讯协议建立起与该业务应用之间,且独立于该业务应用运行之外的通讯连接;java代理的管理平台在将java代理注入到待开发测试工具的业务应用,并建立与该业务应用之间的通讯连接之后,在开发工作人员开发该业务应用的测试工具的过程中,若该开发工作人员需要使用该java代理,则通过该通讯连接向该业务应用下发实时交互指令,以控制该业务应用在运行过程当中,基于该实时交互指令动态的加载该实时交互指令指向的开发工作人员所需要使用的java代理,从而基于该java代理针对预先关联的该业务应用中的应用进程进行对应操作。

本发明相比于传统基于jvmti底层接入java代理的方式,通过预先向业务应用注入java代理并建立与业务应用之间能够控制该业务应用的通讯连接,实现了尽早建立使用java代理的有效可靠的通道,并提前打通了可以针对java代理进行灵活管理的加载方式,能够在真正需要加载java代理的时候,直接基于虚拟机加载外部java程序的方式即可把java代理动态引用进业务应用的运行过程,规避了临时向业务应用注入java代理存在的注入失败风险,提高了使用java代理开发应用测试工具的稳定性。

此外,本发明java代理的处理方法基于预先向业务应用注入java代理并建立与业务应用之间能够控制该业务应用的通讯连接,还实现了java代理与业务应用之间的解耦(无需在需要使用java代理时临时登录应用并向应用上传相关程序包以注入java代理),从而,能够做到使用java代理时对业务应用的零修改零配置接入,提升了使用java代理进行应用测试工具的开发效率。

进一步地,基于上述第一实施例,提出本发明java代理的处理方法的第二实施例,本实施例与上述第一实施例之间的主要区别在于,在本实施例中,在上述步骤s10,向待开发测试工具的业务应用中注入所述java代理之后,或者,在上述步骤s10,向待开发测试工具的业务应用中注入所述java代理的过程当中,本发明java代理的处理方法,还可以包括:

步骤s40,在所述业务应用的全部业务进程中排除预设无用进程,其中,所述预设无用进程为与开发测试工具无关的进程。

需要说明的是,在本实施例中,在针对业务应用开发测试工具的过程当中,仅需要使用java代理来针对当前开发测试工具相关的部分应用进程进行对应操作,而对于该业务应用全部的业务进程当中,与当前开发测试工具无关的进程进行排除,即无需注入java代理与该部分与当前开发测试工具无关的进程建立关联关系。

java代理的管理平台在将后续开发测试工具需要使用的一个或者多个java代理,注入到待开发该测试工具的业务应用当中的过程中,进一步在该业务应用的全部业务进程当中,将部分与后续开发测试工具所无关的预设无用进程进行排除,从而令注入到该业务应用当中的一个或者多个java代理,无需与该部分预设无用进程进行关联,即后续在基于开发测试工具需要而使用该一个或者多个java代理时,该一个或者多个java代理即无需针对该部分预设无用进程执行对应操作。

具体地,例如,与当前开发测试工具无关的进程具体可以为jdk(jdk是java语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序)自带或者特殊的进程,其中,jdk自带的进程(或者称作工具如sun、tools、jps等,而特殊的进程一般为一些终端的java客户端,如org、apache、zookeeper、zookeepermain、karaf、client、main等,java代理的管理平台在将java代理注入到业务应用当中之后,即可以通过读取该业务应用全部业务进程各自的启动参数来确定该全部业务进程当中与当前开发测试工具所不相关的无用进程,并排除该部分无用进程以无需注入的该java代理与该部分无用进程之间建立关联关系。

进一步地,在一种可行的实施例中,上述步骤s40,在所述业务应用的全部业务进程中排除预设无用进程,可以包括:

步骤s401,扫描所述业务应用的全部业务进程以获取全部所述业务进程各自的名称关键字;

在将后续开发测试工具需要使用的一个或者多个java代理,注入到待开发该测试工具的业务应用当中的过程中,通过安装该业务应用的终端设备扫描该业务应用的全部业务进程以获取得到该全部业务进程各自进程名称当中的名称关键字。

具体地,例如,请参照如图6的应用流程,java代理的管理平台在将java代理注入到业务应用当中时,控制当前安装该业务应用的终端设备(以linxu作为操作系统)执行ps命令(ps:processstatus,ps命令用于显示当前应用进程的状态,类似于windows的任务管理器)来扫描获取得到当前业务应用全部业务进程(图示java/jsvc进程)的名称关键字。

步骤s402,将各所述名称关键字与预设固定关键字进行比对以确定全部所述业务进程中的预设无用进程,并排除所述预设无用进程,其中,所述预设固定关键字用于标识与开发测试工具无关的进程。

在获取得到全部业务进程各自进程名称当中的名称关键字之后,进一步将该各名称关键字与用于标识与后续开发测试工具无关的进程的预设固定关键字进行比对,从而将比对得到与该预设固定关键字一致的部分名称关键字各自所对应的业务进程,确定为后续开发测试工具无关的预设无用进程,进而排除该部分预设无用进程。

具体地,例如,预设固定关键字可以为jdk自带的工具类进程或者一些命令行工具类进程的名称关键字:sun、tools、jps、org、apache、zookeeper、zookeepermain、karaf、client、main,请参照如图6的应用流程,java代理的管理平台在控制当前安装该业务应用的终端设备执行ps命令来扫描获取得到当前业务应用全部业务进程(图示java/jsvc进程)的名称关键字之后,立即由该终端设备进一步将该名称关键字与预设固定关键字:sun、tools、jps、org、apache、zookeeper、zookeepermain、karaf、client、main进行比对(图示exclude匹配),从而将对比得到的名称关键字与该各预设固定关键字中的任意一个相同时,确定该名称关键字对应的业务进程(如zookeeper等)确定为后续开发测试工具无关的无用进程,进而排除该无用进程,从而无需注入的java代理与该无用进程建立关联关系。

进一步地,在一种可行的实施例中,上述步骤s40,在所述业务应用的全部业务进程中排除预设无用进程,还可以包括:

步骤s403,采集全部所述业务进程各自的进程运行参数;

需要说明的是,在本实施例中,在排除与开发测试工具无关的进程时,除了基于系统层面扫描到的进程名称关键字进行排除之外,还可以通过进一步采集业务进程各自的运行参数来筛选和排除无用进程。

在将后续开发测试工具需要使用的一个或者多个java代理,注入到待开发该测试工具的业务应用当中的过程中,通过安装该业务应用的终端设备采集该业务应用的全部业务进程各自的进程运行参数。

具体地,例如,进程运行参数具体可以为进程启动所需的所有参数,请参照如图6所示的应用流程,java代理的管理平台在控制安装业务应用的终端设备扫描获取业务进程的名称关键字以比对预设固定关键字,来排除部分与后续开发测试工具无关的无用进程之后,进一步控制该终端设备采集该全部业务进程当中,排除部分无用进程之后剩余各个业务进程各自启动所需的所有参数。

步骤s404,将各所述进程运行参数与预设固定关键字进行比对以确定所述预设无用进程,并排除所述预设无用进程,其中,所述预设固定关键字用于标识与开发测试工具无关的进程。

在采集得到业务应用的全部业务进程各自的进程运行参数之后,进一步将该各进程运行参数与用于标识与后续开发测试工具无关的进程的预设固定关键字进行比对,从而将比对得到与该预设固定关键字一致的部分进程运行参数各自所对应的业务进程,确定为后续开发测试工具无关的预设无用进程,进而排除该部分预设无用进程。

具体地,例如,预设固定关键字除了是jdk自带的工具类进程或者一些命令行工具类进程的名称关键字之外,预设固定关键字还可以是jdk自带的工具类进程或者一些命令行工具类进程特有的启动所需的参数,请参照如图6的应用流程,java代理的管理平台在控制当前安装该业务应用的终端设备采集得到该全部业务进程当中,排除部分无用进程之后剩余各个业务进程各自启动所需的所有参数之后,立即由该终端设备进一步将该各个业务进程各自启动所需的所有参数,继续与jdk自带的工具类进程或者一些命令行工具类进程特有的启动所需的参数进行比对(图示exclude匹配),从而将对比得到的某一个业务进程的启动所需的所有参数,与该jdk自带的工具类进程或者一些命令行工具类进程特有的启动所需的参数相同时,确定该业务进程(如sun、tools等)确定为后续开发测试工具无关的无用进程,进而排除该无用进程,从而无需注入的java代理与该无用进程建立关联关系。

在本实施例中,由于在针对业务应用开发测试工具的过程当中,仅需要使用java代理来针对当前开发测试工具相关的部分应用进程进行对应操作,而对于该业务应用全部的业务进程当中,与当前开发测试工具无关的进程进行排除,即无需注入java代理与该部分与当前开发测试工具无关的进程建立关联关系。从而,本发明提供的java代理的处理方法即通过java代理的管理平台在将后续开发测试工具需要使用的一个或者多个java代理,注入到待开发该测试工具的业务应用当中的过程中,进一步在该业务应用的全部业务进程当中,将部分与后续开发测试工具所无关的预设无用进程进行排除,从而令注入到该业务应用当中的一个或者多个java代理,无需与该部分预设无用进程进行关联,即后续在基于开发测试工具需要而使用该一个或者多个java代理时,该一个或者多个java代理即无需针对该部分预设无用进程执行对应操作。

如此,实现了在后续开发工作人员使用java代理用于开发测试工具时,该java代理可针对当前开发测试工具相关的部分应用进程进行对应操作,不会因为java代理也针对当前开发测试工具无关的无用进程进行操作以造成资源的浪费,提高了java代理的使用效率。

此外,本实施例中,通过安装该业务应用的终端设备采集该业务应用的全部业务进程各自的进程运行参数,并进一步将该各进程运行参数与用于标识与后续开发测试工具无关的进程的预设固定关键字进行比对,从而将比对得到与该预设固定关键字一致的部分进程运行参数各自所对应的业务进程,确定为后续开发测试工具无关的预设无用进程,进而排除该部分预设无用进程。如此,还提高了过滤排除无用进程的准确率。

进一步地,基于上述第一实施例和第二实施例,提出本发明java代理的处理方法的第三实施例,本实施例与上述第一实施例和第二实施例之间的主要区别在于,上述步骤s30,基于所述通讯连接控制所述业务应用在运行过程中动态加载所述java代理,可以包括:

步骤s301,基于所述通讯连接动态获取所述业务应用的全部业务进程;

java代理的管理平台在将后续开发测试工具需要使用的一个或者多个java代理,注入到待开发该测试工具的业务应用当中,并建立起与该业务应用之间的通讯连接之后,控制安装该业务应用的终端设备动态的扫描该业务应用的全部业务进程,并通过该通讯连接将该全部业务进程获取到本地平台上。

具体地,例如,java代理的管理平台在将java代理注入到业务应用当中,并建立起与该业务应用之间的通讯连接之后,控制当前安装该业务应用的终端设备,先(以linxu作为操作系统)动态的执行ps命令来扫描获取得到当前业务应用全部业务进程,然后将扫描得到的该全部业务进程通过该通讯连接传递至该java代理的管理平台上。

步骤s302,确定全部所述业务进程当中的待操作业务进程;

java代理的管理平台在通过与业务应用之间建立的通讯连接将该业务应用的全部业务进程获取到本地平台上之后,根据开发工作人员基于开发测试工具的需要而针对该全部业务进程输入的选择操作来确定该全部业务进程当中的待操作业务进程。

进一步地,在一种可行的实施例中,在上述步骤s301,基于所述通讯连接动态获取所述业务应用的全部业务进程之后,本发明java代理的处理方法还可以包括:

步骤a,将全部所述业务进程通过预设的图形用户界面进行可视化输出;

需要说明的是,在本实施例中,预设的图形用户界面为java代理的管理平台面向开发工作人员用于输出业务应用的业务进程以及java代理的运行状态和操作选项的界面。

java代理的管理平台在通过与业务应用之间建立的通讯连接将该业务应用的全部业务进程获取到本地平台上之后,即通过预设的图形用户界面将该全部业务进程面向开发工作人员进行可视化输出。

进一步地,上述步骤s302,确定全部所述业务进程当中的待操作业务进程,可以包括:

步骤s3021,根据所述图形用户界面接收进程选择操作;

步骤s3022,将所述进程选择操作在全部所述业务进程中选中的业务进程确定为待操作业务进程。

java代理的管理平台通过预设的图形用户界面将动态获取到的全部业务进程面向开发工作人员进行可视化输出之后,即可接收该开发工作人员基于开发测试工具需要而在该图形用户界面上,针对该全部业务进程输入的进程选择操作,然后,java代理的管理平台即进一步将接收到的该进程选择操作在该全部业务进程当中选中的进程确定为开发工作人员选择的在后续开发测试工具过程中需要使用java代理进行对应操作的待操作业务进程。

具体地,例如,预设的图形用户界面可以为如图7所示,java代理的管理平台在通过与业务应用之间建立的通讯连接将该业务应用的全部业务进程获取到本地平台上之后,即通过如图7所示的图形用户界面将该全部业务进程面向开发工作人员进行可视化输出,然后,该java代理的管理平台即即可接收该开发工作人员基于开发测试工具需要而在该图形用户界面上,针对该全部业务进程输入的进程选择操作,再然后,java代理的管理平台即进一步将接收到的该进程选择操作在该全部业务进程当中选中的进程确定为开发工作人员选择的在后续开发测试工具过程中需要使用java代理进行对应操作的待操作业务进程。

步骤s303,向所述业务应用下发实时交互指令以供所述业务应用在运行过程中加载所述实时交互指令指定的目标java代理,以通过所述目标java代理针对所述待操作业务进程进行对应操作。

java代理的管理平台在根据开发工作人员输入的选择操作确定在后续开发测试工具过程中需要使用java代理进行对应操作的待操作业务进程之后,立即基于该待操作业务进程生成实时交互指令并将该实时交互指令通过与业务应用之间建立的通讯连接下发至该业务应用所在的终端设备上,从而由该终端设备控制该业务应用在当前运行过程当中动态的加载该实时交互指令所指定的目标java代理,从而通过该目标java代理针对开发工作人员选中的待操作业务进程进行对应操作。

需要说明的是,在本实施例中,实时交互指令可以为“process_info”:获取业务应用的基本信息、“javaagent_status”:获取各个java代理的状态、“javaagent_install”:java代理安装,从管理平台(server端)下载所需的物料、“javaagent_load”:java代理注入到业务进程、“javaagent_upgrade”:java代理更新、以及“javaagent_shutdown”:停止卸载java代理等类型的消息。

具体地,例如,java代理的管理平台—mxserver,在根据开发工作人员输入的选择操作确定在后续开发测试工具过程中需要使用java代理—mxagent进行对应操作的待操作业务进程之后,立刻封装该java代理—mxagent的必须参数(agentjar:需要启动的java代理路径,和agentargs:启动参数)以生成实时交互指令—“javaagent_load”,然后将该实时交互指令—“javaagent_load”通过预先建立的通讯连接下发给安装业务应用的终端设备,由该终端设备执行该实时交互指令—“javaagent_load”以控制该业务应用通过instrumentation对象,把mxagent的必须参数中的agentjar加入到bootstrap的classpath,使用反射invoke调用需要加载的agent-classagentmain方法模拟到attach以实现动态加载该mxagent来针对待操作业务进程执行对应的通讯和管理操作。

进一步地,在另一种可行的实施例中,在需要针对启动中的java代理进行关闭时,只需该java代理的管理平台向业务应用下发“javaagent_shutdown”指令即可。

在本实施例中,由于传统使用java代理时普遍存在的个人集成(当前业界很多的java代理使用门槛低,个人可以通过自行将java代理下载到本地,简单集成到自己的应用程序,或者也可以自行开发java代理集成到应用程序)和环境集成(在环境管理需要下,对整体应用程序都统一集成某些java代理(例如监控),由管理方底层统一完成)的方式,且该两种集成使用java代理的方式通常都是同时存在的,如此,在各自管理方不知情的情况下,很容易出现java代理注入重复或者注入冲突以直接引起应用不可用的情况,并且出现上述情况的原因往往追溯困难。

基于此,本实施提供的java代理的处理方法,通过java代理的管理平台在将后续开发测试工具需要使用的一个或者多个java代理,注入到待开发该测试工具的业务应用当中,并建立起与该业务应用之间的通讯连接之后,控制安装该业务应用的终端设备动态的扫描该业务应用的全部业务进程,并通过该通讯连接将该全部业务进程获取到本地平台上;java代理的管理平台在通过与业务应用之间建立的通讯连接将该业务应用的全部业务进程获取到本地平台上之后,即通过预设的图形用户界面将该全部业务进程面向开发工作人员进行可视化输出;ava代理的管理平台通过预设的图形用户界面将动态获取到的全部业务进程面向开发工作人员进行可视化输出之后,即可接收该开发工作人员基于开发测试工具需要而在该图形用户界面上,针对该全部业务进程输入的进程选择操作,然后,java代理的管理平台即进一步将接收到的该进程选择操作在该全部业务进程当中选中的进程确定为开发工作人员选择的在后续开发测试工具过程中需要使用java代理进行对应操作的待操作业务进程;基于该待操作业务进程生成实时交互指令并将该实时交互指令通过与业务应用之间建立的通讯连接下发至该业务应用所在的终端设备上,从而由该终端设备控制该业务应用在当前运行过程当中动态的加载该实时交互指令所指定的目标java代理,从而通过该目标java代理针对开发工作人员选中的待操作业务进程进行对应操作。

如此,本发明实现了全自动化、一站式的java代理标准管理,通过建立java代理统一的管理平台,基于可视化展示业务进程和java代理的状态,达成了透明化业务应用加载的所有java代理,并可视化操作每个java代理的生命周期的目的,从而极大程度上减少了java代理冲突而对开发测试工具带来的不良影响,进一步提升了使用java代理的效率和开发测试工具的效率。

进一步地,本发明还提供一种java代理的处理方法,该java代理的处理方法应用在如上各个实施例中所描述的、安装待开发测试工具的业务应用的终端设备,本发明java代理的处理方法包括以下步骤:

步骤s50,向所述业务应用中注入所述java代理;

针对待开发测试工具的业务应用,由java代理的管理平台获取该业务应用的操作权限配置,从而基于该操作权限配置控制安装该业务应用的终端设备将一个或者多个java代理注入到该业务应用当中。

具体地,例如,请参照如图5所示的应用流程,java代理的管理平台(图示server)需要针对待开发测试工具的业务应用中的某一个应用进程注入java代理时,该java代理的管理平台先依赖该业务应用当中具备轮询执行命令能力的ims代理(ims,intellegentmaintenancesystem,设备诊断系统)执行命令内容为“ps-eopid,ppid,cmd|grep-e"java|jsvc"|grep-vgrep”的shell命令,以获取得到该应用进程的用户操作权限配置,从而,该java代理的管理平台即藉由该用户操作权限配置,以该业务应用的用户角色调度javaagent列表中待注入的一个或者多个java代理各自的attach功能(实现java代理与应用进程之间进行网络接入与注册的功能),从而把各个java代理注入到该业务应用中,并建立起该各个java代理针对该应用进程进行对应操作(例如采集进程运行数据、监控进程运行状态等)的关联关系。

步骤s60,建立与所述java代理的管理平台之间的通讯连接;

安装待开发测试工具的业务应用的终端设备,在将后续开发测试工具需要使用的一个或者多个java代理,注入到该业务应用当中之后,进一步通过成熟的通讯协议建立起该业务应用与java代理的管理平台之间,独立于该业务应用运行之外的通讯连接。

需要说明的是,在本实施例中,终端设备可以针对每一个注入到业务应用当中的java代理均建立单独的独立于该业务应用运行之外的通讯连接,从而java代理的管理平台可单独基于该通讯连接仅管理该java代理针对该业务应用中,该java代理关联的应用进程进行对应操作;或者,该终端设备还可以同时针对多个注入到业务应用当中的各java代理建立统一的独立于该业务应用运行之外的通讯连接,从而java代理的管理平台可同时基于该通讯连接同步管理该各个java代理针对该业务应用中,该各个java代理各自关联的应用进程进行对应操作。

具体地,例如,安装有待开发测试工具的业务应用的终端设备针对注入到待开发测试工具的业务应用当中,具备通讯与管理功能的mxagent(众多类型的java代理当中的其中一种)通过自定义的mxrpc协议(微众银行内部研发人员自主研发的一套通讯连接协议)建立起单独的该终端设备与该java代理的管理平台之间,独立于该业务应用运行之外的通讯连接,从而java代理的管理平台在后续开发工作人员需要使用该mxagent时,即可单独基于该通讯连接仅管理该mxagent针对该业务应用中该mxagent关联的应用进程进行管理操作。

进一步地,在本实施例中,终端设备在建立与注入的java代理的管理平台之间的通讯连接时,还需要针对该业务应用进行权限认证,即,该java代理的管理平台需要在注入了java代理的业务应用通过权限认证并符合java代理的管理标准之后,才开始建立上述通讯连接。

需要说明的是,在本实施例中,由于java代理的管理平台是开放的连接,因此,基于安全考虑,该java代理的管理平台需要在外部建立连接之前做一层权限校验。具体地,java代理的管理平台与注入了java代理的业务应用之间建立通讯连接时的连接请求需要在头部带上安装包中的认证keys,且连接过程中该java代理的管理平台会对该连接请求的ip与cmdb中的主机信息、应用实例信息做对比,匹配通过才真正连接成功。

步骤s70,基于所述通讯连接在所述业务应用的运行过程中动态加载所述java代理。

终端设备在将java代理注入到待开发测试工具的业务应用,并建立与该java代理的管理平台之间的通讯连接之后,在开发工作人员开发该业务应用的测试工具的过程中,若该开发工作人员需要使用该java代理,则通过该通讯连接接收该管理平台向该业务应用下发该java代理的调用指令以控制该业务应用在运行过程当中,基于该调用指令动态的加载该调用指令指向的开发工作人员所需要使用的java代理,从而基于该java代理针对预先关联的该业务应用中的应用进程进行对应操作。

具体地,例如,请参照如图4所示的应用场景,java代理的管理平台(图示mxserver)在将java代理—mxagent注入到待开发测试工具的业务应用,并建立与该业务应用之间的通讯连接之后,若开发工作人员基于开发测试工具的需求而需要使用该java代理—mxagent时,即通过该java代理的管理平台—mxserver,利用该mxserver预先与该业务应用之间建立的通讯连接,向该业务应用下发java代理—mxagent的调用指令,从而由该业务应用在当前运行过程当中,基于vm或者容器(vm和容器都是java应用运行进程当中的虚拟化方法)动态的将该java代理—mxagent加载起来以开启该java代理—mxagent针对其关联的应用进程的通讯与管理操作。

需要说明的是,在本实施例中,终端设备在建立与java代理的管理平台之间的通讯连接之后,即可以通过该通讯连接持续将该各个java代理各自的运行状态上传至该管理平台。具体地,例如,请参照如图5所示的应用流程,java代理的管理平台在将一个或者多个java代理注入到待开发测试工具的业务应用,并且,该java代理的管理平台也建立起与该业务应用之间的通讯连接之后,该业务应用当中与注入的各个java代理互相关联的应用进程会在整个生命周期,持续不断的加载各自关联的java代理以获取该java代理的运行状态,且该运行状态会基于该通讯连接传递至该java代理的管理平台。

在本实施例中,通过针对待开发测试工具的业务应用,由java代理的管理平台获取该业务应用的操作权限配置,从而基于该操作权限配置控制安装该业务应用的终端设备将一个或者多个java代理注入到该业务应用当中;安装待开发测试工具的业务应用的终端设备,在将后续开发测试工具需要使用的一个或者多个java代理,注入到该业务应用当中之后,进一步通过成熟的通讯协议建立起该业务应用与java代理的管理平台之间,独立于该业务应用运行之外的通讯连接;终端设备在将java代理注入到待开发测试工具的业务应用,并建立与该java代理的管理平台之间的通讯连接之后,在开发工作人员开发该业务应用的测试工具的过程中,若该开发工作人员需要使用该java代理,则通过该通讯连接接收该管理平台向该业务应用下发该java代理的调用指令以控制该业务应用在运行过程当中,基于该调用指令动态的加载该调用指令指向的开发工作人员所需要使用的java代理,从而基于该java代理针对预先关联的该业务应用中的应用进程进行对应操作。

本发明相比于传统基于jvmti底层接入java代理的方式,通过预先向业务应用注入java代理并建立与业务应用之间能够控制该业务应用的通讯连接,实现了尽早建立使用java代理的有效可靠的通道,并提前打通了可以针对java代理进行灵活管理的加载方式,能够在真正需要加载java代理的时候,直接基于虚拟机加载外部java程序的方式即可把java代理动态引用进业务应用的运行过程,规避了临时向业务应用注入java代理存在的注入失败风险,提高了使用java代理开发应用测试工具的稳定性。

此外,本发明java代理的处理方法基于预先向业务应用注入java代理并建立与业务应用之间能够控制该业务应用的通讯连接,还实现了java代理与业务应用之间的解耦(无需在需要使用java代理时临时登录应用并向应用上传相关程序包以注入java代理),从而,能够做到使用java代理时对业务应用的零修改零配置接入,提升了使用java代理进行应用测试工具的开发效率。

进一步地,本发明还提供一种java代理的处理装置,请参照图8,图8为本发明java代理的处理装置一实施例的功能模块示意图,该java代理的处理装置应用于所述java代理的管理平台,如图8所示,本发明java代理的处理装置包括:

注入模块10,用于向待开发测试工具的业务应用中注入所述java代理;

独立通讯模块20,用于在所述业务应用之间建立与所述业务应用的运行进程相互独立的通讯连接;

加载模块30,用于基于所述通讯连接下发实时交互指令以控制所述业务应用在运行过程中动态加载所述java代理。

进一步地,本发明java代理的处理装置,还包括:

进程排除模块,用于在所述业务应用的全部业务进程中排除预设无用进程,其中,所述预设无用进程为与开发测试工具无关的进程。

进一步地,进程排除模块,包括:

扫描单元,用于扫描所述业务应用的全部业务进程以获取全部所述业务进程各自的名称关键字;

第一排除单元,用于将各所述名称关键字与预设固定关键字进行比对以确定全部所述业务进程中的预设无用进程,并排除所述预设无用进程,其中,所述预设固定关键字用于标识与开发测试工具无关的进程。

进一步地,进程排除模块,还包括:

采集单元,用于采集全部所述业务进程各自的进程运行参数;

第二排除单元,用于将各所述进程运行参数与预设固定关键字进行比对以确定所述预设无用进程,并排除所述预设无用进程,其中,所述预设固定关键字用于标识与开发测试工具无关的进程。

进一步地,加载模块30,包括:

进程获取单元,用于基于所述通讯连接动态获取所述业务应用的全部业务进程;

确定单元,用于确定全部所述业务进程当中的待操作业务进程;

控制使用单元,用于向所述业务应用下发实时交互指令以供所述业务应用在运行过程中加载所述实时交互指令指定的目标java代理,以通过所述目标java代理针对所述待操作业务进程进行对应操作。

进一步地,本发明java代理的处理装置,还包括:

可视化模块,用于将全部所述业务进程通过预设的图形用户界面进行可视化输出。

进一步地,所述确定单元,包括:

界面交互子单元,用于根据所述图形用户界面接收进程选择操作;

确定子单元,用于将所述进程选择操作在全部所述业务进程中选中的业务进程确定为待操作业务进程。

其中,上述java代理的处理装置中各个模块的功能实现与上述java代理的处理方法实施例中各步骤相对应,其功能和实现过程在此处不再一一赘述。

本发明还提供一种计算机存储介质,该计算机存储介质上存储有java代理的处理程序,所述java代理的处理程序被处理器执行时实现如以上任一项实施例所述的java代理的处理方法的步骤。

本发明计算机存储介质的具体实施例与上述java代理的处理方法各实施例基本相同,在此不作赘述。

本发明还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现如以上任一项实施例所述的java代理的处理方法的步骤。

本发明计算机存储介质的具体实施例与上述java代理的处理方法各实施例基本相同,在此不作赘述。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

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