应用程序的配置文件更新方法及装置与流程

文档序号:17441380发布日期:2019-04-17 04:48阅读:274来源:国知局
应用程序的配置文件更新方法及装置与流程

本发明涉及数据处理技术领域,更具体的说,是涉及一种应用程序的配置文件更新方法及装置。



背景技术:

应用程序发布包中包含配置文件,该配置文件中存储有用于应用程序运行的配置信息,这些配置信息中,有一部分配置信息与应用程序的实际部署环境有关,在部署应用程序时,需要根据实际部署环境对这部分配置信息进行调整才能使应用程序正确运行。

目前,在部署应用程序时,上述配置信息多由工程人员根据实际部署环境手动调整,而手动调整的方式极易出现调整错误或调整信息不全的情况,导致应用程序运行出现异常。



技术实现要素:

鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的应用程序的配置文件更新方法及装置。具体方案如下:

一种应用程序的配置文件更新方法,所述方法包括:

从应用程序的部署目录中获取配置参数描述文件,所述配置参数描述文件包括至少一个待更新的配置节点及每个所述待更新的配置节点所包含的待更新的配置项;

确定所有待更新的配置项对应的值;

对每一个待更新的配置节点,从原始配置文件中确定与所述待更新的配置节点对应的目标配置节点,并将所述目标配置节点所包含的目标配置项的值更新为所述待更新的配置节点所包含的待更新的配置项对应的值;

在所有的待更新的配置项对应的值均更新至所述原始配置文件中以后,生成更新后的配置文件,以使所述应用程序采用所述更新后的配置文件进行启动。

可选地,所述方法还包括:

从应用程序的部署目录中获取原始配置文件;

备份所述原始配置文件。

可选地,所述确定所有待更新配置项对应的值,包括:

从环境变量、应用配置文件及配置中心中的任意一个或多个位置中获取待更新配置项对应的值;

和/或,从所述配置参数描述文件中确定待更新配置项的默认值。

可选地,在所述确定所有待更新配置项对应的值之后,所述方法还包括:

根据所述待更新的配置节点所包含的所述待更新的配置项的信息,将所述所有待更新的配置项对应的值进行分类合并,得到每个待更新的配置节点包含的待更新的配置项的值的集合。

可选地,所述从原始配置文件中确定与所述待更新的配置节点对应的目标配置节点,包括:

遍历原始配置文件中的配置节点;

如果所述原始配置文件中的配置节点中包括与所述待更新的配置节点对应的配置节点,则确定该配置节点为与所述待更新的配置节点对应的目标配置节点;

如果所述原始配置文件中的配置节点中不包括与所述待更新的配置节点对应的配置节点,则在所述原始配置文件中创建与所述待更新的配置节点对应的配置节点,并确定创建的配置节点为与所述待更新的配置节点对应的目标配置节点。

一种应用程序的配置文件更新装置,所述装置包括:

获取单元,用于从应用程序的部署目录中获取配置参数描述文件,所述配置参数描述文件包括至少一个待更新的配置节点及每个所述待更新的配置节点所包含的待更新的配置项;

确定单元,用于确定所有待更新的配置项对应的值;

更新单元,用于对每一个待更新的配置节点,从原始配置文件中确定与所述待更新的配置节点对应的目标配置节点,并将所述目标配置节点所包含的目标配置项的值更新为所述待更新的配置节点所包含的待更新的配置项对应的值;

生成单元,用于在所有的待更新的配置项对应的值均更新至所述原始配置文件中以后,生成更新后的配置文件,以使所述应用程序采用所述更新后的配置文件进行启动。

可选地,所述装置还包括:

备份单元,用于从应用程序的部署目录中获取原始配置文件;备份所述原始配置文件。

可选地,所述确定单元具体用于:

从环境变量、应用配置文件及配置中心中的任意一个或多个位置中获取待更新配置项对应的值;

