本发明涉及计算机,特别涉及页面编译阶段的类加载方法、装置、设备及存储介质。
背景技术:
1、通常情况下,一个类在web(互联网总称)应用的目录类库和jar文件类库中只存在一份类文件,即两个类库二选一进行存放。但是有部分场景(应用书写不规范场景),一个类可能既存在于web应用目录类库中,也存在于web应用jar(一种计算机文件格式)文件类库中(可能存在不止一个jar文件),即会存在同一个类在web应用中存在多份类文件,而且每份类文件中的内容并不一致的情况。此部分场景中,在jsp(java server page,一种动态网页技术标准)编译阶段,正确查找所需类的顺序是:web应用目录类库、web应用jar文件类库,即优先从web应用目录类库中查找,然后再从web应用jar文件类库中查找,通过此顺序可以查找到所需的正确类文件,然而在jsp编译阶段,应用服务器为其设定的类路径,即通过应用层类加载器返回的类路径数组对象(实际是经过了jdk(java development kit,java语言的软件开发工具包)的普通哈希集合类处理)是乱序的,因此在上述部分场景下,即同一个类在web应用中存在多份类文件的情况,且每份类文件中的内容并不一致,为了保证在jsp编译阶段应用服务器可以查找到所需的正确类文件,需要暂时将其余的类文件全部注释或删除,只保留一份正确的类文件(实际上只保留正确类路径顺序中最靠前的一份,即从web应用目录类库到web应用jar文件类库,在此顺序中优先级最高的一份类文件)才可保障jsp编译成功,应用运行正常,但是当前并未按正确的查找顺序查找类文件,导致查找到错误的类,进而导致jsp编译失败,jsp运行出现异常。目前修改web应用层的文件,使应用开发变的不灵活、修改相对困难;修改web应用层的文件,不方便应用服务器及web应用后续的运行及维护工作,使运维工作变得非常困难、繁琐、冗余。
技术实现思路
1、有鉴于此,本发明的目的在于提供页面编译阶段的类加载方法、装置、设备和存储介质,能够按照类路径目标数组对象确定类的加载顺序,保障页面编译成功以及应用正常稳定的运行,减少运维人员的工作量,简化了运维的流程,增强了运维的灵活性以及应用服务器的兼容性。其具体方案如下:
2、第一方面,本发明公开了页面编译阶段的类加载方法,包括:
3、确定待部署应用,并将满足预设部署要求的所述待部署应用部署至目标应用服务器;
4、利用应用层类加载器解析所述目标应用服务器,以读取目标类库,并将所述目标类库存放至对应的目标数组对象;
5、将所述目标数组对象中的全部元素按照第一预设元素添加顺序添加至链表哈希集合类对象,以得到类路径目标数组对象;
6、将所述类路径目标数组对象发送至所述目标应用服务器并基于所述类路径目标数组对象执行页面编译操作。
7、另一方面,所述确定待部署应用,并将满足预设部署要求的所述待部署应用部署至目标应用服务器,包括:
8、确定待部署应用,并确定所述待部署应用包含的服务器页面;
9、判断所述服务器页面对应的目标类是否在所述待部署应用中存在超出预设数量的类文件;
10、若所述目标类在所述目标类库中包含的目录类库以及jar文件类库中存在内容不同的所述类文件,则判定所述目标类在所述待部署应用中存在超出预设数量的所述类文件;
11、当所述目标类在所述待部署应用中存在超出预设数量的所述类文件时,判定满足所述预设部署要求,并将所述待部署应用部署至所述目标应用服务器。
12、另一方面,所述利用应用层类加载器解析所述目标应用服务器,以读取目标类库,并将所述目标类库存放至对应的目标数组对象,包括:
13、获取所述目标应用服务器对应的预创建的所述应用层类加载器,并利用所述应用层类加载器扫描并读取所述目标类库;其中,所述目标类库包含所述目录类库以及所述jar文件类库;
14、将所述目录类库存放至对应的目录文件数组对象,将所述jar文件类库存放至对应的jar文件数组对象;
15、将所述目录文件数组对象以及所述jar文件数组对象确定为所述目标数组对象。
16、另一方面,所述将所述jar文件类库存放至对应的jar文件数组对象,包括:
17、获取所述jar文件类库中全部的jar文件元素的元素名称,并计算每个所述元素名称对应的ascii码;
18、基于所述ascii码将全部所述jar文件元素进行排序,以得到排序后jar文件元素;
19、将所述排序后jar文件元素存放至对应的所述jar文件数组对象。
20、另一方面,所述将所述目标数组对象中的全部元素按照第一预设元素添加顺序添加至链表哈希集合类对象,以得到类路径目标数组对象,包括:
21、利用java语言的new关键字创建软件开发工具包的所述链表哈希集合类对象;所述链表哈希集合类在添加元素时按照第二预设元素添加顺序进行添加;
22、利用所述java语言的for循环方式遍历所述目录文件数组对象中的元素,并基于所述第一预设元素添加顺序将所述目录文件数组对象中的元素依次添加至所述链表哈希集合类对象;
23、利用所述java语言的所述for循环方式遍历所述jar文件数组对象中的元素,并基于所述第一预设元素添加顺序将所述jar文件数组对象中的元素依次添加至所述链表哈希集合类对象,以得到目标链表哈希集合类对象;
24、将所述目标链表哈希集合类对象转换为所述类路径目标数组对象。
25、另一方面,所述将所述类路径目标数组对象发送至所述目标应用服务器之后,还包括:
26、遍历所述类路径目标数组对象中的元素,以便将所述类路径目标数组对象中的元素通过字符串进行连接,并利用路径分隔符分隔所述类路径目标数组对象中的元素,得到类路径字符串;
27、将所述类路径字符串设置至服务器端程序上下文的类路径属性中。
28、另一方面,所述基于所述类路径目标数组对象执行页面编译操作,包括:
29、接收页面访问指令,并获取所述页面访问指令对应的当前类路径属性,以得到对应的当前类路径字符串;
30、基于所述当前类路径字符串查找与所述页面访问指令对应的目标类文件,并基于所述目标类文件执行所述页面编译操作,得到编译成功页面。
31、第二方面,本发明公开了页面编译阶段的类加载装置,包括:
32、应用部署模块,用于确定待部署应用,并将满足预设部署要求的所述待部署应用部署至目标应用服务器;
33、目标类库存放模块,用于利用应用层类加载器解析所述目标应用服务器,以读取目标类库,并将所述目标类库存放至对应的目标数组对象;
34、元素添加模块,用于将所述目标数组对象中的全部元素按照第一预设元素添加顺序添加至链表哈希集合类对象,以得到类路径目标数组对象;
35、页面编译模块,用于将所述类路径目标数组对象发送至所述目标应用服务器并基于所述类路径目标数组对象执行页面编译操作。
36、第三方面,本发明公开了一种电子设备,包括:
37、存储器,用于保存计算机程序;
38、处理器,用于执行所述计算机程序,以实现如前述公开的页面编译阶段的类加载方法的步骤。
39、第四方面,本发明公开了一种计算机可读存储介质,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现如前述公开的页面编译阶段的类加载方法。
40、可见,本发明提供了页面编译阶段的类加载方法,包括:确定待部署应用,并将满足预设部署要求的所述待部署应用部署至目标应用服务器;利用应用层类加载器解析所述目标应用服务器,以读取目标类库,并将所述目标类库存放至对应的目标数组对象;将所述目标数组对象中的全部元素按照第一预设元素添加顺序添加至链表哈希集合类对象,以得到类路径目标数组对象;将所述类路径目标数组对象发送至所述目标应用服务器并基于所述类路径目标数组对象执行页面编译操作。由此可见,本发明通过使用链表哈希集合类对象,将目标数组对象中的所有元素按顺序进行添加,使得元素可以始终保持正确的顺序,完善在页面编译阶段的类加载顺序处理机制,服务器能够按照类路径目标数组对象确定类的加载顺序,保障页面编译成功以及应用正常稳定的运行,减少运维人员的工作量,简化了运维的流程,增强了运维的灵活性以及应用服务器的兼容性。