CN108334374A - 组件动态加载与执行的方法和装置 - Google Patents

组件动态加载与执行的方法和装置 Download PDF

Info

Publication number
CN108334374A
CN108334374A CN201710032926.2A CN201710032926A CN108334374A CN 108334374 A CN108334374 A CN 108334374A CN 201710032926 A CN201710032926 A CN 201710032926A CN 108334374 A CN108334374 A CN 108334374A
Authority
CN
China
Prior art keywords
model component
component
classloader
run
model
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
Application number
CN201710032926.2A
Other languages
English (en)
Inventor
黄世清
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Jingdong Century Trading Co Ltd, Beijing Jingdong Shangke Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN201710032926.2A priority Critical patent/CN108334374A/zh
Publication of CN108334374A publication Critical patent/CN108334374A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons

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

本发明公开了一种组件动态加载与执行的方法和装置,涉及组件加载与运行领域。其中的方法包括:设置欲执行的模型组件以及所述模型组件中欲运行的类,其中,所述模型组件中欲运行的类继承所述模型组件的接口;创建类加载器;利用创建的所述类加载器对所述模型组件进行加载;利用类反射方式,将所述模型组件中欲运行的类信息和所述模型组件的上下文对象作为参数,调用所述类加载器的服务运行方法加载所述模型组件中的运行接口来运行所述模型组件的运行服务。从而使得组件动态加载与执行实现起来更加简单。

Description