和/或,从所述配置参数描述文件中确定待更新配置项的默认值。

可选地,所述装置还包括:

分类合并单元,用于在所述确定所有待更新配置项对应的值之后,根据所述待更新的配置节点所包含的所述待更新的配置项的信息,将所述所有待更新的配置项对应的值进行分类合并,得到每个待更新的配置节点包含的待更新的配置项的值的集合。

可选地,所述更新单元具体用于:

遍历原始配置文件中的配置节点;

如果所述原始配置文件中的配置节点中包括与所述待更新的配置节点对应的配置节点,则确定该配置节点为与所述待更新的配置节点对应的目标配置节点;

如果所述原始配置文件中的配置节点中不包括与所述待更新的配置节点对应的配置节点,则在所述原始配置文件中创建与所述待更新的配置节点对应的配置节点,并确定创建的配置节点为与所述待更新的配置节点对应的目标配置节点。

一种存储介质,所述存储介质存储有程序,以实现如上所述的应用程序的配置文件更新方法的步骤。

一种电子设备,包括:存储器和处理器;所述存储器存储有适于所述处理器执行的程序,以实现如上所述的应用程序的配置文件更新方法的步骤。

借由上述技术方案,本发明提供的应用程序的配置文件更新方法及装置,在应用程序的部署包中预设配置参数描述文件,当需要对应用程序的配置文件更新时,确定配置参数描述文件中指出的所有待更新配置项对应的值,并对每一个待更新的配置节点,从原始配置文件中确定与所述待更新的配置节点对应的目标配置节点,并将所述目标配置节点所包含的目标配置项的值更新为所述待更新的配置节点所包含的待更新的配置项对应的值;在所有的待更新的配置项对应的值均更新至所述原始配置文件中以后,生成更新后的配置文件,以使所述应用程序采用所述更新后的配置文件进行启动。通过上述方法及装置,使得工程人员在部署应用程序时,只需在约定位置提供必要参数配置信息,即可实现对应用程序的配置文件的自动更新,减少了人为修改出错的可能性,保证了应用程序正常运行。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,

+而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1为本发明实施例公开的一种应用程序的配置文件更新方法的流程示意图;

图2为本发明实施例公开的一种应用程序的配置文件更新装置的结构示意图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

请参阅附图1,图1为本发明实施例公开的一种应用程序的配置文件更新方法的流程示意图,应用程序的配置文件为xml(extentsiblemarkuplanguage,可扩展标记语言)文件,该方法包括:

步骤s100:从应用程序的部署目录中获取配置参数描述文件,所述配置参数描述文件包括至少一个待更新的配置节点及每个所述待更新的配置节点所包含的待更新的配置项;

在一种可实施方式中,配置参数描述文件为properties格式。

在一种可实施方式中,所述至少一个待更新的配置节点包括普通配置节点和成组配置节点两类,其中,普通配置节点为具有唯一性的配置节点,成组配置节点为包含多个配置项的配置节点。

在配置参数描述文件中,配置节点的名称由前缀、节点类型和节点逻辑名称这三部分组成,三部分之间用小数点(.)区分,具体示例如下:

普通配置节点示例:

ares.node.bus_ar=//parent[@parentname][1]

成组配置节点示例:

ares.groups.bus_ar=//parent[@parentname][1]/members,0,1

