动态加载方法及装置与流程

文档序号:30963276发布日期:2022-07-30 15:03阅读:155来源:国知局
动态加载方法及装置与流程

1.本发明涉及软件技术,具体的讲是一种动态加载方法及装置。


背景技术:

2.当前使用java语言进行开发时,遇到业务变更或新需求时需要进行代码开发,然后进行编译发版,发版的时候需要暂停服务的使用,多数公司在发版时会选择几种模式进行,包括:选择在凌晨用户使用最少进行停机发版;或者,灰度发布,即停机一部分服务,将前端访问路由到另外一批没有停机的旧服务。
3.现有技术的两种发布方案,第一种整体停机需要发布公告,用户在停机期间无法使用,影响客户正常使用,第二种灰度发布也是需要停机一部分服务,可能存在操作上失误影响到用户使用等问题。


技术实现要素:

4.针对现有技术中动态加载及业务变更时存在的缺陷,为克服其存在的至少一技术问题,本发明提供了一种动态加载方法,包括:
5.接收调用方的服务调用请求;
6.根据所述服务调用请求获取根据加载配置信息;
7.根据所述加载配置信息生成加载文件进行调用方的动态加载。
8.本发明实施例中,所述的根据所述服务调用请求获取根据加载配置信息包括:
9.对服务调用请求中的接口信息对服务提供方接口进行安全验证;
10.验证通过后接收服务提供方提供的加载配置信息。
11.本发明实施例中,所述的加载配置信息包括:服务提供方接口访问路径、接口名称、入参的映射、参数格式以及参数类型。
12.本发明实施例中,所述的验证通过后接收服务提供方提供的加载配置信息包括:
13.获取预先配置的模板;
14.接收服务提供方根据预先配置的模板提供的加载配置信息。
15.本发明实施例中,所述的加载文件为java class文件。
16.本发明实施例中,所述的根据所述加载配置信息生成加载文件进行调用方的动态加载包括:
17.根据所述加载配置信息利用动态编译生成java class加载文件;
18.根据生成的java class加载文件进行调用方的动态加载。
19.本发明实施例中,所述的接收调用方的服务调用请求包括:
20.根据调用请求中的调用方信息对调用方进行安全验证。
21.同时,本发明提供一种动态加载装置,包括:
22.请求接收模块,用于接收调用方的服务调用请求;
23.配置信息获取模块,用于根据所述服务调用请求获取根据加载配置信息;
24.加载模块,用于根据所述加载配置信息生成加载文件进行调用方的动态加载。
25.本发明实施例中,所述的装置包括:
26.验证模块,用于对服务调用请求中的接口信息对服务提供方接口进行安全验证,验证通过后接收服务提供方提供的加载配置信息;
27.验证模块还用于根据调用请求中的调用方信息对调用方进行安全验证。
28.本发明实施例中,所述的配置信息获取模块包括:
29.模板确定单元,用于根据所述服务调用请求获取预先配置的模板;
30.配置信息接收单元,用于接收服务提供方根据预先配置的模板提供的加载配置信息。
31.本发明实施例中,所述的加载模块包括:
32.文件编译单元,用于根据所述加载配置信息利用动态编译生成java class加载文件;
33.加载单元,用于根据生成的java class加载文件进行调用方的动态加载。
34.同时,本发明还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述方法。
35.同时,本发明还提供一种计算机可读存储介质,计算机可读存储介质存储有执行上述方法的计算机程序。
36.本发明提供了一种动态加载方法及装置,根据服务调用请求获取根据加载配置信息,根据加载配置信息生成加载文件进行调用方的动态加载,可以实现不需要暂停服务的时候进行业务逻辑代码的更新,还可以结合设计模式实现的类的代码可以通过上述方式动态生成后满足新的需求并且无需重新发版。
37.为让本发明的上述和其他目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。
附图说明
38.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
39.图1为本发明提供的动态加载方法的流程图;
40.图2为本发明实施例中的示意图;
41.图3为本发明实施例中的示意图;
42.图4为本发明实施例中的代码截图;
43.图5为本发明提供的动态加载装置的框图;
44.图6为本发明提供的电子设备实施例的示意图。
具体实施方式
45.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于
本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
46.当前使用java语言进行开发时,遇到业务变更或新需求时需要进行代码开发,然后进行编译发版,发版的时候需要暂停使用,现有技术中,选择在凌晨用户使用最少进行停机发版,由于是整体停机,需要发布公告,用户在停机期间无法使用,影响客户正常使用;灰度发布,也是需要停机一部分服务,可能存在操作上失误影响到用户使用等问题。
47.有鉴于此,本发明提供一种动态加载方法,在业务变更时进行代码开发及编译发版,如图1所示,为本发明提供的动态加载方法的流程图,其包括:
48.步骤s101,接收调用方的服务调用请求;
49.步骤s102,根据所述服务调用请求获取根据加载配置信息;
50.步骤s103,根据所述加载配置信息生成加载文件进行调用方的动态加载。
51.本发明提供的动态加载方法,其通过服务调用平台根据加载配置信息生成加载文件进行调用方的动态加载,克服现有技术中,动态加载过程中,需要开发人员根据第三方提供的开发文档进行代码编写,进行加载调用时的安全验证,然后进行加载、联调及上线。
52.本发明提供的动态加载方法,提供了一种可以不通过重新发版实现一些业务需求变更的需求的方法。
53.本发明实施例主要利用freemarker模板加javacompiler(动态编译)实现在运行时态创建class文件并加载到内存中,可以做到不用关闭服务,生成的class文件中业务代码也同时生效。
54.javacompiler(动态编译)即一个用来调用java语言编译器的接口,用它可以实现对其他路径下或者远程代码的编译。
55.freemarker是一款模板引擎:即一种基于模板和要改变的数据,并用来生成输出文本(html网页、电子邮件、配置文件、源代码等)的通用工具。它不是面向最终用户的,而是一个java类库,是一款程序员可以嵌入开发产品的组件。freemarker是免费的,其模板编写为freemarker template language(ftl),属于简单、专用的语言。需要准备数据在真实编程语言中来显示,比如数据库查询和业务运算,之后模板显示已经准备好的数据。在模板中,主要用于如何展现数据,而在模板之外注意于要展示什么数据。
56.本实施例中提供一款产品,解决应用和应用之间调用问题,以能够减少调用方的开发工作量,实现配置级接入时使用到此技术。
57.现有技术中,调用一个第三方服务方b提供的服务,需要开发人员根据第三方服务方b提供开发文档进行编写代码,进行调用时的安全验证,然后进行联调、上线等。如图2所示,为现有技术中调用方a调用第三方服务方b提供的服务的流程。
58.本实施例可以解决在调用三方时安全验证等问题,通过在中间平台封装一层服务供调用方调用,平台的安全验证模式都是一套,接入一次即可,然后在提供的平台页面将真实需要调用的三方服务接口进行设置后,平台生成新的class类的业务逻辑代码进行转发;
59.如图3所示,为本实施例提供的进行服务调用的示意图。增加平台c后,调用方a就不用直接调用服务方b了,首先调用方a需要接入平台c,满足c的验证方式、安全权限验证等(因为平台c对于调用方a来说也是一个服务提供方),当调用方a接入c后,可以在平台c提供的页面上配置接入服务方b,而服务方b的验证方式、安全权限验证通过平台c的页面配置即
可,无需进行二次开发,这样就做到了,调用方a接入平台c后,以后再想调用其他服务提供方d、e、f等,都不需要调用方a来进行开发,只需要在平台c上进行配置对应d、e、f的验证方式、安全权限验证即可。平台c相当于做了一次中转的概念,通过配置级接入来减少接入第三方的开发代码工作量(第三方指服务方b、d、e、f等等)。
60.本发明实施例中,所述的根据所述服务调用请求获取根据加载配置信息包括:
61.对服务调用请求中的接口信息对服务提供方接口进行安全验证;
62.验证通过后接收服务提供方提供的加载配置信息。
63.本实施例中的验证安全、权限都是平台c的要求,因为a需要接入平台c(c对于a来说也是服务提供方),而平台c的验证安全、权限都是我们来开发实现的,所以可以理解为c的验证安全、权限都是固定的。
64.在封装新的接口/platfrom/user/info时,已经部署的代码中并没有,本实施例中用户在平台进行设置时可以自行设定的,而调用方a调用的也是/platfrom/user/info这个接口,通过此接口的实现逻辑验证安全、权限后需要调用真实的/gov/user/info路径来实现请求。
65.本发明实施例中,生成接口/platfrom/user/info,使用的技术是利用freemarker+javacompiler技术,提前在代码中利用freemarker中提前设置一套模板代码,其中一部分内容需要用户在页面配置好后进行替换。
66.本发明实施例中,所述的加载配置信息包括:服务提供方接口访问路径、接口名称、入参的映射、参数格式以及参数类型。
67.本发明实施例中,所述的验证通过后接收服务提供方提供的加载配置信息包括:
68.获取预先配置的模板;
69.接收服务提供方根据预先配置的模板提供的加载配置信息。
70.本发明实施例中,所述的加载文件为java class文件。
71.本发明实施例中,所述的根据所述加载配置信息生成加载文件进行调用方的动态加载包括:
72.根据所述加载配置信息利用动态编译生成java class加载文件;
73.根据生成的java class加载文件进行调用方的动态加载。
74.如图4所示,为本实施例中的一部分代码实现,方框里的内容就是在freemarker提前设置好的模板变量,将此模板放到平台c的代码工程里,通过平台c的页面进行配置后,来替换方框里的内容,然后通过javacompiler来将此段代码最后生成class文件并进行动态加载。比如:页面输入path:user,name:hello,那么红框第一个就变成user,第二个红框就变成hello,然后将这个生成好的行程class文件进行动态加载。
75.当用户编辑完,利用javacompiler实现将内容替换好后的模板生成class文件,并加载到当前运行的内存中,用户可以调用/platfrom/user/info接口(注意:在之前的服务中是没有/platfrom/user/info接口供调用方使用)。
76.class文件全称java class文件,为java程序提供独立于底层主机平台的二进制形式的服务。
77.因为java通过编译器后生成的就是class文件然后可以跨平台编译,而且生成class文件后,当再次启动这个服务的时候,也可以保证之前设置的class文件生效,也就是
说保证之前输入的接口访问路径都是有效的。
78.本发明实施例可以实现不需要暂停服务的时候进行一些业务逻辑代码的更新,比如上述的产品提供方式,还可以结合设计模式,如:工厂模式、代理模式时,需要实现的类的代码可以通过上述方式动态生成后满足新的需求并且不要重新发版。
79.同时,如图5所示,本发明提供一种动态加载装置,包括:
80.请求接收模块501,用于接收调用方的服务调用请求;
81.配置信息获取模块502,用于根据所述服务调用请求获取根据加载配置信息;
82.加载模块503,用于根据所述加载配置信息生成加载文件进行调用方的动态加载。
83.对本领域技术人员而言,通过前述实施例的描述可清楚获知本发明提供的动态记载装置的实现方式,在此不再赘述。
84.需要说明的是,本公开动态加载方法和装置可用于金融领域产品的动态加载,也可用于除金融领域之外的任意领域的动态加载,本公开动态加载方法和装置的应用领域不做限定。
85.本实施例还提供一种电子设备,该电子设备可以是台式计算机、平板电脑及移动终端等,本实施例不限于此。在本实施例中,该电子设备可以参照前述方法及装置的实施例,其内容被合并于此,重复之处不再赘述。
86.图6为本发明实施例的电子设备600的系统构成的示意框图。如图6所示,该电子设备600可以包括中央处理器100和存储器140;存储器140耦合到中央处理器100。值得注意的是,该图是示例性的;还可以使用其他类型的结构,来补充或代替该结构,以实现电信功能或其他功能。
87.一实施例中,动态加载功能可以被集成到中央处理器100中。其中,中央处理器100可以被配置为进行如下控制:
88.接收调用方的服务调用请求;
89.根据所述服务调用请求获取根据加载配置信息;
90.根据所述加载配置信息生成加载文件进行调用方的动态加载。
91.在另一个实施方式中,动态加载装置可以与中央处理器100分开配置,例如可以将动态加载装置配置为与中央处理器100连接的芯片,通过中央处理器的控制来实现动态加载功能。
92.如图6所示,该电子设备600还可以包括:通信模块110、输入单元120、音频处理单元130、显示器160、电源170。值得注意的是,电子设备600也并不是必须要包括图6中所示的所有部件;此外,电子设备600还可以包括图6中没有示出的部件,可以参考现有技术。
93.如图6所示,中央处理器100有时也称为控制器或操作控件,可以包括微处理器或其他处理器装置和/或逻辑装置,该中央处理器100接收输入并控制电子设备600的各个部件的操作。
94.其中,存储器140,例如可以是缓存器、闪存、硬驱、可移动介质、易失性存储器、非易失性存储器或其它合适装置中的一种或更多种。可储存上述与失败有关的信息,此外还可存储执行有关信息的程序。并且中央处理器100可执行该存储器140存储的该程序,以实现信息存储或处理等。
95.输入单元120向中央处理器100提供输入。该输入单元120例如为按键或触摸输入
装置。电源170用于向电子设备600提供电力。显示器160用于进行图像和文字等显示对象的显示。该显示器例如可为lcd显示器,但并不限于此。
96.该存储器140可以是固态存储器,例如,只读存储器(rom)、随机存取存储器(ram)、sim卡等。还可以是这样的存储器,其即使在断电时也保存信息,可被选择性地擦除且设有更多数据,该存储器的示例有时被称为eprom等。存储器140还可以是某种其它类型的装置。存储器140包括缓冲存储器141(有时被称为缓冲器)。存储器140可以包括应用/功能存储部142,该应用/功能存储部142用于存储应用程序和功能程序或用于通过中央处理器100执行电子设备600的操作的流程。
97.存储器140还可以包括数据存储部143,该数据存储部143用于存储数据,例如联系人、数字数据、图片、声音和/或任何其他由电子设备使用的数据。存储器140的驱动程序存储部144可以包括电子设备的用于通信功能和/或用于执行电子设备的其他功能(如消息传送应用、通讯录应用等)的各种驱动程序。
98.通信模块110即为经由天线111发送和接收信号的发送机/接收机110。通信模块(发送机/接收机)110耦合到中央处理器100,以提供输入信号和接收输出信号,这可以和常规移动通信终端的情况相同。
99.基于不同的通信技术,在同一电子设备中,可以设置有多个通信模块110,如蜂窝网络模块、蓝牙模块和/或无线局域网模块等。通信模块(发送机/接收机)110还经由音频处理器130耦合到扬声器131和麦克风132,以经由扬声器131提供音频输出,并接收来自麦克风132的音频输入,从而实现通常的电信功能。音频处理器130可以包括任何合适的缓冲器、解码器、放大器等。另外,音频处理器130还耦合到中央处理器100,从而使得可以通过麦克风132能够在本机上录音,且使得可以通过扬声器131来播放本机上存储的声音。
100.本发明实施例还提供一种计算机可读程序,其中当在电子设备中执行所述程序时,所述程序使得计算机在所述电子设备中执行如上面实施例所述的动态加载方法。
101.本发明实施例还提供一种存储有计算机可读程序的存储介质,其中所述计算机可读程序使得计算机在电子设备中执行上面实施例所述的动态加载。
102.以上参照附图描述了本发明的优选实施方式。这些实施方式的许多特征和优点根据该详细的说明书是清楚的,因此所附权利要求旨在覆盖这些实施方式的落入其真实精神和范围内的所有这些特征和优点。此外,由于本领域的技术人员容易想到很多修改和改变,因此不是要将本发明的实施方式限于所例示和描述的精确结构和操作,而是可以涵盖落入其范围内的所有合适修改和等同物。
103.本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
104.本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产
生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
105.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
106.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
107.本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1