组件动态加载与执行的方法和装置
技术领域
本发明涉及组件加载与运行领域,特别涉及一种组件动态加载与执行的方法和装置。
背景技术
组件通常在应用服务器启动时被加载并运行。如果组件更新,往往需要重新启动应用服务器对该组件进行加载。然而,有时会希望能够在不重启应用服务器的情况下更新并加载组件,即动态加载组件。
OSGI(Open Service Gateway Initiative,开放服务网关协议)是面向JAVA的动态模型***,允许开发人员构建动态化、模块化的JAVA***。OSGI通过模块化和动态化来对组件进行动态加载与执行,其中,模块化是指可以将一个大型***分解为多个较小的互相协作的逻辑单元,通过强制设定模块之间的逻辑边界来改善***的维护性和封装性。动态化是指提供在多种网络设备上无需重启情况下的动态改变构造的功能。OSGI的功能比较强大,然而,要利用OSGI提供的模块化的特点,就不得不接受其动态化的特点,由此造成组件动态加载与运行实现起来比较复杂。
发明内容
本发明要解决的一个技术问题是:目前组件动态加载与运行实现起来比较复杂的问题。
根据本发明的一个方面,提供一种组件动态加载与执行的方法,包括:设置欲执行的模型组件以及所述模型组件中欲运行的类,其中,所述模型组件中欲运行的类继承所述模型组件的接口;创建类加载器;利用创建的所述类加载器对所述模型组件进行加载;利用类反射方式,将所述模型组件中欲运行的类信息和所述模型组件的上下文对象作为参数,调用所述类加载器的服务运行方法加载所述模型组件中的运行接口来运行所述模型组件的运行服务。
其中,可以通过服务组件提供的接口参数设置欲执行的模型组件以及所述模型组件中欲运行的类。
其中,可以通过实现URLClassLoader并重载findclass方法来创建类加载器,其中,实现的URLClassLoader用于加载任意指定目录下所述模型组件的文件,重载的findclass方法用于从资源库中查找所述模型组件中欲运行的类,所述资源库中缓存所述模型组件的文件。
如果有多个模型组件,可以为不同的模型组件分别创建对应的类加载器,每个类加载器加载对应的模型组件。
组件动态加载与执行的方法还包括:在运行所述模型组件的运行服务之前,利用类反射方式,将所述模型组件中欲运行的类信息和所述模型组件的上下文对象作为参数,调用所述类加载器的初始化方法加载所述模型组件中的初始化接口来运行所述模型组件的初始化服务。
组件动态加载与执行的方法还包括:在运行所述模型组件的运行服务之后,利用类反射方式,将所述模型组件中欲运行的类信息和所述模型组件的上下文对象作为参数,调用所述类加载器的清理方法加载所述模型组件中的清理接口来运行所述模型组件的清理服务;卸载所述类加载器,释放所述类加载器占用的资源。
根据本发明的再一个方面,提供一种组件动态加载与执行的装置,其特征在于,包括:设置模块,用于设置欲执行的模型组件以及所述模型组件中欲运行的类,其中,所述模型组件中欲运行的类继承所述模型组件的接口;创建模块,用于创建类加载器;加载模块,用于利用创建的所述类加载器对所述模型组件进行加载;运行模块,用于利用类反射方式,将所述模型组件中欲运行的类信息和所述模型组件的上下文对象作为参数,调用所述类加载器的服务运行方法加载所述模型组件中的运行接口来运行所述模型组件的运行服务。
其中,所述设置模块,用于通过服务组件提供的接口参数设置欲执行的模型组件以及所述模型组件中欲运行的类。
其中,所述创建模块,用于通过实现URLClassLoader并重载findclass方法来创建类加载器,其中,实现的URLClassLoader用于加载任意指定目录下所述模型组件的文件,重载的findclass方法用于从资源库中查找所述模型组件中欲运行的类,所述资源库中缓存所述模型组件的文件。
其中,所述创建模块,用于为不同的模型组件分别创建对应的类加载器,并且,加载模块,用于利用每个类加载器分别加载对应的模型组件。
组件动态加载与执行的装置还包括:初始化模块,用于在运行所述模型组件的运行服务之前,利用类反射方式,将所述模型组件中欲运行的类信息和所述模型组件的上下文对象作为参数,调用所述类加载器的初始化方法加载所述模型组件中的初始化接口来运行所述模型组件的初始化服务。
组件动态加载与执行的装置还包括:卸载模块,用于在运行所述模型组件的运行服务之后,利用类反射方式,将所述模型组件中欲运行的类信息和所述模型组件的上下文对象作为参数,调用所述类加载器的清理方法加载所述模型组件中的清理接口来运行所述模型组件的清理服务;卸载所述类加载器,释放所述类加载器占用的资源。
根据本发明的另一个方面,提供一种组件动态加载与执行的装置,包括:存储器;以及耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行前述的组件动态加载与执行的方法。
本发明通过上述方案使得组件动态加载与执行实现起来更加简单。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明组件动态加载与执行的方法一个实施例的流程图。
图2是本发明组件动态加载与执行的方法另一个实施例的流程图。
图3是本发明的组件部署示意图。
图4和图5是本发明组件动态加载与执行的装置实施例的结构图。
图6和图7为本发明组件动态加载与执行的装置实施例的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
在本发明中,组件是指能够完成某种功能并且向外提供若干个使用这个功能的接口的可重用的代码集。组件内部由多个类来协同实现指定的功能,同时组件对外暴露一个或多个接口,供外界调用。插件、框架等都属于组件的范畴。组件的动态加载与执行是指在不重启应用服务器的情况下能够加载并执行组件。
针对目前组件动态加载与运行实现起来比较复杂的问题,提出本发明。本发明通过新创建的类加载器动态地加载模型组件,并利用类反射方式运行模型组件中的服务,使得组件动态加载与执行实现起来更加简单。
图1是本发明组件动态加载与执行的方法一个实施例的流程示意图。如图1所示,该方法100包括:
S102,设置欲执行的模型组件以及模型组件中欲运行的类,其中,模型组件中欲运行的类继承模型组件的接口。
一种方法,可以通过服务组件提供的接口参数设置欲执行的模型组件以及模型组件中欲运行的类。
其中,模型组件是指将需要执行的组件打包(JAR包或ZIP包)并放到指定目录下。在本发明中,模型组件可以在应用服务器启动之前或启动之后放到指定目录下。模型组件包括提供给程序开发人员的应用程序接口(API),允许程序开发人员通过API自定义模型接口和相关服务。
其中,服务组件中主要包括组件启动与运行时需要的类(这些类属于容器的核心类)。服务组件用于控制模型组件的动态加载与执行过程,例如,模型组件包的解压、类加载器的创建、加载、运行和销毁等。
S104,创建类加载器。
一种方法,可以通过实现URLClassLoader并重载findclass(寻找类)方法来创建类加载器。URLClassLoader是ClassLoader的子类,能够从指向JAR文件和目录的URL搜索路径加载类和资源,也即通过URLClassLoader可以加载指定JAR文件中的类到内存中,从而使得实现的URLClassLoader可以加载任意指定目录下模型组件的文件。重载的findclass方法用于从资源库中查找模型组件中欲运行的类,资源库中缓存模型组件的文件,模型组件的文件可以以URL方式存放在资源库中。
如果有多个模型组件,可以为不同的模型组件分别创建对应的类加载器,每个类加载器加载对应的模型组件。从而使得模型组件之间具有良好的隔离性,隔离性的优点对于有运行状态的模型组件来说非常重要,使得有运行状态的模型组件在实现时可以关注本模型组件,而无需过多考虑其他模型组件,因此,使得有运行状态的模型组件实现起来更加简单。
S106,利用创建的类加载器对模型组件进行加载,也即将指定目录下的模型组件的全部文件递归加入到类加载器完成模型组件的加载过程。
S108,利用类反射方式,将模型组件中欲运行的类信息和模型组件的上下文对象作为参数,调用类加载器的服务运行方法加载模型组件中的运行接口来运行模型组件的运行服务。
其中,模型组件中欲运行的类继承模型组件的运行接口,以便能够利用类反射方式运行模型组件的运行服务。
其中,运行服务例如包括业务逻辑、计算程序、数据存储等服务。
上述方案,通过新创建的类加载器动态地加载模型组件,并利用类反射方式运行模型组件中的服务,使得组件动态加载与执行实现起来更加简单。
图2是本发明组件动态加载与执行的方法另一个实施例的流程示意图。如图2所示,该方法200包括:
S202,设置欲执行的模型组件以及模型组件中欲运行的类,其中,模型组件中欲运行的类继承模型组件的接口。
S204,创建类加载器。
S206,利用创建的类加载器对模型组件进行加载,也即将指定目录下的模型组件的全部文件递归加入到类加载器完成模型组件的加载过程。
S207,利用类反射方式,将模型组件中欲运行的类信息和模型组件的上下文对象作为参数,调用类加载器的初始化方法加载模型组件中的初始化接口来运行模型组件的初始化服务。从而使程序的运行更加稳定可靠。
其中,模型组件中欲运行的类继承模型组件的初始化接口,以便能够利用类反射方式运行模型组件的初始化服务。
其中,初始化服务例如包括配置文件的加载、日志文件的加载、缓存信息的加载等服务。
S208,利用类反射方式,将模型组件中欲运行的类信息和模型组件的上下文对象作为参数,调用类加载器的服务运行方法加载模型组件中的运行接口来运行模型组件的运行服务。
S209,在运行模型组件的运行服务之后,利用类反射方式,将模型组件中欲运行的类信息和模型组件的上下文对象作为参数,调用类加载器的清理方法加载模型组件中的清理接口来运行模型组件的清理服务;卸载类加载器,释放类加载器占用的资源。从而及时释放***资源。
其中,模型组件中欲运行的类继承模型组件的清理接口,以便能够利用类反射方式运行模型组件的清理服务。
其中,清理服务例如包括释放数据库连接、清理内存对象、清理临时文件、结束线程等服务。
其中,步骤S202、S204、S206、S208的具体实现可以参考步骤S102、S104、S106、S108,这里不再赘述。
下面结合一个应用例来说明上述组件动态加载、执行、卸载等的实现过程。
参考图3所示的组件部署示意图,组件部署在J2EE应用服务器中,并放在WEB-INF目录下。WEB-INF目录主要包括配置文件aliddin.config和目录module、lib。其中,aliddin.config主要用来指定模型组件的相关文件的存放位置,例如aliddin.config=…\WEB-INF\module。lib目录用来存放服务组件的相关文件(如jd-aladdin-service.jar)及其使用的第三方工具包等。jd-aladdin-service.jar中主要包括组件启动与运行时需要的类(这些类属于容器的核心类),主要用于控制模型组件的动态加载与执行过程,例如,模型组件包的解压、类加载器的创建、加载、运行和销毁等。module目录用来存放模型组件的相关文件,通常是打包好的模型组件的相关文件(即模型组件包),如model_pbs_JAR_20160613145440.jar,命名规则例如为模型前缀_业务简称_模型包类型_模型生成日期.zip。model_pbs_JAR_20160613145440.jar解压后的内容包括classes目录和lib目录。classes目录用来存放类文件、属性文件、配置文件等,模型组件中欲运行的类放在该目录下。lib目录用来存在供程序开发人员使用的扩展包,模型组件的接口包(如jd-aladdin-module.jar)放在该目录下。在制作模型包时,需要下载jd-aladdin-module.jar接口包,并按照接口包提供的接口开发应用程序,然后将模型文件打成jar包或者zip包,放入到指定的目录下,指定的目录在aliddin.config文件中进行配置。
基于上述部署好的组件,则可以进行如下的组件动态加载、执行、卸载等操作。
首先,调用组件构造方法ModuleLoaderManage(String moduleName)设置欲执行的模型组件moduleName,moduleName例如设置为model_pbs_JAR_20160613145440.jar。
然后,调用解压模型方法unzipModule()解压模型组件包model_pbs_JAR_20160613145440.jar。其中,模型组件包中的jar包(例如,接口包jd-aladdin-module.jar)放入lib目录下,模型组件包中的非jar包(例如类文件、属性文件、配置文件等)放入classes目录下。该方法可以检查模型组件包是否已被解压,解压过的模型组件包不会重复解压和加载。
接着,调用类加载器创建方法createModuleClassLoader()创建一个新的类加载器。如前所述,该方法可以通过实现URLClassLoader并重载findclass方法来创建类加载器,并将指定目录下的模型组件的全部文件递归加入到该类加载器完成模型组件的加载过程。
接着,利用类反射方式,将模型组件中欲运行的类信息和模型组件的上下文对象作为参数,调用类加载器的初始化方法runInitService(String runClass,Stringparams)加载模型组件中的初始化接口initModule(ModuleContext context)来运行模型组件的初始化服务,如加载SPRING、初始化缓存和数据库等。
其中,初始化方法runInitService(String runClass,String params)用来运行模型组件的初始化服务,其参数runClass为欲运行的类的全路径名称,欲运行的类继承模型组件的初始化接口,其参数params为模型组件的上下文对象。
其中,初始化接口initModule(ModuleContext context)用来对模型组件进行初始化,其参数context为模型组件的上下文对象。
接着,利用类反射方式,将模型组件中欲运行的类信息和模型组件的上下文对象作为参数,调用类加载器的服务运行方法runExeService(String runClass,Stringparams)加载模型组件中的运行接口runService(ModuleContext context)来运行模型组件的运行服务,执行具体的模型操作。
其中,服务运行方法runExeService(String runClass,String params)用来运行模型组件的运行服务,其参数runClass为欲运行的类的全路径名称,欲运行的类继承模型组件的运行接口,其参数params为模型组件的上下文对象。其具体的代码为:
其中,运行接口runService(ModuleContext context)用来运行模型服务,其参数context为模型组件的上下文对象。
接着,利用类反射方式,将模型组件中欲运行的类信息和模型组件的上下文对象作为参数,调用类加载器的清理方法runFinishModule(String runClass,String params)加载模型组件中的清理接口finishModule(ModuleContext context)来运行模型组件的清理服务,如释放缓存,释放数据库连接等。
其中,清理方法runFinishModule(String runClass,String params)用来运行模型组件的清理服务,其参数runClass为欲运行的类的全路径名称,欲运行的类继承模型组件的清理接口,其参数params为模型组件的上下文对象。
其中,清理接口finishModule(ModuleContext context)用来对模型组件进行清理,其参数context为模型组件的上下文对象。
最后,调用uninstallClassLoader()方法卸载类加载器,释放类加载器占用的资源。从而及时释放***资源。
图4和图5是本发明组件动态加载与执行的装置实施例的结构示意图。如图4和图5所示,该装置400,500包括:
设置模块402,用于设置欲执行的模型组件以及模型组件中欲运行的类,其中,模型组件中欲运行的类继承模型组件的接口;
创建模块404,用于创建类加载器;
加载模块406,用于利用创建的类加载器对模型组件进行加载;
运行模块408,用于利用类反射方式,将模型组件中欲运行的类信息和模型组件的上下文对象作为参数,调用类加载器的服务运行方法加载模型组件中的运行接口来运行模型组件的运行服务。
其中,设置模块402,用于通过服务组件提供的接口参数设置欲执行的模型组件以及模型组件中欲运行的类。
其中,创建模块404,用于通过实现URLClassLoader并重载findclass方法来创建类加载器,其中,实现的URLClassLoader用于加载任意指定目录下模型组件的文件,重载的findclass方法用于从资源库中查找模型组件中欲运行的类,资源库中缓存模型组件的文件。
其中,创建模块404,用于为不同的模型组件分别创建对应的类加载器,并且,加载模块406,用于利用每个类加载器分别加载对应的模型组件。
如图5所示,该装置500还包括:初始化模块507,用于在运行模型组件的运行服务之前,利用类反射方式,将模型组件中欲运行的类信息和模型组件的上下文对象作为参数,调用类加载器的初始化方法加载模型组件中的初始化接口来运行模型组件的初始化服务。
如图5所示,该装置500还包括:卸载模块509,用于在运行模型组件的运行服务之后,利用类反射方式,将模型组件中欲运行的类信息和模型组件的上下文对象作为参数,调用类加载器的清理方法加载模型组件中的清理接口来运行模型组件的清理服务;卸载类加载器,释放类加载器占用的资源。
图6为本发明组件动态加载与执行的装置的一个实施例的结构图。如图6所示,该实施例的装置600包括:存储器610以及耦接至该存储器610的处理器620,处理器620被配置为基于存储在存储器610中的指令,执行前述任意一个实施例中的组件动态加载与执行的方法。
其中,存储器610例如可以包括***存储器、固定非易失性存储介质等。***存储器例如存储有操作***、应用程序、引导装载程序(Boot Loader)以及其他程序等。
图7为本发明组件动态加载与执行的装置的又一个实施例的结构图。如图7所示,该实施例的装置700包括:存储器610以及处理器620,还可以包括输入输出接口730、网络接口740、存储接口750等。这些接口730,740,750以及存储器610和处理器620之间例如可以通过总线760连接。其中,输入输出接口730为显示器、鼠标、键盘、触摸屏等输入输出设备提供连接接口。网络接口740为各种联网设备提供连接接口。存储接口750为SD卡、U盘等外置存储设备提供连接接口。
本领域内的技术人员应当明白,本发明的实施例可提供为方法、***、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用非瞬时性存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解为可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (13)

1.一种组件动态加载与执行的方法,其特征在于,包括:
设置欲执行的模型组件以及所述模型组件中欲运行的类,其中,所述模型组件中欲运行的类继承所述模型组件的接口;
创建类加载器;
利用创建的所述类加载器对所述模型组件进行加载;
利用类反射方式,将所述模型组件中欲运行的类信息和所述模型组件的上下文对象作为参数,调用所述类加载器的服务运行方法加载所述模型组件中的运行接口来运行所述模型组件的运行服务。
2.如权利要求1所述的方法,其特征在于,通过服务组件提供的接口参数设置欲执行的模型组件以及所述模型组件中欲运行的类。
3.如权利要求1所述的方法,其特征在于,通过实现URLClassLoader并重载findclass方法来创建类加载器,其中,实现的URLClassLoader用于加载任意指定目录下所述模型组件的文件,重载的findclass方法用于从资源库中查找所述模型组件中欲运行的类,所述资源库中缓存所述模型组件的文件。
4.如权利要求1所述的方法,其特征在于,为不同的模型组件分别创建对应的类加载器,每个类加载器加载对应的模型组件。
5.如权利要求1所述的方法,其特征在于,还包括:
在运行所述模型组件的运行服务之前,利用类反射方式,将所述模型组件中欲运行的类信息和所述模型组件的上下文对象作为参数,调用所述类加载器的初始化方法加载所述模型组件中的初始化接口来运行所述模型组件的初始化服务。
6.如权利要求1所述的方法,其特征在于,还包括:
在运行所述模型组件的运行服务之后,利用类反射方式,将所述模型组件中欲运行的类信息和所述模型组件的上下文对象作为参数,调用所述类加载器的清理方法加载所述模型组件中的清理接口来运行所述模型组件的清理服务;
卸载所述类加载器,释放所述类加载器占用的资源。
7.一种组件动态加载与执行的装置,其特征在于,包括:
设置模块,用于设置欲执行的模型组件以及所述模型组件中欲运行的类,其中,所述模型组件中欲运行的类继承所述模型组件的接口;
创建模块,用于创建类加载器;
加载模块,用于利用创建的所述类加载器对所述模型组件进行加载;
运行模块,用于利用类反射方式,将所述模型组件中欲运行的类信息和所述模型组件的上下文对象作为参数,调用所述类加载器的服务运行方法加载所述模型组件中的运行接口来运行所述模型组件的运行服务。
8.如权利要求7所述的装置,其特征在于,所述设置模块,用于通过服务组件提供的接口参数设置欲执行的模型组件以及所述模型组件中欲运行的类。
9.如权利要求7所述的装置,其特征在于,所述创建模块,用于通过实现URLClassLoader并重载findclass方法来创建类加载器,其中,实现的URLClassLoader用于加载任意指定目录下所述模型组件的文件,重载的findclass方法用于从资源库中查找所述模型组件中欲运行的类,所述资源库中缓存所述模型组件的文件。
10.如权利要求7所述的装置,其特征在于,
所述创建模块,用于为不同的模型组件分别创建对应的类加载器,并且,加载模块,用于利用每个类加载器分别加载对应的模型组件。
11.如权利要求7所述的装置,其特征在于,还包括:
初始化模块,用于在运行所述模型组件的运行服务之前,利用类反射方式,将所述模型组件中欲运行的类信息和所述模型组件的上下文对象作为参数,调用所述类加载器的初始化方法加载所述模型组件中的初始化接口来运行所述模型组件的初始化服务。
12.如权利要求7所述的装置,其特征在于,还包括:
卸载模块,用于在运行所述模型组件的运行服务之后,利用类反射方式,将所述模型组件中欲运行的类信息和所述模型组件的上下文对象作为参数,调用所述类加载器的清理方法加载所述模型组件中的清理接口来运行所述模型组件的清理服务;卸载所述类加载器,释放所述类加载器占用的资源。
13.一种组件动态加载与执行的装置,其特征在于,包括:
存储器;以及
耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行如权利要求1-6中任一项所述的组件动态加载与执行的方法。
CN201710032926.2A 2017-01-18 2017-01-18 组件动态加载与执行的方法和装置 Pending CN108334374A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710032926.2A CN108334374A (zh) 2017-01-18 2017-01-18 组件动态加载与执行的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710032926.2A CN108334374A (zh) 2017-01-18 2017-01-18 组件动态加载与执行的方法和装置

Publications (1)

Publication Number Publication Date
CN108334374A true CN108334374A (zh) 2018-07-27

Family

ID=62922631

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710032926.2A Pending CN108334374A (zh) 2017-01-18 2017-01-18 组件动态加载与执行的方法和装置

Country Status (1)

Country Link
CN (1) CN108334374A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109684089A (zh) * 2018-12-18 2019-04-26 创新奇智(广州)科技有限公司 一种基于预测模型的任务调度方法、***及电子设备
CN110096315A (zh) * 2019-03-22 2019-08-06 华为技术有限公司 一种组件加载方法和装置
CN113253990A (zh) * 2020-02-13 2021-08-13 北京沃东天骏信息技术有限公司 更新软件的方法、装置、设备和计算机可读介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101354696A (zh) * 2008-09-08 2009-01-28 北京航空航天大学 基于电信领域共享信息模型的数据整合与应用服务***
CN104239054A (zh) * 2014-09-12 2014-12-24 广州市久邦数码科技有限公司 一种基于安卓***的插件加载方法及其***
CN104536737A (zh) * 2014-12-16 2015-04-22 深圳市金证科技股份有限公司 一种基于组件的程序开发框架
CN105404524A (zh) * 2014-09-15 2016-03-16 阿里巴巴集团控股有限公司 Java应用中的类加载隔离方法及装置
CN106201862A (zh) * 2015-05-25 2016-12-07 阿里巴巴集团控股有限公司 web服务压力测试方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101354696A (zh) * 2008-09-08 2009-01-28 北京航空航天大学 基于电信领域共享信息模型的数据整合与应用服务***
CN104239054A (zh) * 2014-09-12 2014-12-24 广州市久邦数码科技有限公司 一种基于安卓***的插件加载方法及其***
CN105404524A (zh) * 2014-09-15 2016-03-16 阿里巴巴集团控股有限公司 Java应用中的类加载隔离方法及装置
CN104536737A (zh) * 2014-12-16 2015-04-22 深圳市金证科技股份有限公司 一种基于组件的程序开发框架
CN106201862A (zh) * 2015-05-25 2016-12-07 阿里巴巴集团控股有限公司 web服务压力测试方法及装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109684089A (zh) * 2018-12-18 2019-04-26 创新奇智(广州)科技有限公司 一种基于预测模型的任务调度方法、***及电子设备
CN109684089B (zh) * 2018-12-18 2020-08-18 创新奇智(广州)科技有限公司 一种基于预测模型的任务调度方法、***及电子设备
CN110096315A (zh) * 2019-03-22 2019-08-06 华为技术有限公司 一种组件加载方法和装置
CN113253990A (zh) * 2020-02-13 2021-08-13 北京沃东天骏信息技术有限公司 更新软件的方法、装置、设备和计算机可读介质

Similar Documents

Publication Publication Date Title
CN111258609B (zh) Kubernetes集群的升级方法、装置、电子设备和介质
CN108958796B (zh) 业务请求处理方法及装置、业务请求处理***
CN104714828B (zh) 应用安装、运行方法及装置
CN111324571B (zh) 一种容器集群管理方法、装置及***
CN102411506B (zh) Java***业务单元插件式管理***及业务功能动态变更方法
US10303450B2 (en) Systems and methods for a policy-driven orchestration of deployment of distributed applications
CN104750528B (zh) 一种Android程序中的组件管理方法和装置
CN111984269B (zh) 提供应用构建服务的方法及应用构建平台
CN107463432A (zh) 服务器生产环境部署方法、装置、电子设备及存储介质
CN105224466A (zh) 一种基于Docker的集成测试方法及***
US10594800B2 (en) Platform runtime abstraction
WO2022037612A1 (zh) 提供应用构建服务的方法及应用构建平台、应用部署方法和***
CN107885551A (zh) 一种服务部署方法、装置、可读介质及存储控制器
US8499294B2 (en) Persisting the changes for managed components in an application server
CN103353845A (zh) 脚本加载、推送方法及装置
CN106569880B (zh) 一种Android应用间动态共享资源的方法及***
CN103942281A (zh) 一种对持久化存储的对象进行操作的方法及装置
US20080229274A1 (en) Automating Construction of a Data-Source Interface For Component Applications
US9122559B2 (en) Extensible dependency management framework and method
JP2017091533A (ja) 製品ライフサイクル管理(plm)システムとソースコード管理(scm)システムとの間のデータの双方向同期
CN104834541A (zh) 功能模块挂载方法、挂载***及更新挂载***的方法
JP2017091531A (ja) ソースコード管理(scm)システムから製品ライフサイクル管理(plm)システムへの階層的なデータのエクスポート
CN108334374A (zh) 组件动态加载与执行的方法和装置
CN116783581A (zh) 在云平台中配置的数据中心上部署软件发布
CN114675934A (zh) 联盟链中部署链码的方法和***

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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20180727