其中,前缀(上述示例中的“ares”)用于标识该配置节点所属的参数处理模块,节点类型为普通配置节点(上述示例中用node表示)或成组配置节点(上述示例中用groups表示),节点逻辑名称为字符串,定义为有助于用户识别的有实际意义的名称(如上述示例中示出的“bus_ar”)。普通配置节点的值为一个xpath表达式(如上述示例中的“//parent[@parentname][1]”),用于定位应用程序原始配置文件中的配置节点,成组配置节点的值由一个xpath表达式(如上述示例中的“//parent[@parentname][1]”)及若干个逻辑名称(如上述示例中的“members,0,1”)组成,逻辑名称用于标识成组配置节点包含的多个配置项,两个逻辑名称之间用英文逗号分隔。

在配置参数描述文件中,配置项的名称由前缀及若干个子属性名称组成,具体示例如下:

普通配置节点的配置项示例:

ares.node.bus_ar.poolsize=

ares.node.bus_ar.limit.licensefile=

成组配置节点的配置项示例:

ares.groups.bus_ar.0.member.no=

ares.groups.bus_ar.0.member.address=

ares.groups.bus_ar.0.member.port=

ares.groups.bus_ar.1.member.no=

文本属性示例:

ares.groups.eventchains.a.chain.text()=

ares.groups.eventchains.b.chain.text()=

其中,前缀(如上述示例中的“ares.node.bus_ar”及“ares.groups.bus_ar”)为该配置项所属的配置节点的名称。成组配置节点的配置项(如上述示例中的“ares.groups.bus_ar.0.member.no”)的若干个子属性名称(0.member.no)中,第一个子属性名称“0”为成组配置节点的一个逻辑名称,之后的子属性名称“member”用于标识子配置节点,最后的子属性名称“no”用于标识子配置节点的一个属性的名称。如果子配置节点的一个属性为文本属性,则用“text()”表示子属性名称。

步骤s110:确定所有待更新的配置项对应的值;

在一种可实施方式中,可从环境变量、应用配置文件和配置中心中的任意一个或多个位置获取所有待更新的配置项对应的值。从预设位置可能会获取同一个配置项的多个值,此时,可根据获取到的多个值的优先级,最终取优先级最高的值,在一种可实施方式中,优先级由获取时间点决定,获取时间点越靠后,值的优先级越高。应用程序的部署场景不同,预设位置也会不同,具体地,可结合应用程序的部署场景确定预设位置,从预设位置获取所有待更新的配置项对应的值。

所有待更新配置项对应的值可能不会全部从环境变量、应用配置文件及配置中心中的任意一个或多个位置中获取到,在一种可实施方式中,对于无法从环境变量、应用配置文件及配置中心中的任意一个或多个位置中获取到的待更新配置项,可从配置参数描述文件中确定这些待更新配置项的默认值。默认值存在为空的情况。

步骤s120:对每一个待更新的配置节点,从原始配置文件中确定与所述待更新的配置节点对应的目标配置节点,并将所述目标配置节点所包含的目标配置项的值更新为所述待更新的配置节点所包含的待更新的配置项对应的值;

在一种可实施方式中,从原始配置文件中确定与所述待更新的配置节点对应的目标配置节点可通过如下方式实现:

遍历原始配置文件中的配置节点;

如果所述原始配置文件中的配置节点中包括与所述待更新的配置节点对应的配置节点,则确定该配置节点为与所述待更新的配置节点对应的目标配置节点;

如果所述原始配置文件中的配置节点中不包括与所述待更新的配置节点对应的配置节点,则在所述原始配置文件中创建与所述待更新的配置节点对应的配置节点,并确定创建的配置节点为与所述待更新的配置节点对应的目标配置节点。

步骤s130:在所有的待更新的配置项对应的值均更新至所述原始配置文件中以后,生成更新后的配置文件,以使所述应用程序采用所述更新后的配置文件进行启动。

本发明实施例公开的应用程序的配置文件更新方法,在应用程序的部署包中预设配置参数描述文件,当需要对应用程序的配置文件更新时,确定配置参数描述文件中指出的所有待更新配置项对应的值,并对每一个待更新的配置节点,从原始配置文件中确定与所述待更新的配置节点对应的目标配置节点,并将所述目标配置节点所包含的目标配置项的值更新为所述待更新的配置节点所包含的待更新的配置项对应的值;在所有的待更新的配置项对应的值均更新至所述原始配置文件中以后,生成更新后的配置文件,以使所述应用程序采用所述更新后的配置文件进行启动。通过上述方法,使得工程人员在部署应用程序时,只需在约定位置提供必要参数配置信息,即可实现对应用程序的配置文件的自动更新,减少了人为修改出错的可能性,保证了应用程序正常运行。

在一种优选实施方式中,在采用上述实施例公开的应用程序的配置文件更新方法对应用程序的原始配置文件进行更新之前,还可从应用程序的部署目录中获取原始配置文件;备份所述原始配置文件,以防止应用程序的原始配置信息丢失。

在一种优选实施方式中,在所述确定所有待更新配置项对应的值之后,所述方法还包括:根据所述待更新的配置节点所包含的所述待更新的配置项的信息,将所述所有待更新的配置项对应的值进行分类合并,得到每个待更新的配置节点包含的待更新的配置项的值的集合。分类合并时,会去掉配置项的前缀,并排除配置项的值为空的配置项,以提高应用程序的配置文件的更新速度。

基于上述实施例,本发明实施例还公开了一种应用程序的配置文件更新方法的具体示例,具体如下:

原始xml配置文件片段如下:

配置参数描述文件片段如下:

包含待更新的配置项对应的值的配置片段如下:

最终得到的xml配置文件片段如下:

请参阅附图2,图2为本发明实施例公开的一种应用程序的配置文件更新装置的结构示意图,该装置包括:

获取单元20,用于从应用程序的部署目录中获取配置参数描述文件,所述配置参数描述文件包括至少一个待更新的配置节点及每个所述待更新的配置节点所包含的待更新的配置项;

确定单元21,用于确定所有待更新的配置项对应的值;

更新单元22,用于对每一个待更新的配置节点,从原始配置文件中确定与所述待更新的配置节点对应的目标配置节点,并将所述目标配置节点所包含的目标配置项的值更新为所述待更新的配置节点所包含的待更新的配置项对应的值;

生成单元23,用于在所有的待更新的配置项对应的值均更新至所述原始配置文件中以后,生成更新后的配置文件,以使所述应用程序采用所述更新后的配置文件进行启动。

可选地,所述装置还包括:

备份单元,用于从应用程序的部署目录中获取原始配置文件;备份所述原始配置文件。

可选地,所述确定单元具体用于:

从环境变量、应用配置文件及配置中心中的任意一个或多个位置中获取待更新配置项对应的值;

和/或,从所述配置参数描述文件中确定待更新配置项的默认值。

可选地,所述装置还包括:

分类合并单元,用于在所述确定所有待更新配置项对应的值之后,根据所述待更新的配置节点所包含的所述待更新的配置项的信息,将所述所有待更新的配置项对应的值进行分类合并,得到每个待更新的配置节点包含的待更新的配置项的值的集合。

可选地,所述更新单元具体用于:

遍历原始配置文件中的配置节点;

如果所述原始配置文件中的配置节点中包括与所述待更新的配置节点对应的配置节点,则确定该配置节点为与所述待更新的配置节点对应的目标配置节点;

如果所述原始配置文件中的配置节点中不包括与所述待更新的配置节点对应的配置节点,则在所述原始配置文件中创建与所述待更新的配置节点对应的配置节点,并确定创建的配置节点为与所述待更新的配置节点对应的目标配置节点。

需要说明的是,上述各个单元的具体功能实现已在方法实施例中详细说明,本实施例不再赘述。

所述应用程序的配置文件更新装置包括处理器和存储器,上述获取单元、确定单元、更新单元和生成单元等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。

处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来实现应用程序的配置文件的自动更新。

存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram),存储器包括至少一个存储芯片。

本发明实施例提供了一种存储介质,其上存储有程序,该程序被处理器执行时实现所述应用程序的配置文件更新方法。

本发明实施例提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行所述应用程序的配置文件更新方法。

本发明实施例提供了一种设备,设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现以下步骤:

从应用程序的部署目录中获取配置参数描述文件,所述配置参数描述文件包括至少一个待更新的配置节点及每个所述待更新的配置节点所包含的待更新的配置项;

确定所有待更新的配置项对应的值;

对每一个待更新的配置节点,从原始配置文件中确定与所述待更新的配置节点对应的目标配置节点,并将所述目标配置节点所包含的目标配置项的值更新为所述待更新的配置节点所包含的待更新的配置项对应的值;

在所有的待更新的配置项对应的值均更新至所述原始配置文件中以后,生成更新后的配置文件,以使所述应用程序采用所述更新后的配置文件进行启动。

可选地,所述方法还包括:

从应用程序的部署目录中获取原始配置文件;

备份所述原始配置文件。

可选地,所述确定所有待更新配置项对应的值,包括:

从环境变量、应用配置文件及配置中心中的任意一个或多个位置中获取待更新配置项对应的值;

和/或,从所述配置参数描述文件中确定待更新配置项的默认值。

可选地,在所述确定所有待更新配置项对应的值之后,所述方法还包括:

根据所述待更新的配置节点所包含的所述待更新的配置项的信息,将所述所有待更新的配置项对应的值进行分类合并,得到每个待更新的配置节点包含的待更新的配置项的值的集合。

可选地,所述从原始配置文件中确定与所述待更新的配置节点对应的目标配置节点,包括:

遍历原始配置文件中的配置节点;

如果所述原始配置文件中的配置节点中包括与所述待更新的配置节点对应的配置节点,则确定该配置节点为与所述待更新的配置节点对应的目标配置节点;

如果所述原始配置文件中的配置节点中不包括与所述待更新的配置节点对应的配置节点,则在所述原始配置文件中创建与所述待更新的配置节点对应的配置节点,并确定创建的配置节点为与所述待更新的配置节点对应的目标配置节点。

本文中的设备可以是服务器、pc、pad、手机等。

本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:

从应用程序的部署目录中获取配置参数描述文件,所述配置参数描述文件包括至少一个待更新的配置节点及每个所述待更新的配置节点所包含的待更新的配置项;

确定所有待更新的配置项对应的值;

对每一个待更新的配置节点,从原始配置文件中确定与所述待更新的配置节点对应的目标配置节点,并将所述目标配置节点所包含的目标配置项的值更新为所述待更新的配置节点所包含的待更新的配置项对应的值;

在所有的待更新的配置项对应的值均更新至所述原始配置文件中以后,生成更新后的配置文件,以使所述应用程序采用所述更新后的配置文件进行启动。

可选地,所述方法还包括:

从应用程序的部署目录中获取原始配置文件;

备份所述原始配置文件。

可选地,所述确定所有待更新配置项对应的值,包括:

从环境变量、应用配置文件及配置中心中的任意一个或多个位置中获取待更新配置项对应的值;

和/或,从所述配置参数描述文件中确定待更新配置项的默认值。

可选地,在所述确定所有待更新配置项对应的值之后,所述方法还包括:

根据所述待更新的配置节点所包含的所述待更新的配置项的信息,将所述所有待更新的配置项对应的值进行分类合并,得到每个待更新的配置节点包含的待更新的配置项的值的集合。

可选地,所述从原始配置文件中确定与所述待更新的配置节点对应的目标配置节点,包括:

遍历原始配置文件中的配置节点;

如果所述原始配置文件中的配置节点中包括与所述待更新的配置节点对应的配置节点,则确定该配置节点为与所述待更新的配置节点对应的目标配置节点;

如果所述原始配置文件中的配置节点中不包括与所述待更新的配置节点对应的配置节点,则在所述原始配置文件中创建与所述待更新的配置节点对应的配置节点,并确定创建的配置节点为与所述待更新的配置节点对应的目标配置节点。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。

存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。存储器是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

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

本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

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