CN114020487A - 中间件的处理方法、装置、设备及计算机可读存储介质 - Google Patents
中间件的处理方法、装置、设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN114020487A CN114020487A CN202111221968.3A CN202111221968A CN114020487A CN 114020487 A CN114020487 A CN 114020487A CN 202111221968 A CN202111221968 A CN 202111221968A CN 114020487 A CN114020487 A CN 114020487A
- Authority
- CN
- China
- Prior art keywords
- middleware
- target
- component
- class
- management
- 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.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 25
- 238000000034 method Methods 0.000 claims abstract description 197
- 230000008569 process Effects 0.000 claims abstract description 129
- 238000012545 processing Methods 0.000 claims abstract description 34
- 238000012544 monitoring process Methods 0.000 claims abstract description 24
- 238000004891 communication Methods 0.000 claims description 15
- 230000007246 mechanism Effects 0.000 claims description 12
- 230000015654 memory Effects 0.000 claims description 11
- 230000004913 activation Effects 0.000 claims description 2
- 230000008878 coupling Effects 0.000 abstract description 13
- 238000010168 coupling process Methods 0.000 abstract description 13
- 238000005859 coupling reaction Methods 0.000 abstract description 13
- 230000006870 function Effects 0.000 description 21
- 238000010586 diagram Methods 0.000 description 7
- 238000011084 recovery Methods 0.000 description 6
- 230000003213 activating effect Effects 0.000 description 5
- 238000011161 development Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 230000003993 interaction Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 238000002955 isolation Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 239000011800 void material Substances 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011017 operating method Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/547—Messaging middleware
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明实施例公开了一种中间件的处理方法、装置、设备及计算机可读存储介质。该方法包括:获取目标进程,将目标中间件操作组件加入与目标进程对应的目标类加载器;在目标进程中建立目标线程,使用目标线程监听目标中间件外部端口的操作命令,目标进程中包括中间件组件,目标中间件操作组件和中间件组件相互隔离;当监听到操作命令时,根据操作命令,控制目标类加载器中的至少一个目标中间件执行管理操作。本发明实现了中间件组件和目标中间件操作组件之间相互独立,彼此升级灵活方便,降低了中间件与中间件进行统一操作管理的SDK之间的耦合度,同时又能在监听到中间件外部端口的操作命令时,根据操作命令实现对中间件的统一管理操作。
Description
技术领域
本发明涉及软件解耦技术领域,具体涉及一种中间件的处理方法、装置、设备及计算机可读存储介质。
背景技术
中间件是分布式系统的重要组件,可以将若干个独立的软件系统连接起来,达到资源共享、功能共享的目的。在实际应用中,一个软件系统可能使用若干个中间件,所有中间件的软件开发工具包(Software Development Kit,SDK)之间相互独立,每个中间件需要建立自身的网络连接并存储自身的状态信息,当网络连接发生变化时,需要进行中间件状态信息重置。
在对当前进程中所有的中间件进行统一操作管理时,相关技术通常会引入一个用于中间件进行统一操作管理的SDK,所有的中间件都实现这个SDK,同时会在目标进程中开启一个工作的线程,监听外部命令,以控制中间件具体执行何种操作。但是,当中间件进行统一操作管理的SDK出现升级或者程序漏洞时,所有需要实现它的中间件也都需要进行版本升级或者同样出现程序漏洞,增加了中间件与中间件进行统一操作管理的SDK之间的耦合度,不利于升级和维护,且存在较高的程序异常风险。
发明内容
本发明实施例提供一种中间件的管理操作方法,能够降低中间件与中间件进行统一操作管理的SDK之间的耦合度的同时,实现中间件的统一操作管理。
本发明实施例的技术方案是这样实现的:
本发明实施例提供一种中间件的处理方法,包括:
获取目标进程,通过代理组件将目标中间件操作组件加入与所述目标进程对应的目标类加载器中,所述目标类加载器中包含至少一个目标中间件;所述目标中间件操作组件包括中间件管理操作信息;
在所述目标进程中建立目标线程,使用所述目标线程监听目标中间件外部端口的操作命令,所述目标进程中包括中间件组件,所述目标中间件操作组件和所述中间件组件相互隔离;
当监听到所述操作命令时,根据所述操作命令,控制所述目标类加载器中的所述至少一个目标中间件执行管理操作,所述管理操作与所述中间件管理操作信息对应。
本发明实施例提供一种中间件的处理装置,包括:
操作组件加载单元,用于获取目标进程,通过代理组件将目标中间件操作组件加入与所述目标进程对应的目标类加载器中,所述目标类加载器中包含至少一个目标中间件;所述目标中间件操作组件包括中间件管理操作信息;
操作命令监听单元,用于在所述目标进程中建立目标线程,使用所述目标线程监听目标中间件外部端口的操作命令,所述目标进程中包括中间件组件,所述目标中间件操作组件和所述中间件组件相互隔离;
管理操作单元,用于当监听到所述操作命令时,根据所述操作命令,控制所述目标类加载器中的所述至少一个目标中间件执行管理操作,所述管理操作与所述中间件管理操作信息对应。
本发明实施例提供一种中间件的处理设备,包括:
存储器,用于存储可执行中间件的处理指令;
处理器,用于执行所述存储器中存储的可执行中间件处理指令时,实现本发明实施例提供的中间件的处理方法。
本发明实施例提供一种计算机可读存储介质,存储有可执行算法中间件的处理指令,用于引起处理器执行时,实现本发明实施例提供的中间件的处理方法。
本发明实施例提供的中间件的处理方法、装置、设备及计算机可读存储介质,采用本技术方案,代理组件获取目标进程,将目标中间件操作组件加入与目标进程对应的目标类加载器,其中,目标中间件操作组件包括中间件管理操作信息;在目标进程中建立目标线程,使用目标线程监听目标中间件外部端口的操作命令,目标进程中包括中间件组件,目标中间件操作组件和中间件组件相互隔离;当监听到操作命令时,根据操作命令,控制目标类加载器中的至少一个目标中间件执行管理操作。如此,通过将包括中间件管理操作信息的目标中间件操作组件加入目标类加载器,保证了中间件组件和包括中间件管理操作信息的目标中间件操作组件之间相互独立,彼此升级灵活方便,降低了中间件与中间件进行统一操作管理的SDK之间的耦合度,同时又能在监听到中间件外部端口的操作命令时,根据操作命令实现对中间件的统一管理操作。
附图说明
图1为本发明实施例提供的一种中间件的处理方法流程示意图;
图2为本发明实施例提供的一种目标中间件操作组件加入目标类加载器的方法流程示意图;
图3为本发明实施例提供的一种目标中间件执行管理操作的方法流程示意图;
图4为本发明实施例提供的一种获取类加载器实例的方法流程示意图;
图5为本发明实施例提供的另一种目标中间件执行管理操作的方法流程示意图;
图6为本发明实施例提供的又一种目标中间件执行管理操作的方法流程示意图;
图7为本发明实施例提供的另一种中间件的处理方法流程示意图;
图8为本发明实施例提供的一种中间件执行统一管理操作的方法流程图示意图;
图9为本发明实施例提供的一种中间件执行统一管理操作的流程图;
图10为本发明实施例提供的一种Java Agent执行的方法流程示意图;
图11为本发明实施例提供的一种Java Agent执行过程流程图;
图12为本发明实施例提供的一种中间件的处理方法的系统整体原理图;
图13为本发明实施例提供的一种中间件的处理装置的结构示意图;
图14为本发明实施例提供的一种中间件的处理设备的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,所描述的实施例不应视为对本发明的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
在以下的描述中,涉及到“一些实施例/另一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例/另一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
在以下的描述中,所涉及的术语“一种\另一种\又一种”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“一种\另一种\又一种”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本公开实施例能够以除了在这里图示或描述的以外的顺序实施。
对本发明实施例进行进一步详细说明之前,对本发明实施例中涉及的名词和术语进行说明,本发明实施例中涉及的名词和术语适用于如下的解释。
1)中间件,是介于应用系统和系统软件之间的一类软件,它使用系统软件所提供的基础服务(功能),衔接网络上应用系统的各个部分或不同的应用,能够达到资源共享、功能共享的目的。
2)中间件SDK,是中间件提供的软件应用开发工具包,使用此Jar包可以方面的与中间件进行数据操作等交互。
3)中间件Operator SDK,是独立于中间件的SDK,抽象出用于中间件状态重置和网络连接恢复等操作逻辑的独立软件开发包。
4)Java Agent:在JDK1.5以后,可以使用Agent技术构建一个独立于应用程序的代理程序(即为Agent),用来协助监测、运行甚至替换其他Java虚拟机(Java VirtualMachine,JVM)上的程序,使用它可以实现虚拟机级别的面向切片编程(Aspect OrientedProgramming,AOP)功能。
5)ClassLoader:Java中,ClassLoader可以根据一个指定的类的全限定名,找到对应的Class字节码文件,然后加载它转化成一个java.lang.Class类的一个实例。
6)Java Instrumentation:使用Instrumentation,开发者可以获取JVM中加载的所有的类信息,甚至能够替换和修改某些类的定义。
中间件是介于应用系统和系统软件之间的一类软件,它使用系统软件所提供的基础服务或基础功能,衔接网络上应用系统的各个部分或不同的应用,能够达到资源共享、功能共享的目的;中间件SDK是中间件提供的软件应用开发工具包,使用其可以方面的与中间件进行数据操作等交互。在实际应用中,一个系统软件可能使用多个中间件,各个中间件SDK之间相互独立,如果要实现对中间件的统一操作管理,例如,调用所有中间件统一完成网络连接的恢复和状态重置,相关技术通常会引入新的SDK,新的SDK指示中间件进行统一操作管理的SDK,如此便增加了中间件与中间件进行统一操作管理的SDK之间的耦合度,不利于升级和维护,且存在较高的程序异常风险。
本发明实施例提供了一种中间件的处理方法,能够在降低中间件与中间件进行统一操作管理的SDK之间的耦合度的同时,实现中间件的统一管理操作。
下面,将结合本发明实施例提供的中间件的处理方法。如图1所示,为本发明实施例提供的一种中间件的处理方法流程示意图,该方法包括以下步骤:
S101、获取目标进程,通过代理组件将目标中间件操作组件加入与目标进程对应的目标类加载器中。
需要说明的是,组件可以是具有特定功能的SDK,可以是方法类或方法类的集合,也可以是封装好的可用接口或者可用接口的集合,本发明在此不做限制。目标中间件操作组件可以是包括对中间件进行统一操作管理的逻辑,以及中间件具体实现网络连接和状态重置的逻辑;目标进程可以是用户启动应用程序后开启的对应进程;代理组件可以是Java代理,指示Java Agent技术;目标类加载器可以是Java中使用的一种加载器,用来加载Java类到Java虚拟机中。
在一些实施例中,使用代理组件找到目标进程,将目标中间件操作组件加入目标进程中,具体可以是加入目标进程中的目标类加载器中。目标中间件操作组件中包括的中间件进行统一操作管理的逻辑和中间件具体实现网络连接和状态重置的逻辑,可以是在目标进程开启前,也可以是目标进程开启后创建或建立的。
可以理解的是,目标类加载器可以是与当前目标进程对应的,在创建好目标中间件操作组件后新建的类加载器,将目标中间件操作组件中的中间件进行统一操作管理的逻辑和中间件具体实现网络连接和状态重置的逻辑,注入到目标类加载器中,实现了目标中间件操作组件和目标进程中其他方法类的隔离,其他方法类可以是中间件组件中实现其他功能对应的方法类,由此可以避免类冲突导致的问题。
在一些实施例中,目标类加载器中包含至少一个目标中间件,目标中间件操作组件包括中间件管理操作信息。目标中间件可以是用户启动应用程序后,应用程序运行过程中使用的中间件,也可以是用户开发应用程序时,需要使用的中间件。通过目标中间件接收系统软件提供的服务或功能供应用程序使用,并为应用程序提供开发或运行的环境,提高应用程序开发或运行的效率。在目标进程对应的目标类记载器中,用户使用的中间件可以是一个或多个,一个或多个中间件相互独立为应用程序的开发或运行提供不同的功能。
需要说明的是,目标中间件操作组件可以包括中间件管理操作信息,中间件管理操作信息表示对中间件进行管理的具体方法,根据对中间件进行管理的具体方法,实现对中间件的管理操作,例如,对中间件管理操作信息涉及中间件初始化的具体方法,则实现对中间件的管理操作可以是对中间件进行初始化。当然,中间件管理操作信息还可以是涉及其他对中间件处理的方法,此处不做具体限定。
S102、在目标进程中建立目标线程,使用目标线程监听目标中间件外部端口的操作命令。
需要说明的是,线程是进程的基本执行单元,一个进程的所有任务都在线程中执行,目标进程中对应有至少一个线程,目标线程为目标进程中的任意一个,目标线程用于监听其他设备或功能模块向中间件外端端口发送的命令。
在一些实施例中,对中间件进行统一操作管理,以及中间件具体实现网络连接和状态重置的逻辑均是在收到外部命令后执行的,外部命令具体可以是与中间件连接的服务器发送的,当中间件接收到服务器发送的命令后,便可以根据该命令,实现对中间件的统一操作管理,以及对中间件的网络连接和状态重置。
在一些实施例中,目标进程中包括中间件组件,目标中间件操作组件和中间件组件相互隔离。中间件组件可以是中间件SDK,用于与中间件进行数据交互,在应用程序运行时,目标进程开启,应用程序在目标进程中运行,在目标进程中,应用程序使用的中间件与中间件SDK进行数据交互,通过中间件SDK与系统软件进行信息交互并获取系统软件提供的服务或功能,将获取的服务或功能传输给中间件,因此,应用程序可以通过中间件使用从系统软件获取的服务或功能。
可以理解的是,中间件组件可以包括除对中间件进行统一操作管理,以及中间件具体实现网络连接和状态重置的逻辑以外的其他所有逻辑或功能,由于已经将目标中间件操作组件加入了目标进程对应的类加载器中,因此,中间件组件和目标中间件操作组件时目标进程中相互独立的两部分,实现了目标中间件操作组件和中间件之间的解耦。
S103、当监听到操作命令时,根据操作命令,控制目标类加载器中的至少一个目标中间件执行管理操作。
在一些实施例中,当开启的目标线程监听到外部设备或功能模块向中间件外部端口发送的命令后,该命令传送至目标类加载器,控制目标类加载器中的一个或多个目标中间件执行对应的管理操作。在实际应用中,用户启动的应用程序可能使用了一个或多个中间件,这些中间件构成了目标中间件,在收到外部发送的命令后,需要对应用程序使用的这些所有中间件进行管理操作。
需要说明的是,管理操作与中间件管理操作信息对应,管理操作可以是目标中间件的初始化管理,也可以是目标中间件的状态管理,例如中间件状态重置或状态恢复,此处只是示例性地说明,不做具体限制。对应地,中间件管理操作信息可以是实现目标中间件初始化的具体方法,也可以是实现目标中间件状态管理的具体方法等。
在一些实施例中,目标中间件操作组件指示目标中间件实现网络连接和状态重置的程序逻辑。目标中间件操作组件可以是具有特定功能的SDK,具体地,特定功能可以是实现目标中间件的网络连接和状态重置,实现目标中间件的网络连接和状态重置的特定功能通过程序代码实现,实现目标中间件的网络连接和状态重置功能的程序代码打包后形成目标中间件操作组件对应的SDK。
可以理解的是,在本发明实施例中,代理组件获取目标进程,将目标中间件操作组件加入与目标进程对应的目标类加载器,在目标进程中建立目标线程,使用目标线程监听目标中间件外部端口的操作命令,当监听到操作命令时,根据操作命令,控制目标类加载器中的至少一个目标中间件执行管理操作。如此,通过将包括中间件管理操作信息的目标中间件操作组件加入目标类加载器,保证了中间件组件和包括中间件管理操作信息的目标中间件操作组件之间相互独立,彼此升级灵活方便,降低了中间件与中间件进行统一操作管理的SDK之间的耦合度,同时又能在监听到中间件外部端口的操作命令时,根据操作命令实现对中间件的统一管理操作。
参见图2,图2是本发明实施例提供的一种目标中间件操作组件加入目标类加载器的方法流程示意图。在本发明实施例中,获取目标进程,通过代理组件将目标中间件操作组件加入与目标进程对应的目标类加载器中,即步骤101可以包括:
S1011、在外部容器发生物理信息变化时,启动代理组件进程,指定目标进程,建立与目标进程对应的目标类加载器。
需要说明的是,容器发生物理信息变化是一种外部事件,容器可以是硬件设备,例如服务器等。物理信息发生变化,可以是容器的互联网协议(Internet Protocol,IP)地址发生变化,具体地可以是服务器的IP地址发生发生变化。
在一些实施例中,代理组件对应的Java Agent技术提供了一种Attach的方法,可以Attach到一个运行中的代理组件进程中,实现动态的执行一段指定的代码逻辑,其中,代理组件进程可以是Java进程。当外部容器发生物理信息变化时,Java Agent技术使用Attach方法,指定到目标进程的进程识别号(Process Identification,PID),从而链接到目标进程,在链接到的当前目标进程中,建立目标类加载器。
S1012、将目标中间件实现网络连接和状态重置的程序逻辑加入目标类加载器。
可以理解的是,在目标进程中建立了目标类加载器之后,将实现目标中间件网络连接和状态重置的程序代码加入目标类加载器,从而保证实现目标中间件网络连接和状态重置的程序代码与目标进程中的Java类隔离,避免类冲突导致的问题。
在一些实施例中,一种实现通过代理组件将实现网络连接和状态重置的程序逻辑加入目标类加载器的方式可以为,例如,使用代理组件的规范实现方法public staticvoid premain(String agentArgs,Instrumentation inst),在此方法中,需要建立一个新的类加载器,将我们需要注入的程序逻辑重新加载到新的类加载器中。此外,建立一个新的工作线程,监听外部服务端口,这里可以指定10001端口,也可以是任何其他可用的服务端口,外部可以利用套接字(Socket)通信,向10001端口发送命令,来控制目标中间件完成指定操作;在代理组件指定的Jar包META-INF/MANIFEST.MF文件下,指定Main-Class,写入Agent-Class:className;打包生成可执行的Jar文件。Jar文件可以作为代理组件的执行程序,可以直接启动,通过命令交互的方式,将实现网络连接和状态重置的程序逻辑注入到目标进程对应的目标类加载器中。
需要说明的是,可以将实现目标中间件网络连接和状态重置的程序代码抽取到独立的Java归档(Java ARchive,JAR)包中,形成目标中间件操作组件。在一些实施例中,目标中间件操作组件遵循统一的规范约定,例如,规范约定可以是:
1)提供统一的Operator实现类。约定Operator实现类提供public boolean init();public boolean activate();public boolean pause();public boolean restore();这4个函数的实现,并且函数的描述符必须与指定的相一致。
2)提供配置文件。在目标中间件操作组件的jar包中提供一个配置文件:META-INF/middleware/${name}.operator,用于描述当前中间件的系统名称,中间件的核心类,遵守Operator规范的实现类,支持的最低版本。表1为本发明实施例提供的一种目标中间件操作组件的规范配置表,具体配置文件参数如下
表1所示:
表1
需要说明的是,在目标中间件操作组件中,只有遵循统一规范约定的中间件,才可以根据统一规范约定,利用Java反射原理,调用中间件的具体实现,具体实现可以包括对中间件的统一操作方法。
在目标中间件操作组件形成之后,使用代理组件,将遵循统一规范约定的目标中间件操作组件,注入到当前目标进程对应的目标类加载器中。
参见图3,图3是本发明实施例提供的一种目标中间件执行管理操作的方法流程示意图。在本发明实施例中,根据所述操作命令,控制目标类加载器中的至少一个目标中间件执行管理操作,即步骤S103可以包括:
S1031、根据操作命令,获取加载的类加载器实例。
在一些实施例中,当监听到外部发送的操作命令时,可以使用代理组件获取所有被实例化后的类加载器实例,类加载器实例可以是应用程序运行时或运行过程中,根据用户的需求对类加载器实例化后得到的,所有的类加载器实例可以由Java虚拟机加载。
S1032、获取目标类加载器中的至少一个目标中间件各自对应的中间件配置信息。
需要说明的是,目标类加载器中包括所有目标中间件各自分别对应的配置信息,配置信息可以以配置文件的形式存在于目标类加载器中,各个目标中间件对应的配置信息与目标中间件或目标中间件组件信息关联。目标类加载器的个数与至少一个目标中间件对应。
S1033、遍历至少一个目标中间件各自对应的中间件配置信息。
基于获取的所有目标中间件各自对应的配置信息,依次遍历所有目标中间件中每一个中间件的配置信息,例如目标中间件包括中间件A、中间件B和中间件C,则先遍历中间件A的配置信息,再遍历中间件B的配置信息,最后遍历中间件C的配置信息。
在一些实施例中,若当前目标中间件的中间件配置信息包括中间件组件标准类,则利用反射机制,实例化目标类加载器中与当前目标中间件对应的目标中间件操作组件,从类加载器实例中调用与操作命令对应的目标操作类方法,执行管理操作。
需要说明的是,反射机制具体可以是Java反射机制,实例化目标类加载器中与当前目标中间件对应的目标中间件操作组件可以包括,实例化目标中间件操作组件中的操作类,操作类具体可以是Operator类,Operator类中包括具体的对中间件进行统一操作的各种方法,例如,初始化中间、激活中间件、暂停中间件、重置中间件等。
通过调用类加载器实例中与监听到的操作命令对应的操作类方法,可以实现对目标中间件的管理操作。监听到的操作命令和操作类中的方法相一致,例如,当监听到的命令是对初始化命令,则调用操作类中的初始化中间件对应的方法实现,当监听到的命令是暂停命令,则调用操作类中的暂停中间件对应的方法实现,当然,此处只是示例性说明,本发明实施例在此不作限定。
可以理解的是,本发明实施例中,能够保证在低耦合的条件下,根据监听到的操作命令,调用与操作命令对应的目标操作类方法,实现对中间件的统一操作管理,触发中间件完成状态的重置操作和网络连接恢复等。
参见图4,图4是本发明实施例提供的一种获取类加载器实例的方法流程示意图。在本发明实施例中,根据操作命令,获取加载的类加载器实例,即步骤1031可以包括:
S1031a、根据操作命令,通过代理组件获取目标进程对应的所有的工具类对象。
需要说明的是,代理组件具体可以是Java Agent,工具类对象具体可以是Instrumentation对象,对应地,通过代理组件获取目标进程对应的所有的工具类对象,可以包括利用Java Agent获取目标进程中所有的Instrumentation对象。
S1031b、基于工具类对象,获取工具类对象对应的已加载的所述类加载器实例。
工具类对象中包括getAllLoadedClasses方法,根据工具类对象中的getAllLoadedClasses方法,能够获取Java虚拟机加载的所有Java类,从而得到JVM加载的所有的类加载器实例。
在一些实施例中,中间件组件标准类包括:中间件组件的核心类、中间件管理操作的规范类和中间件组件的最低支持版本。
需要说明的是,中间件组件的核心类具体可以是operator.core.classname类,当中间件包含中间件组件核心类,则说明可以对此中间件进行统一管理操作;中间件管理操作的规范类可以表示符合操作类v1版本规范的实现类,v1版本表示操作类的初始版本,中间件组件核心类具体可以是operator.v1.classname类,只有包含operator.v1.classname类的中间件,才可以通过Java反射机制来调用操作类中的实现方法;中间件组件的最低支持版本具体可以是operator.support.min.version,当中间件对应的中间件组件的版本旧于此版本,则无法实现对当前中间件的统一管理操作,只有当前中间件对应的中间件组件的版本比此版本新,才可以实现对当前中间件的统一管理操作。
可以理解的是,中间件组件的标准类中还包括中间件的名称,例如中间件的名称为:中间件A、中间件B和中间件C,中间件的名称用于识别具体的中间件名称,以实现按顺序对具体中间件的中间件配置信息的遍历,提高了对目标中间件对应的中间件配置信息的访问效率。
参见图5,图5是本发明实施例提供的另一种目标中间件执行管理操作的方法流程示意图。在本发明实施例中,遍历至少一个目标中间件各自对应的中间件配置信息,即步骤1033之后,还包括:
S1034、若当前目标中间件的中间件配置信息不包括中间件组件的核心类,则继续下一个目标中间件对应的中间件配置信息的判断。
在一些实施例中,在遍历当前目标中间件的配置信息时,首先遍历中间件组件的核心类,若当前目标中间件的配置信息中不包括中间件组件的核心类,则说明用户没有使用当前的中间件,则继续对下一个中间件的配置信息的判断。
在另一些实施例中,在判断目标中间件中是否包括中间件组件的核心类之前或之后,应当判断配置信息中是否包含中间件组件的最低支持版本,并判断当前中间件对应的中间件组件的版本是否比最低支持版本新。只有当当前目标中间件包括中间件组件的核心类,且当前中间件对应的中间件组件的版本比配置信息中的中间件组件最低支持版本新时,才可以继续对当前目标中间件中的其他配置信息进行判断。若当前目标中间件不包括中间件组件的核心类或者当前目标中间件对应的中间件组件的版本低于最低支持版本,则结束当前目标中间件中配置信息的判断,继续对下一个目标中间件中的配置信息进行判断。
参见图6,图6是本发明实施例提供的又一种目标中间件执行管理操作的方法流程示意图。在本发明实施例中,遍历至少一个目标中间件各自对应的中间件配置信息,即步骤1033之后,还包括:
S1035、若当前目标中间件的中间件配置信息包括中间件组件的最低支持版本和中间件组件的核心类,但不包括中间件管理操作的规范类,则结束目标类加载器中的中间件配置信息获取。
需要说明的是,在对当前目标中间件的配置信息进行判断时,若当前目标中间件的配置信息包括中间件组件的核心类,则说明用户使用了此中间件,可以对当前的目标中间件进行统一管理操作,在此同时,如果当前目标中间件对应的中间件组件的版本比配置信息中的最低支持版本新,则说明当前目标中间件对应的中间件组件的版本符合规定,不需要对其进行版本升级。之后,需要判断当前目标中间件的配置信息中是否包含中间件管理操作的规范类,若包含,则说明可以使用Java反射机制调用操作类中的方法实现,当对所有的目标中间件配置信息判断完成后,执行对中间件的统一管理操作;若当前目标中间件的配置信息中不包含中间件管理操作的规范类,则说明无法实现最终对中间件的统一管理操作,此时,结束对目标类加载器中的中间件配置信息获取。
在一些实施例中,使用目标线程监听目标中间件外部端口的操作命令,包括:当目标中间件与服务器进行通信连接时,使用目标线程,监听并接收服务器向目标中间件外部端口发送的操作指令。
需要说明的是,与目标中间件进行通信连接的服务器可以是中间件服务器,或者是其他可以或者需要与中间件进行通信的服务器,通信连接的方式可以是Socket连接,目标中间件外部端口可以是与服务器进行通信连接的端口。在实际应用中,目标线程中开启一个用于通信连接的外部端口,等待与服务器的通信连接,当服务器向目标中间件发送操作命令时,由中间件的外部端口接收服务器发送的该操作命令。
参见图7,图7是本发明实施例提供的另一种中间件的处理方法流程示意图。本发明实施例中,在控制所述目标类加载器中的至少一个目标中间件执行管理操作,即步骤103之后,还包括:
S104、结束目标线程对目标中间件外部端口的监听,并释放目标线程。
在执行对至少一个目标中间件的管理操作后,之前在目标进程中建立的目标线程没有必要继续占用了,之前开启的端口号也没有必要继续留在目标进程中了,此时,可以通过向目标进程发送Stop命令来结束端口号的监听,并释放目标线程,以使目标线程执行目标进程中的其他任务。
在一些实施例中,释放目标线程后,实现中间件网络连接和状态重置的程序逻辑将存储至JVM的元数据区,当下次需要对中间件进行统一管理操作时,可以同样通过代理组件的方式,将实现中间件网络连接和状态重置的程序逻辑注入目标进程,实现目标线程和端口号的监听。
在一些实施例中,管理操作包括以下至少一种:初始化操作、激活操作、暂停操作和复位操作。管理操作实现对所有目标中间件进行统一管理操作,初始化操作。可以是对中间件的状态进行初始化,激活操作可以是对中间件的状态进行激活,暂停操作可以是将中间件状态进行暂停,复位操作可以是将中间件的状态进行激活,当然管理操作包括但不限于初始化操作、激活操作、暂停操作和复位操作,此处只是示例性说明,本发明实施例对此不作具体限定。
下面,对本发明实施例在实际应用场景的实现过程进行介绍。
图8是本发明实施例提供的一种中间件执行统一管理操作的方法流程示意图,参见图8,中间件执行统一外部命令的过程包括:
S201、开启工作线程,接收外部命令。
如图9所示,为本发明实施例提供的一种中间件执行统一管理操作的流程图,在工作线程(目标进程)中,创建一个工作线程(目标线程),使用工作线程监听外部服务端口(目标中间件外部端口),指定1001端口,等待Socket连接,外部可以利用Socket通信,向10001端口发送命令(操作命令),来控制中间件完成指定操作(控制目标类加载器中的至少一个目标中间件执行管理操作)。
通过在目标进程开启接受外部命令的端口,以实现在收到指令后,寻找中间件SDK的所有实现类,通过反射的方式调用具体的实现类,完成对中间件的统一管理操作。
S202、当接收到外部命令时,获取所有的ClassLoader实例。
应用程序运行时,应用内部可能有多个ClassLoader(类加载器实例),例如应用服务器tomcat下面,可能启动多个应用,会产生多个ClassLoader,每个ClassLoader都可能会维护自己的一套中间件SDK实现,每个使用中间件SDK(中间件组件)的ClassLoader都需要加载中间件的Operator SDK(目标中间件操作组件)。
因此,在图9中,当收到某个外部命令(操作命令)时,对外部命令进行处理,得到命令处理结果,利用Java Agent(代理组件)获取Instrumentation对象(工具类对象),根据此对象的getAllLoadedClasses方法,能够拿到JVM加载的所有Java类,从而得到Jvm加载的所有的ClassLoader实例(类加载器实例)。
S203、获取并遍历ClassLoader中的所有中间件的配置信息。
如图9所示,访问每个ClassLoader(目标类加载器),利用当前的ClassLoader加载中间件提供的Operator SDK Jar包,读取所有中间件Operator SDK的约定配置文件,按顺序遍历,访问其中一个中间件的配置信息(遍历至少一个目标中间件各自对应的中间件配置信息),拿到中间件SDK配置中的operator.core.classname(中间件组件的核心类)和operator.v1.classname(中间件管理操作的规范类)两个类名称。
如果当前的ClassLoader包含operator.core.classname这个类,则说明使用了当前的中间件SDK,继续执行下一个步骤,否则进行跳转,继续访问下一个中间件SDK的配置文件,做相应的操作(若当前目标中间件的中间件配置信息不包括中间件组件的核心类,则继续下一个目标中间件对应的中间件配置信息的判断)。
如果当前的ClassLoader包含operator.v1.classname这个类,说明当前的中间件SDK满足我们约定的规范,同时,若当前的ClassLoader包含operator.support.min.version(中间件组件的最低支持版本),则说明当前的中间件SDK的版本符合要求,则可以执行下一步操作,否则,说明用户应用了当前中间件SDK并不规范,当前中间件SDK版本不符合规定,无法最终实现统一的操作,直接返回失败,中间件配置信息访问结束(若当前目标中间件的中间件配置信息包括中间件组件的最低支持版本和中间件组件的核心类,但不包括所述中间件管理操作的规范类,则结束所述目标类加载器中的中间件配置信息获取)。
S204、根据外部命令对中间件进行统一管理操作。
通过Java Instrumentation对象(工具类对象),拿到目标进程的所有ClassLoader实例(类加载实例),遍历每个ClassLoader,在每个ClassLoader下,对每个中间件SDK都判断是否引用了核心类(中间件组件的核心类)和Operator实现类(中间件管理操作的规范类),若同时满足,再通过反射的方式(反射机制),调用中间件Operator SDK完成指定的操作(调用与操作命令对应的目标操作类方法,执行管理操作)。
具体地,根据当前ClassLoader(目标类加载器)和operator.v1.classname(中间件管理操作的规范类)这个类名称,利用Java反射的机制,实例化中间件SDK的Operator类(目标操作类),根据外部命令调用具体的实现方法(与操作命令对应的目标操作类方法),实现对中间件的统一管理操作(利用反射机制,实例化目标类加载器中与当前目标中间件对应的目标中间件操作组件,从类加载器实例中调用与操作命令对应的目标操作类方法,执行管理操作)。
S205、结束并退出对中间件的统一管理操作。
中间件Operator SDK(目标中间件操作组件)执行完统一管理操作后,我们之前注入的工作线程(目标线程)和端口号已经没有必要继续在留在用户进程(目标进程)当中了,可以通过发送Stop命令来结束端口号(目标中间件外部端口)监听和销毁工作线程(结束目标线程对目标中间件外部端口的监听,并释放目标线程)。如果下次需要再执行操作时,仍可通过Java Agent的方式,注入程序代码来实现工作线程和端口号监听。
可以理解的是,本发明实施例能够实现在低耦合的状态下,即各中间件SDK不需要额外增加代码,彼此之间相互独立,升级灵活方便,同时又能统一管理中间件SDK,触发控制所有的中间件执行相应的操作。
参见图10,图10是本发明实施例提供的一种Java Agent执行的方法流程示意图,Java Agent的执行过程包括:
S301、当容器物理信息变化时,启动Java Agent进程(启动代理组件进程),并指定目标进程。
Java Agent(代理组件)技术提供了一种Attach的方式,可以在Java进程运行期间,动态的去执行一段指定的代码。首先提供一个Java Agent的程序,如图11所示,为本发明实施例提供的一种Java Agent执行过程流程图,当容器物理信息发生变化(外部容器发生物理信息变化)时,启动Java Agent进程(代理组件进程),Attach到指定的目标进程PID(指定目标进程),在目标进程中执行premain方法,以使目标进程执行指定代码逻辑。
S302、建立新的ClassLoader,将中间件统一操作管理的逻辑和实现网络连接和状态重置的逻辑加入ClassLoader。
中间件Operator SDK(目标中间件操作组件)遵循统一的规范约定,中间件Operator SDK需要遵守三个规范:第一、按照规范提供Operator的一个实现类,实现类中包含约定的函数(目标操作类方法),且函数描述符不能发生变化;第二、按照规范提供配置文件,说明当前中间件SDK的系统名称,核心类(中间件组件的核心类),Operator的实现类(中间件管理操作的规范类),以及支持的最小版本号(中间件组件的最低支持版本);第三、提供最终的Jar包实现。
将实现状态重置和网络恢复连接的代码逻辑抽取到独立的Jar包中,此Jar包命名为中间件Operator SDK,这个Jar包需要满足前述中提到的中间件Operator SDK遵守三个规范。之后,可以利用Java Agent将中间件的Operator SDK实现注入到目标进程的对应的ClassLoader中,等待使用。
需要说明的是,采用Java Agent的方式,动态的在目标进程(目标进程)中注入程序代码(目标中间件实现网络连接和状态重置的程序逻辑),可以包括:按照Java Agent的规范实现方法public static void premain(String agentArgs,Instrumentationinst),在此方法中,需要建立一个新的ClassLoader(建立与目标进程对应的目标类加载器),在Jar包META-INF/MANIFEST.MF文件下,指定Main-Class,写入Agent-Class:className,并打包生成可执行的Jar文件。将我们需要注入的代码(目标中间件实现网络连接和状态重置的程序逻辑)重新加载到新的ClassLoader中(将目标中间件操作组件加入与目标进程对应的目标类加载器中),等待使用。
S303、在目标进程中创建工作线程,监听外部服务端口。
如图11中所示,建立一个新的工作线程(目标线程),监听外部服务端口(使用目标线程监听目标中间件外部端口的操作命令),这里指定10001端口,外部可以利用Socket通信(目标中间件与服务器进行通信连接),向10001端口发送命令,来控制中间件完成指定操作(根据操作命令,控制目标类加载器中的至少一个目标中间件执行管理操作)。
在本发明实施例中,采用Java Agent的方式,动态的在目标进程中注入程序代码,并通过ClassLoader进行目标进程和注入程序的类资源隔离,降低了用于中间件的统一操作管理和完成状态的重置操作和网络连接恢复的注入程序和中间件组件之间的耦合性。
在一些实施例中,如图12所示,为本发明实施例提供的一种中间件的处理方法的系统整体原理图,参见图12,以下对本发明实施例中中间件的处理方法的系统整体原理进行说明。
需要说明的是,应用程序运行时,进程中可能使用了多种中间件SDK(中间件组件),例如中间件SDK a、中间件SDK b和中间件SDK c,所有的中间件SDK与服务器端建立网络连接(目标中间件与服务器进行通信连接),并存储自身的状态数据,与中间件组件建立网络连接的服务器可以是中间件服务器。
当容器物理信息发生变化时,使用Java Agent Attach到目标进程,在目标进程中注入实现中间件统一操作管理的逻辑和实现网络连接和状态重置的逻辑的对应的新代码,用户启动Java进程(代理组件进程),为用户提供正常提供服务,在程序运行后,在目标进程中开启新的工作线程(目标线程),开启端口号,监听外部命令(操作命令),当接收到外部命令后,加载中间件提供的Operator SDK,利用约定的规范和反射原理(反射机制),触发中间件执行相应的管理操作。
可以理解的是,在本发明实施例中,通过将中间件统一操作管理的逻辑和中间件具体实现网络连接和状态重置的逻辑(中间件Operator SDK)都剥离出来,再利用JavaAgent的方式将这两部分的逻辑注入到目标进程中;再根据中间件Operator SDK(目标中间件操作组件)的统一规范,利用反射的方式(反射机制),调用中间件的实现类(操作实现类)完成指定的状态重置或者恢复网络连接等操作,采用这种方案,中间件重置和网络恢复连接的逻辑都不需要放到中间件SDK(中间件组件)中,可以实现与中间件SDK的完全解耦。本发明实施例还提供一种中间件的处理装置的结构示意图,图13为本发明实施例提供的一种中间件的处理装置的结构示意图,如图13所示,中间件的处理装置1包括:
操作组件加载单元11,用于获取目标进程,通过代理组件将目标中间件操作组件加入与所述目标进程对应的目标类加载器中,所述目标类加载器中包含至少一个目标中间件;所述目标中间件操作组件包括中间件管理操作信息;
操作命令监听单元12,用于在所述目标进程中建立目标线程,使用所述目标线程监听目标中间件外部端口的操作命令,所述目标进程中包括中间件组件,所述目标中间件操作组件和所述中间件组件相互隔离;
管理操作单元13,用于当监听到所述操作命令时,根据所述操作命令,控制所述目标类加载器中的所述至少一个目标中间件执行管理操作,所述管理操作与所述中间件管理操作信息对应。
在本发明的一些实施例中,所述操作组件加载单元11,还用于在外部容器发生物理信息变化时,启动代理组件进程,指定所述目标进程,建立与所述目标进程对应的所述目标类加载器;将所述目标中间件实现网络连接和状态重置的程序逻辑加入所述目标类加载器。
在本发明的一些实施例中,所述管理操作单元13,还用于根据所述操作命令,获取加载的类加载器实例;获取所述目标类加载器中的所述至少一个目标中间件各自对应的中间件配置信息;所述目标类加载器的个数与所述至少一个目标中间件对应;遍历所述至少一个目标中间件各自对应的中间件配置信息,若当前目标中间件的中间件配置信息包括所述中间件组件标准类,则利用反射机制,实例化所述目标类加载器中与所述当前目标中间件对应的目标中间件操作组件,从所述类加载器实例中调用与所述操作命令对应的目标操作类方法,执行管理操作。所述中间件组件标准类包括:中间件组件的核心类、中间件管理操作的规范类和中间件组件的最低支持版本。
在本发明的一些实施例中,所述管理操作单元13,还用于根据所述操作命令,通过所述代理组件获取所述目标进程对应的所有的工具类对象;基于所述工具类对象,获取所述工具类对象对应的已加载的所述类加载器实例。
在本发明的一些实施例中,遍历所述至少一个目标中间件各自对应的中间件配置信息之后,所述管理操作单元13,还用于若当前目标中间件的中间件配置信息不包括所述中间件组件的核心类,则继续下一个目标中间件对应的中间件配置信息的判断。
在本发明的一些实施例中,遍历所述至少一个目标中间件各自对应的中间件配置信息之后,所述管理操作单元13,还用于若当前目标中间件的中间件配置信息包括中间件组件的最低支持版本和中间件组件的核心类,但不包括所述中间件管理操作的规范类,则结束所述目标类加载器中的中间件配置信息获取。
在本发明的一些实施例中,所述操作命令监听单元12,还用于当所述目标中间件与服务器进行通信连接时,使用所述目标线程,监听并接收所述服务器向所述目标中间件外部端口发送的所述操作指令。
在本发明的一些实施例中,中间件的处理装置1还包括:命令操作结束单元14。
所述命令操作结束单元14用于在所述控制所述目标类加载器中的所述至少一个目标中间件执行管理操作之后,结束所述目标线程对所述目标中间件外部端口的监听,并释放所述目标线程。
本发明实施例还提供一种中间件的处理设备的结构,图14为本发明实施例提供的一种中间件的处理设备的结构示意图,如图14所示,中间件的处理设备2包括:存储器21和处理器22,其中,存储器21用于存储可执行中间件的处理指令;处理器22,用于执行所述存储器中存储的可执行算法中间件处理指令时,实现本发明实施例提供方法,例如本发明实施例提供的中间件的处理方法。
本发明实施例提供一种计算机可读存储介质,存储有可执行中间件的处理指令,用于引起处理器22执行时,实现本发明实施例提供的方法,例如,本发明实施例提供的中间件的处理方法。
在本发明的一些实施例中,存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、闪存、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、装置或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、装置或者设备所固有的要素。在没有更多限制的情况下,由语句“至少一个……”限定的要素,并不排除在包括该要素的过程、方法、装置或者设备中还存在另外的相同要素。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本发明各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (13)
1.一种中间件的处理方法,其特征在于,包括:
获取目标进程,通过代理组件将目标中间件操作组件加入与所述目标进程对应的目标类加载器中,所述目标类加载器中包含至少一个目标中间件;所述目标中间件操作组件包括中间件管理操作信息;
在所述目标进程中建立目标线程,使用所述目标线程监听目标中间件外部端口的操作命令,所述目标进程中包括中间件组件,所述目标中间件操作组件和所述中间件组件相互隔离;
当监听到所述操作命令时,根据所述操作命令,控制所述目标类加载器中的所述至少一个目标中间件执行管理操作,所述管理操作与所述中间件管理操作信息对应。
2.根据权利要求1所述的中间件的处理法,其特征在于,所述目标中间件操作组件指示所述目标中间件实现网络连接和状态重置的程序逻辑;
所述获取目标进程,通过代理组件将目标中间件操作组件加入与所述目标进程对应的目标类加载器中,包括:
在外部容器发生物理信息变化时,启动代理组件进程,指定所述目标进程,建立与所述目标进程对应的所述目标类加载器;
将所述目标中间件实现网络连接和状态重置的程序逻辑加入所述目标类加载器。
3.根据权利要求1或2所述的中间件的处理方法,其特种在于,
所述根据所述操作命令,控制所述目标类加载器中的所述至少一个目标中间件执行管理操作,包括:
根据所述操作命令,获取加载的类加载器实例;
获取所述目标类加载器中的所述至少一个目标中间件各自对应的中间件配置信息;所述目标类加载器的个数与所述至少一个目标中间件对应;
遍历所述至少一个目标中间件各自对应的中间件配置信息,若当前目标中间件的中间件配置信息包括所述中间件组件标准类,则利用反射机制,实例化所述目标类加载器中与所述当前目标中间件对应的目标中间件操作组件,从所述类加载器实例中调用与所述操作命令对应的目标操作类方法,执行管理操作。
4.根据权利要求3所述的中间件的处理方法,其特征在于,所述根据所述操作命令,获取加载的类加载器实例,包括:
根据所述操作命令,通过所述代理组件获取所述目标进程对应的所有的工具类对象;
基于所述工具类对象,获取所述工具类对象对应的已加载的所述类加载器实例。
5.根据权利要求3所述的中间件的处理方法,其特征在于,所述中间件组件标准类包括:中间件组件的核心类、中间件管理操作的规范类和中间件组件的最低支持版本。
6.根据权利要求5所述的中间件的处理方法,其特征在于,所述遍历所述至少一个目标中间件各自对应的中间件配置信息之后,所述方法还包括:
若当前目标中间件的中间件配置信息不包括所述中间件组件的核心类,则继续下一个目标中间件对应的中间件配置信息的判断。
7.根据权利要求5所述的中间件的处理方法,其特征在于,所述遍历所述至少一个目标中间件各自对应的中间件配置信息之后,所述方法还包括:
若当前目标中间件的中间件配置信息包括中间件组件的最低支持版本和中间件组件的核心类,但不包括所述中间件管理操作的规范类,则结束所述目标类加载器中的中间件配置信息获取。
8.根据权利要求1至7任一项所述的中间件的中间件的处理方法,其特征在于,所述使用所述目标线程监听目标中间件外部端口的操作命令,包括:
当所述目标中间件与服务器进行通信连接时,使用所述目标线程,监听并接收所述服务器向所述目标中间件外部端口发送的所述操作指令。
9.根据权利要求1所述的中间件的处理方法,其特种在于,在所述控制所述目标类加载器中的所述至少一个目标中间件执行管理操作之后,所述方法还包括:
结束所述目标线程对所述目标中间件外部端口的监听,并释放所述目标线程。
10.根据权利要求1所述的中间件的处理方法,其特种在于,所述管理操作包括以下至少一种:初始化操作、激活操作、暂停操作和复位操作。
11.一种中间件的处理装置,其特征在于,包括:
操作组件加载单元,用于获取目标进程,通过代理组件将目标中间件操作组件加入与所述目标进程对应的目标类加载器中,所述目标类加载器中包含至少一个目标中间件;所述目标中间件操作组件包括中间件管理操作信息;
操作命令监听单元,用于在所述目标进程中建立目标线程,使用所述目标线程监听目标中间件外部端口的操作命令,所述目标进程中包括中间件组件,所述目标中间件操作组件和所述中间件组件相互隔离;
管理操作单元,用于当监听到所述操作命令时,根据所述操作命令,控制所述目标类加载器中的所述至少一个目标中间件执行管理操作,所述管理操作与所述中间件管理操作信息对应。
12.一种中间件的处理设备,其特征在于,包括:
存储器,用于存储可执行中间件的处理指令;
处理器,用于执行所述存储器中存储的可执行中间件处理指令时,实现权利要求1至10任一项所述的方法。
13.一种计算机可读存储介质,其特征在于,存储有可执行中间件的处理指令,用于引起处理器执行时,实现权利要求1至10任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111221968.3A CN114020487A (zh) | 2021-10-20 | 2021-10-20 | 中间件的处理方法、装置、设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111221968.3A CN114020487A (zh) | 2021-10-20 | 2021-10-20 | 中间件的处理方法、装置、设备及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114020487A true CN114020487A (zh) | 2022-02-08 |
Family
ID=80056862
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111221968.3A Pending CN114020487A (zh) | 2021-10-20 | 2021-10-20 | 中间件的处理方法、装置、设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114020487A (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070226719A1 (en) * | 2006-02-23 | 2007-09-27 | Samsung Electronics Co., Ltd. | Method of providing partially isolated execution environment for multiple applications and digital information apparatus using the same |
CN109918148A (zh) * | 2019-02-21 | 2019-06-21 | 上海伊巢网络科技有限公司 | 物联网中间件的组件动态可插拔系统 |
CN112068903A (zh) * | 2020-09-21 | 2020-12-11 | 深圳市欢太科技有限公司 | 应用程序的加载方法、应用程序的加载装置、介质与设备 |
-
2021
- 2021-10-20 CN CN202111221968.3A patent/CN114020487A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070226719A1 (en) * | 2006-02-23 | 2007-09-27 | Samsung Electronics Co., Ltd. | Method of providing partially isolated execution environment for multiple applications and digital information apparatus using the same |
CN109918148A (zh) * | 2019-02-21 | 2019-06-21 | 上海伊巢网络科技有限公司 | 物联网中间件的组件动态可插拔系统 |
CN112068903A (zh) * | 2020-09-21 | 2020-12-11 | 深圳市欢太科技有限公司 | 应用程序的加载方法、应用程序的加载装置、介质与设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110413288B (zh) | 应用部署方法、装置、服务器及存储介质 | |
US7774762B2 (en) | System including run-time software to enable a software application to execute on an incompatible computer platform | |
KR101116615B1 (ko) | 자바 가상 머신 상에서 이뤄지는 애플리케이션 및 스레드의자원 관리 시스템 및 방법 | |
KR101031409B1 (ko) | 동적으로 가상 머신을 생성하기 위한 방법, 제조물품 및 시스템 | |
US8555280B2 (en) | Terminal device of non-android platform for executing android applications, and computer readable recording medium for storing program of executing android applications on non-android platform | |
WO2009114758A1 (en) | Method and system for providing a program for execution without requiring installation | |
US8006246B2 (en) | Apparatus for forcibly terminating thread blocked on input/output operation and method for the same | |
US7818733B2 (en) | Improving bundle control in computing environment | |
US20090249311A1 (en) | Sharing a native module of compiled code using an abstraction module of interpreted code in a virtual machine environment | |
EP1831787A1 (en) | A method of maintaining applications in a computing device | |
US20220083364A1 (en) | Reconciler sandboxes for secure kubernetes operators | |
CA2904253C (en) | Computer system using in-service software upgrade | |
EP3799697B1 (en) | Virtual machine container for applications | |
WO2012142798A1 (zh) | 一种应用程序加载的方法及装置 | |
CN114020621A (zh) | 一种调试方法、电子设备及存储介质 | |
CN112214388A (zh) | 内存监控方法、装置、设备及计算机可读存储介质 | |
CN116028163A (zh) | 一种容器组的动态链接库调度方法、装置及存储介质 | |
CN113296795A (zh) | 应用部署方法、装置、设备、存储介质及程序产品 | |
KR100803290B1 (ko) | 무선 센서 네트워크 환경에서 프로그램을 변경하기 위한확장 가능한 가상 머신 및 이를 이용한 리프로그래밍 방법 | |
CN114020487A (zh) | 中间件的处理方法、装置、设备及计算机可读存储介质 | |
CN115964128A (zh) | 一种异构gpu资源管理和调度方法和系统 | |
WO2011069782A1 (en) | A method and a system for plug and play support of computer architectures | |
CN112445595B (zh) | 基于slurm计算平台的多任务提交系统 | |
CN114816662A (zh) | 应用于Kubernetes的容器编排方法和系统 | |
CN117075925B (zh) | libvirt管控面卸载方法、装置、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |