CN109284143A - 动态加载方法、装置及应用模块拔插方法 - Google Patents
动态加载方法、装置及应用模块拔插方法 Download PDFInfo
- Publication number
- CN109284143A CN109284143A CN201810931288.2A CN201810931288A CN109284143A CN 109284143 A CN109284143 A CN 109284143A CN 201810931288 A CN201810931288 A CN 201810931288A CN 109284143 A CN109284143 A CN 109284143A
- Authority
- CN
- China
- Prior art keywords
- module
- related service
- information
- software development
- development kit
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 72
- 238000011068 loading method Methods 0.000 title claims abstract description 32
- 230000015654 memory Effects 0.000 claims description 31
- 238000004590 computer program Methods 0.000 claims description 10
- 230000004048 modification Effects 0.000 claims description 9
- 238000012986 modification Methods 0.000 claims description 9
- 230000006870 function Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 238000011161 development Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 241000700189 Hystrix <Rodentia> Species 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 238000002347 injection Methods 0.000 description 2
- 239000007924 injection Substances 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 239000012141 concentrate Substances 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
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
技术领域
本发明涉及动态加载技术领域,具体而言,本发明涉及一种动态加载方法、装置及应用模块拔插方法、存储设备、计算机设备。
背景技术
SDK(Software Development Kit,软件开发工具包)是开发工具的集合。SDK中集成有各种开发服务,例如为软件包、软件框架、硬件平台、操作***等提供开发工具,可以为应用程序(Application,App)开发人员提供开发功能。
应用模块之间应满足可拔插的原则,这样在替换或者扩展某一种实现时,就不用修改关联代码。应用模块中,用户集中缓存SDK作为公共的应用组件,通过SDK实现应用模块之间的可拔插时,SDK需要适配各个关联方***的特性。然而,对于SDK的模块设计中如何引入SPI(Service Provider Interface,服务提供程序接口)技术实现动态加载是当前亟需解决的问题。
发明内容
本发明提出一种动态加载方法、装置及应用模块拔插方法、存储设备、计算机设备,以在无需修改关联代码的情况下实现应用模块之间的动态加载。
本发明提供以下方案:
一种动态加载方法,包括:串行化读取软件开发工具包模块中外部配置文件的相关服务类,所述相关服务类包括软件开发工具包模块的服务类以及所述软件开发工具包模块中关联方***的关联模块的服务类;初始化所述相关服务类中的相关服务;将所述初始化后的相关服务的信息存入所述软件开发工具包模块的上下文信息。
在其中一个实施方式中,所述将所述初始化后的相关服务的信息存入所述软件开发工具包模块的上下文信息,包括:将所述初始化后的相关服务的信息通过队列形式存入所述软件开发工具包模块的上下文信息。
在其中一个实施方式中,所述外部配置文件包括服务提供程序接口的预置配置文件。
一种应用模块拔插方法,包括:获取软件开发工具包模块中的上下文信息;所述软件开发工具包模块包括多个关联的应用模块,所述软件开发工具包模块为上下文信息中存储有初始化后的相关服务的信息的模块,所述相关服务为所述软件开发工具包模块的外部配置文件的相关服务类的服务,所述相关服务类包括所述软件开发工具包模块的服务类以及所述软件开发工具包模块中关联方***的关联模块的服务类;根据所述应用模块拔插需求修改所述上下文信息中的外部配置文件的相关服务的信息。
在其中一个实施方式中,所述根据所述应用模块拔插需求修改所述上下文信息中的外部配置文件的相关服务的信息,包括:通过在所述外部配置文件中新增应用模块的初始化器引用该应用模块。
在其中一个实施方式中,所述根据所述应用模块拔插需求修改所述上下文信息中的外部配置文件的相关服务的信息,包括:通过删除所述外部配置文件中应用模块的初始化器停用该应用模块。
在其中一个实施方式中,所述根据所述应用模块拔插需求修改所述上下文信息中的外部配置文件的相关服务的信息之后,还包括:定时扫描所述上下文信息中的外部配置文件的相关服务的信息;确认所述外部配置文件的相关服务的信息中增加了应用模块关联特性的服务的信息,自动化加载该应用模块;或,确认所述外部配置文件的相关服务的信息中删除了应用模块关联特性的服务的信息,自动化卸载该应用模块。
一种动态加载装置,包括:读取模块,用于串行化读取软件开发工具包模块中外部配置文件的相关服务类,所述相关服务类包括软件开发工具包模块的服务类以及所述软件开发工具包模块中关联方***的关联模块的服务类;初始化模块,用于初始化所述相关服务类中的相关服务;存入模块,用于将所述初始化后的相关服务的信息存入所述软件开发工具包模块的上下文信息。
一种存储设备,其上存储有计算机程序;所述计算机程序适于由处理器加载并执行上述任一实施例所述的动态加载方法;或,所述计算机程序适于由处理器加载并执行上述任一实施例所述的应用模块拔插方法。
一种计算机设备,其包括:一个或多个处理器;存储器;一个或多个应用程序,其中所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个应用程序配置用于执行根据上述任一实施例所述的动态加载方法;或,所述计算机程序适于由处理器加载并执行根据上述任一实施例所述的应用模块拔插方法。
上述实施例提供的动态加载方法,基于SPI服务策略实现SDK中相关模块的服务类的信息的动态加载,串行化读取包括SDK模块以及SDK模块中关联方***的关联模块的服务类的相关服务类,并初始化该相关服务类,同时将初始化后的相关服务的信息存入所述SDK模块的上下文信息。因此,在引入或停用应用模块时,可在SDK模块的上下文信息中修改配置文件以实现应用模块间的拔插,而不用直接修改代码,以实现应用模块间的拔插。
本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本发明提供的一种动态加载方法的一实施例中的方法流程图;
图2为本发明提供的一种应用模块拔插方法的一实施例中的方法流程图;
图3为本发明提供的一种应用模块拔插方法的另一实施例中的方法流程图;
图4为本发明提供的一种动态加载装置的一实施例中的结构框图;
图5为本发明提供的一种计算机设备的一实施例中的结构框图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式,这里使用的“第一”、“第二”仅用于区别同一技术特征,并不对该技术特征的顺序和数量等加以限定。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
SPI:Service Provider Interface,服务提供程序接口。
SDK:Software Development Kit,软件开发工具包。
在传统的应用中,一个接口有多个实现类。每一个实现类在使用的时候,通常采用动态加载。如果采用SPI机制,可通过在工程的service(服务)文件夹下创建基于接口的全限定类名的文件,文件内容是对于该接口提供的多个实现类,内容的格式是一个实现类的全限定类名。
研发人员在开发应用模块时,可以将SDK接入应用模块中,直接调用SDK提供的功能。应用模块之间应满足可拔插的原则,这样在替换或者扩展某一种实现时,就不用修改关联代码。本发明提供的一种动态加载方法可以通过SPI机制可实现应用模块的可拔插。
在一实施例中,如图1所示,该动态加载方法包括以下步骤:
S100,串行化读取软件开发工具包模块中外部配置文件的相关服务类,所述相关服务类包括软件开发工具包模块的服务类以及所述软件开发工具包模块中关联方***的关联模块的服务类。
在本实施例中,ServiceLoader(服务加载器)串行化读取SDK模块中的外部配置文件。其中,串行化读取所述外部配置文件指的是,ServiceLoader按顺序每次读取一行外部配置文件中的数据。此处,SDK模块中的外部配置文件为SPI技术的默认配置文件。相关服务类包括SDK模块的服务类以及SDK模块中关联方***的关联模块的服务类,以便后续在执行应用模块拔插时,可分别对SDK模块本身或者SDK模块内各个关联***的关联模块执行相应的加载或卸载。具体地,所述相关服务可包括redis缓存初始化服务和RPC远程调用服务等。redis缓存初始化服务包括初始化基本配置,连接池以及日志等单例工具类。RPC(RemoteProcedure Call,远程过程调用)远程调用服务包括远程调用基本配置及日志等,以及相关工具方法的单例对象,同时包含了一次联通性测试。
其中,ServiceLoader表示一个简单的服务提供者加载设施。相关服务类表示接口和类(通常为抽象类)的集合。服务提供者是服务的特定实现。提供者中的类通常实现接口,并对服务本身子类化定义子类。服务提供者可以以扩展的形式安装在JAVA平台的实现中,也就是将jar文件放入任意常用的扩展目录中。也可通过将提供者加入应用程序类路径,或者通过其他某些特定于平台的方式使其可用。
SPI,即服务提供程序接口。在面向对象的应用程序设计中,往往存在多个抽象的模块,多个模块形成不同的方案。例如,日志模块,xml解析模块、jdbc模块等。为避免反复的代码修改,模块之间需满足可插拔的原则。因此需要一种服务发现机制。JAVA SPI提供为某个接口寻找服务实现的机制,也即是将装配的控制权移到程序之外。JAVA SPI的具体约定为:当服务的提供者,提供了服务接口的一种实现之后,在jar包的META-INF/services/目录里同时创建一个以服务接口命名的文件。该文件里就是实现该服务接口的具体实现类。而当外部程序装配这个模块的时候,就能通过该jar包META-INF/services/里的配置文件找到具体的实现类名,并装载实例化,完成模块的注入。
S200,初始化所述相关服务类中的相关服务。
在本实施例中,由于SDK模块的运行需要一些基础模块的支撑,同时SDK模块的功能提供也是需要各功能模块的组装来实现。因此,使用接口初始化包括SDK模块以及SDK模块中关联方***的关联模块的服务类的相关服务。
初始化SDK模块中外部配置文件的相关服务,对所述相关服务做标准化处理,以便程序统一管理。其中,标准化是指接口定义标准化,后续实现此接口的服务,可以保持同一个初始化流程。此处,初始化实现了同一标准的服务。在本实施例中,采用统一初始化接口对所述相关服务进行初始化。统一初始化接口为通过JAVA接口技术自定义的接口,在该接口中定义了一些公共方法。例如,初始化方法,完成标志查询方法,模块配置获取方法等。同时,所述SDK模块支持对所述统一初始化接口做处理,也就是初始化实现了该接口的功能服务。
S300,将所述初始化后的相关服务的信息存入所述软件开发工具包模块的上下文信息。
在本实施例中,存入所述SDK模块的上下文信息中的所述相关服务,在应用的整个生命周围中启用。SDK模块的上下文信息随着SDK模块的初始化而创建,SDK模块的停用而销毁。在这个生命对象中,存入了各个功能模块的入口,环境,工具方法等,以及SDK模块的基本配置,如调用方***适配SDK模块的日志,redis,hystrix限流等的配置。这样在应用的整个生命周期中,调用方***都可以从SDK模块的上下文信息中取得所需的对象,功能,而不必每使用一次就走一些重复且无必要的流程。在一实施方式中,步骤S300包括:将所述初始化后的相关服务通过队列形式存入所述SDK模块的上下文信息。具体地,所述相关服务为SDK模块中服务模块的相关服务。服务加载器加载相关服务时,加载的顺序形成队列,根据队列顺序将相关服务存入SDK模块的上下文信息。
因此,在某个应用模块中引入或停用另一应用模块时,可在SDK模块的上下文信息中修改配置文件以实现应用模块间的拔插,而不用直接修改代码。
上述动态加载方法,通过读取SDK模块中的外部配置文件的相关服务,并初始化所述相关服务,将初始化的相关服务的信息存入SDK模块的上下文信息,因此可通过配置文件中引入或停用所述相关服务,以实现应用模块间的拔插,无需修改关联代码,提升了SDK模块的应用扩展。
本发明还提供一种应用模块拔插方法,如图2所示,该应用模块拔插方法包括以下步骤:
S10,获取软件开发工具包模块中的上下文信息;所述软件开发工具包模块包括多个关联的应用模块。
在本实施例中,所述软件开发工具包模块为上下文信息中存储有初始化后的相关服务的信息的模块,所述相关服务为所述软件开发工具包模块的外部配置文件的相关服务类的服务,所述相关服务类包括所述软件开发工具包模块的服务类以及所述软件开发工具包模块中关联方***的关联模块的服务类。
调用方***的应用模块通过上述动态加载方法,将SDK模块本身的服务模块中的相关服务打包在SDK模块的jar包。其中,此类服务模块的相关服务可以在SDK模块的SPI配置文件中进行配置。
在实现应用模块的拔插时,可以动态地在SDK模块的配置文件中引入或停用相关模块,不用直接修改代码,以实现应用模块间的拔插。具体可以是对SDK模块的SPI配置文件进行修改,如修改相关服务,直接实现应用模块的拔插。
S20,根据所述应用模块拔插需求修改所述上下文信息中的外部配置文件的相关服务的信息。
在本实施例中,在调用方***实现应用模块拔插时,根据该应用模块拔插需求修改SDK的上下文信息中的外部配置文件的相关服务的信息,以实现对应应用模块的加载或者卸载。
其中,步骤S20包括:通过在所述外部配置文件中新增应用模块的初始化器引用该应用模块。或,通过删除所述外部配置文件中应用模块的初始化器停用该应用模块。
具体地,调用方***在引用某个应用模块时,直接在SDK模块的上下文信息中的外部配置文件中增加该应用模块的初始化器以引用该应用模块。调用方***在停用某个应用模块时,接在SDK模块的上下文信息中的外部配置文件中删除该应用模块的初始化器以停用该应用模块。
在一实施例中,如图3所示,步骤S20之后,还包括步骤:
S30,定时扫描所述上下文信息中的外部配置文件的相关服务的信息;
S40,确认所述外部配置文件的相关服务的信息中增加了应用模块关联特性的服务的信息,自动化加载该应用模块;或,确认所述外部配置文件的相关服务的信息中删除了应用模块关联特性的服务的信息,自动化卸载该应用模块。
在本实施中,可通过定时扫描应用模块中,SDK模块上下文信息中的外部配置文件,检测所述外部配置文件中对应的初始化器的动态变化,实现自动装填或卸载对应的应用模块,从而实现应用模块的拔插。
具体地,可根据所述动态加载方法中加载的SDK模块的相关服务的信息,引入或停用对应的应用模块。此处,SDK模块的相关服务为SPI技术中默认配置文件中的相关服务,通过SDK模块的相关服务,可将SDK模块中的模块之间的关联转移到模块的程序之外,实现模块的动态加载。
本发明还提供一种动态加载装置。如图4所示,该动态加载装置包括读取模块100、初始化模块200以及存入模块300。
读取模块100用于串行化读取软件开发工具包模块中外部配置文件的相关服务类,所述相关服务类包括软件开发工具包模块的服务类以及所述软件开发工具包模块中关联方***的关联模块的服务类。在本实施例中,ServiceLoader(服务加载器)串行化读取SDK模块中的外部配置文件。其中,串行化读取所述外部配置文件指的是,ServiceLoader按顺序每次读取一行外部配置文件中的数据。此处,SDK模块中的外部配置文件为SPI技术的默认配置文件。相关服务类包括SDK模块的服务类以及SDK模块中关联方***的关联模块的服务类,以便后续在执行应用模块拔插时,可分别对SDK模块本身或者SDK模块内各个关联***的关联模块执行相应的加载或卸载。具体地,所述相关服务可包括redis缓存初始化服务和RPC远程调用服务等。redis缓存初始化服务包括初始化基本配置,连接池以及日志等单例工具类。RPC(Remote Procedure Call,远程过程调用)远程调用服务包括远程调用基本配置及日志等,以及相关工具方法的单例对象,同时包含了一次联通性测试。
其中,ServiceLoader表示一个简单的服务提供者加载设施。相关服务类表示接口和类(通常为抽象类)的集合。服务提供者是服务的特定实现。提供者中的类通常实现接口,并对服务本身子类化定义子类。服务提供者可以以扩展的形式安装在Java平台的实现中,也就是将jar文件放入任意常用的扩展目录中。也可通过将提供者加入应用程序类路径,或者通过其他某些特定于平台的方式使其可用。
SPI,即服务提供程序接口。在面向对象的应用程序设计中,往往存在多个抽象的模块,多个模块形成不同的方案。例如,日志模块,xml解析模块、jdbc模块等。为避免反复的代码修改,模块之间需满足可插拔的原则。因此需要一种服务发现机制。JAVA SPI提供为某个接口寻找服务实现的机制,也即是将装配的控制权移到程序之外。JAVA SPI的具体约定为:当服务的提供者,提供了服务接口的一种实现之后,在jar包的META-INF/services/目录里同时创建一个以服务接口命名的文件。该文件里就是实现该服务接口的具体实现类。而当外部程序装配这个模块的时候,就能通过该jar包META-INF/services/里的配置文件找到具体的实现类名,并装载实例化,完成模块的注入。
初始化模块200用于初始化所述相关服务类中的相关服务。在本实施例中,由于SDK模块的运行需要一些基础模块的支撑,同时SDK模块的功能提供也是需要各功能模块的组装来实现。因此,使用接口初始化包括SDK模块以及SDK模块中关联方***的关联模块的服务类的相关服务。
初始化SDK模块中外部配置文件的相关服务,对所述相关服务做标准化处理,以便程序统一管理。其中,标准化是指接口定义标准化,后续实现此接口的服务,可以保持同一个初始化流程。此处,初始化实现了同一标准的服务。在本实施例中,采用统一初始化接口对所述相关服务进行初始化。统一初始化接口为通过JAVA接口技术自定义的接口,在该接口中定义了一些公共方法。例如,初始化方法,完成标志查询方法,模块配置获取方法等。同时,所述SDK模块支持对所述统一初始化接口做处理,也就是初始化实现了该接口的功能服务。
存入模块300用于将所述初始化后的相关服务存入所述软件开发工具包模块的上下文信息。在本实施例中,存入所述SDK模块的上下文信息中的所述相关服务,在应用的整个生命周围中启用。SDK模块的上下文信息随着SDK模块的初始化而创建,SDK模块的停用而销毁。在这个生命对象中,存入了各个功能模块的入口,环境,工具方法等,以及SDK模块的基本配置,如调用方***适配SDK模块的日志,redis,hystrix限流等的配置。这样在应用的整个生命周期中,调用方***都可以从SDK模块的上下文信息中取得所需的对象,功能,而不必每使用一次就走一些重复且无必要的流程。因此,在某个应用模块中引入或停用另一应用模块时,可在SDK模块的上下文信息中修改配置文件以实现应用模块间的拔插,而不用直接修改代码。
在其他实施例中,本发明提供的基于SPI服务策略的动态加载装置中的各个模块还用于执行本发明所述的基于SPI服务策略的动态加载方法中,对应各个步骤执行的操作,在此不再做详细的说明。
本发明还提供一种存储介质。该存储介质上存储有计算机程序;所述计算机程序被处理器执行时,实现上述任一实施例所述的动态加载方法或应用模块拔插方法。该存储介质可以是存储器。例如,内存储器或外存储器,或者包括内存储器和外存储器两者。内存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦写可编程ROM(EEPROM)、快闪存储器、或者随机存储器。外存储器可以包括硬盘、软盘、ZIP盘、U盘、磁带等。本发明所公开的存储介质包括但不限于这些类型的存储器。本发明所公开的存储器只作为例子而非作为限定。
本发明还提供一种计算机设备。一种计算机设备包括:一个或多个处理器;存储器;一个或多个应用程序。其中所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个应用程序配置用于执行上述任一实施例所述的动态加载方法或应用模块拔插方法。
图5为本发明一实施例中的计算机设备的结构示意图。本实施例所述计算机设备可以是服务器、个人计算机以及网络设备。如图5所示,设备包括处理器503、存储器505、输入单元507以及显示单元509等器件。本领域技术人员可以理解,图5示出的设备结构器件并不构成对所有设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件。存储器505可用于存储应用程序501以及各功能模块,处理器503运行存储在存储器505的应用程序501,从而执行设备的各种功能应用以及数据处理。存储器可以是内存储器或外存储器,或者包括内存储器和外存储器两者。内存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦写可编程ROM(EEPROM)、快闪存储器、或者随机存储器。外存储器可以包括硬盘、软盘、ZIP盘、U盘、磁带等。本发明所公开的存储器包括但不限于这些类型的存储器。本发明所公开的存储器只作为例子而非作为限定。
输入单元507用于接收信号的输入,以及接收用户输入的关键字。输入单元507可包括触控面板以及其它输入设备。触控面板可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板上或在触控面板附近的操作),并根据预先设定的程序驱动相应的连接装置;其它输入设备可以包括但不限于物理键盘、功能键(比如播放控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。显示单元509可用于显示用户输入的信息或提供给用户的信息以及计算机设备的各种菜单。显示单元509可采用液晶显示器、有机发光二极管等形式。处理器503是计算机设备的控制中心,利用各种接口和线路连接整个电脑的各个部分,通过运行或执行存储在存储器503内的软件程序和/或模块,以及调用存储在存储器内的数据,执行各种功能和处理数据。
在一实施方式中,设备包括一个或多个处理器503,以及一个或多个存储器505,一个或多个应用程序501。其中所述一个或多个应用程序501被存储在存储器505中并被配置为由所述一个或多个处理器503执行,所述一个或多个应用程序501配置用于执行以上实施例所述的动态加载方法或应用模块拔插方法。
此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括存储器、磁盘或光盘等。
以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
应该理解的是,在本发明各实施例中的各功能单元可集成在一个处理模块中,也可以各个单元单独物理存在,也可以两个或两个以上单元集成于一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种动态加载方法,其特征在于,包括:
串行化读取软件开发工具包模块中外部配置文件的相关服务类,所述相关服务类包括软件开发工具包模块的服务类以及所述软件开发工具包模块中关联方***的关联模块的服务类;
初始化所述相关服务类中的相关服务;
将所述初始化后的相关服务的信息存入所述软件开发工具包模块的上下文信息。
2.根据权利要求1所述的方法,其特征在于,所述将所述初始化后的相关服务的信息存入所述软件开发工具包模块的上下文信息,包括:
将所述初始化后的相关服务的信息通过队列形式存入所述软件开发工具包模块的上下文信息。
3.根据权利要求1所述的方法,其特征在于,所述外部配置文件包括服务提供程序接口的预置配置文件。
4.一种应用模块拔插方法,其特征在于,包括:
获取软件开发工具包模块中的上下文信息;所述软件开发工具包模块包括多个关联的应用模块,所述软件开发工具包模块为上下文信息中存储有初始化后的相关服务的信息的模块,所述相关服务为所述软件开发工具包模块的外部配置文件的相关服务类的服务,所述相关服务类包括所述软件开发工具包模块的服务类以及所述软件开发工具包模块中关联方***的关联模块的服务类;
根据所述应用模块拔插需求修改所述上下文信息中的外部配置文件的相关服务的信息。
5.根据权利要求4所述的方法,其特征在于,所述根据所述应用模块拔插需求修改所述上下文信息中的外部配置文件的相关服务的信息,包括:
通过在所述外部配置文件中新增应用模块的初始化器引用该应用模块。
6.根据权利要求4所述的方法,其特征在于,所述根据所述应用模块拔插需求修改所述上下文信息中的外部配置文件的相关服务的信息,包括:
通过删除所述外部配置文件中应用模块的初始化器停用该应用模块。
7.根据权利要求4所述的方法,其特征在于,所述根据所述应用模块拔插需求修改所述上下文信息中的外部配置文件的相关服务的信息之后,还包括:
定时扫描所述上下文信息中的外部配置文件的相关服务的信息;
确认所述外部配置文件的相关服务的信息中增加了应用模块关联特性的服务的信息,自动化加载该应用模块;或,
确认所述外部配置文件的相关服务的信息中删除了应用模块关联特性的服务的信息,自动化卸载该应用模块。
8.一种动态加载装置,其特征在于,包括:
读取模块,用于串行化读取软件开发工具包模块中外部配置文件的相关服务类,所述相关服务类包括软件开发工具包模块的服务类以及所述软件开发工具包模块中关联方***的关联模块的服务类;
初始化模块,用于初始化所述相关服务类中的相关服务;
存入模块,用于将所述初始化后的相关服务的信息存入所述软件开发工具包模块的上下文信息。
9.一种存储设备,其特征在于,其上存储有计算机程序;所述计算机程序适于由处理器加载并执行上述权利要求1至3中任一项所述的动态加载方法;或,所述计算机程序适于由处理器加载并执行上述权利要求4至7中任一项所述的应用模块拔插方法。
10.一种计算机设备,其特征在于,其包括:
一个或多个处理器;
存储器;
一个或多个应用程序,其中所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个应用程序配置用于执行根据权利要求1至3中任一项所述的动态加载方法;或,所述计算机程序适于由处理器加载并执行根据权利要求4至7中任一项所述的应用模块拔插方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810931288.2A CN109284143B (zh) | 2018-08-15 | 动态加载方法、装置及应用模块拔插方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810931288.2A CN109284143B (zh) | 2018-08-15 | 动态加载方法、装置及应用模块拔插方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109284143A true CN109284143A (zh) | 2019-01-29 |
CN109284143B CN109284143B (zh) | 2024-07-30 |
Family
ID=
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112799641A (zh) * | 2020-12-31 | 2021-05-14 | 苏州科达科技股份有限公司 | 扩展软件开发包的方法、装置、电子设备及存储介质 |
CN114528045A (zh) * | 2022-02-17 | 2022-05-24 | 武汉联影智融医疗科技有限公司 | 插件操作方法、装置、计算机设备和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101078995A (zh) * | 2007-06-08 | 2007-11-28 | 北京大学 | 构件运行支撑平台接入消息服务的方法 |
CN107205015A (zh) * | 2017-04-14 | 2017-09-26 | 阿里巴巴集团控股有限公司 | 开放接口的实现方法和装置 |
US20170351504A1 (en) * | 2016-06-03 | 2017-12-07 | Afero, Inc. | Integrated development tool with preview functionality for an internet of things (iot) system |
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101078995A (zh) * | 2007-06-08 | 2007-11-28 | 北京大学 | 构件运行支撑平台接入消息服务的方法 |
US20170351504A1 (en) * | 2016-06-03 | 2017-12-07 | Afero, Inc. | Integrated development tool with preview functionality for an internet of things (iot) system |
CN107205015A (zh) * | 2017-04-14 | 2017-09-26 | 阿里巴巴集团控股有限公司 | 开放接口的实现方法和装置 |
Non-Patent Citations (3)
Title |
---|
MAOZONEL: ""jave SPI机制分析"", pages 1 - 6, Retrieved from the Internet <URL:《https://blog.csdn.net/u014730001/article/details/80109401》> * |
一灰灰BLOG: ""SPI框架实现之旅一:背景介绍"", pages 1 - 4, Retrieved from the Internet <URL:《https://cloud.tencent.com/developer/user/1214890》> * |
崔行臣 等: "Java动态类加载机制分析及其应用", 计算机***应用, vol. 22, no. 07, 15 July 2013 (2013-07-15), pages 187 - 191 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112799641A (zh) * | 2020-12-31 | 2021-05-14 | 苏州科达科技股份有限公司 | 扩展软件开发包的方法、装置、电子设备及存储介质 |
CN114528045A (zh) * | 2022-02-17 | 2022-05-24 | 武汉联影智融医疗科技有限公司 | 插件操作方法、装置、计算机设备和存储介质 |
CN114528045B (zh) * | 2022-02-17 | 2024-05-24 | 武汉联影智融医疗科技有限公司 | 插件操作方法、装置、计算机设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7797698B2 (en) | Method and apparatus for dynamic middleware assembly | |
US7752616B2 (en) | Update system capable of updating software | |
EP3570502A1 (en) | Control infrastructure | |
US20040194059A1 (en) | Method to deploy software using an open service gateway initiative (OSGi) framework | |
US8438577B2 (en) | Method and system for extending scripting languages | |
CN100492290C (zh) | 软件动态演化中构件运行时状态的获取和转换方法 | |
US7810102B2 (en) | Service adaptation of the enterprise services framework | |
US10296297B2 (en) | Execution semantics for sub-processes in BPEL | |
JP5542796B2 (ja) | モバイル・デバイス・ソフトウェアの管理方法及び装置 | |
CN106796521B (zh) | 独立于产品发布的api版本控制 | |
CN108363612A (zh) | 基于类装载器实现的j2ee模块热部署及调用信息统计方法 | |
US9552239B2 (en) | Using sub-processes across business processes in different composites | |
EP2685376B1 (en) | COBOL reference architecture | |
US7519801B2 (en) | Post-install configuration of modules during startup of a modular application platform | |
Stark et al. | JBoss Administration and Development | |
US11275567B1 (en) | Making communication interfaces pluggable by using mechanisms comprising of exchange/broker for communication interfaces | |
US20020056075A1 (en) | System for a run-time engine capable for pager capable remote device | |
Corradetti et al. | A renovated mobile agents middleware for WSN porting of Agilla to the TinyOS 2. x platform | |
EP2003843B1 (en) | Device for communicating in multiple modes using multi-mode applications | |
US11080102B2 (en) | System and method for developing modularized application | |
CN109284143A (zh) | 动态加载方法、装置及应用模块拔插方法 | |
US6721809B1 (en) | Method and apparatus for configuring extensible application programming interfaces | |
CA2543910C (en) | Method and system for extending scripting languages | |
KR101083090B1 (ko) | 기능별로 모듈화된 구조로 이루어진 모바일 플랫폼이 탑재된 이동통신단말, 그 모바일 플랫폼의 동작 방법 및 대기화면 어플리케이션 관리 방법 | |
US9141383B2 (en) | Subprocess definition and visualization in BPEL |
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 | ||
GR01 | Patent grant |