【发明内容】
鉴于上述状况,有必要提供一种便于对Web应用程序的版本进行管理的Web应用程序升级方法。
一种Web应用程序升级方法,包括以下步骤:
获取最新的升级包,并将所述最新的升级包加载到缓存;
获取Web应用访问请求,并根据所述最新的升级包更新应用程序。
进一步地,所述获取最新的升级包,并将所述最新的升级包加载到缓存的步骤包括:
检测是否有最新的升级包;
当检测到有最新的升级包时,获取升级包存储路径;
从所述升级包存储路径获取所述最新的升级包,并将所述最新的升级包加载到缓存。
进一步地,所述根据所述最新的升级包更新应用程序的步骤包括:
从所述缓存中获取所述最新的升级包,并将所述最新的升级包加载到Web容器内;
将所述应用程序的主程序加载到所述Web容器内,与所述最新的升级包组成更新后的应用程序,且不重复加载所述主程序中与所述最新的升级包对应的部分。
进一步地,所述根据所述最新的升级包更新应用程序的步骤还包括:加载所述主程序到所述缓存,且不重复加载所述主程序中与所述最新的升级包对应的部分。
进一步地,所述升级包为Jar包。
此外,还有必要提供一种便于对Web应用程序的版本进行管理的Web应用程序升级系统。所述系统包括:
缓存模块,用于获取最新的升级包,并将所述最新的升级包加载到缓存;
应用程序升级模块,用于获取Web应用访问请求,并根据所述最新的升级包更新应用程序。
进一步地,所述缓存模块包括:
监听器,用于检测是否有最新的升级包;
路径提取模块,用于当检测到有最新的升级包时,获取升级包存储路径;
升级包加载模块,用于从所述升级包存储路径获取所述最新的升级包,并将所述最新的升级包加载到缓存。
进一步地,所述应用程序升级模块包括:
第一加载模块,用于从所述缓存中获取所述最新的升级包,并将所述最新的升级包加载到Web容器内;
第二加载模块,用于将所述应用程序的主程序加载到所述Web容器内,与所述最新的升级包组成更新后的应用程序,且不重复加载所述主程序中与所述最新的升级包对应的部分。
进一步地,所述应用程序升级模块还包括主程序加载模块,所述主程序加载模块用于加载所述主程序到所述缓存,且不重复加载所述主程序中与所述最新的升级包对应的部分。
进一步地,所述升级包为Jar包。
上述Web应用程序升级方法及系统,先获取最新的升级包,并将最新的升级包加载到缓存。然后根据缓存中最新的升级包更新应用程序。不同的升级包对应着不同的应用程序。在升级的过程中,主程序中需要升级的部分未被覆盖,加载不同的升级包可以得到不同版本的应用程序,当程序出现故障时,可快速恢复原来的版本,且容易追查问题出现在哪个版本上。因此,通过上述方法及系统可便于对Web应用程序的版本进行管理。
【具体实施方式】
Web应用程序的主程序指的是应用程序开发完成初期的源程序主体,主程序可以完成应用程序所要完成的基本功能,但同时,主程序的某些部分存在漏洞,或者主程序的功能有待完善。
如图1所示,在一个实施例中,Web应用程序升级方法,包括以下步骤:
步骤S110,获取最新的升级包,并将最新的升级包加载到缓存。
升级包可以是针对应用程序的主程序中的漏洞而编辑的补丁,也可是为了对应用程序的功能进行升级而编辑的功能模块。在一个实施例中,包含有多个版本的升级包,多个版本的升级包存储在升级包存储路径下,且多个版本的升级包对应不同版本的应用程序,加载不同版本的升级包可更新得到不同版本的应用程序。在一个实施例中,升级包为Jar包以便于在JAVA系统中查找和加载升级包。
如图2所示,在一个实施例中,上述步骤S110具体包括以下步骤:
步骤S111,检测是否有最新的升级包。
在一个实施例中,配置监听程序,监听程序时刻监听升级包存储路径下是否有最新版本的升级包。当检测到有最新版本的升级包时,需要重新启动服务器,在重启完成后,监听程序首先控制缓存进行初始化,清除缓存内原有的数据,然后进入到步骤S113。
步骤S113,当检测到有最新的升级包时,获取升级包存储路径。
步骤S115,从升级包存储路径获取最新的升级包,并将最新的升级包加载到缓存。
缓存中原有的数据已经被清除,当加载最新版本的升级包到缓存中时,缓存中只存有最新版本的升级包。在一个实施例中,缓存为哈希表,其中主键为最新版本的升级包所对应的类的全名。
步骤S120,获取Web应用访问请求,并根据最新的升级包更新应用程序。
在一个实施例中,不同版本的升级包对应着不同版本的应用程序,缓存中存在最新版本的升级包,因此可以根据缓存中最新版本的升级包将应用程序升级成最新版本的应用程序。
如图3所示,在一个实施例中,步骤S120具体包括以下步骤:
步骤S121,从缓存中获取最新的升级包,并将最新的升级包加载到Web容器内。
在一个实施例中,当获取Web应用访问请求后,服务器需要根据Web应用访问请求运行应用程序。而在运行应用程序之前须先将应用程序加载到Web容器中。首先从缓存中查找程序,并将查找到的程序加载到Web容器内,由于缓存中只存有最新版本的升级包,因此最新版本的升级包首先加载到Web容器中。
步骤S123,将应用程序的主程序加载到Web容器内,与最新的升级包组成更新后的应用程序,且不重复加载主程序中与最新的升级包对应的部分。
在一个实施例中,在缓存中查到并加载最新版本的升级包后,Web容器内的应用程序缺少主程序,还不足以实现整个功能。因此,会继续在存储主程序的路径下查找主程序,并将查找到的主程序加载到Web容器内。在加载过程中,主程序中与已加载进Web容器的最新版本的升级包对应的部分不被加载。因此,在Web容器中,相当于用最新版本的升级包替换了主程序中与最新版本的升级包对应的部分,从而得到最新版本的应用程序。
在一个实施例中,主程序存储在两个路径下,其中一个路径存储的是主程序的类文件,另一个路径下存储的是主程序类文件的Jar包。在查找主程序时,先在存储类文件的路径下查找,若没有查找到完整的主程序,则到存储Jar包的路径下查找。采用两个路径存储主程序可提高系统的可靠性。
在一个实施例中,步骤S120还包括加载主程序到缓存,且不重复加载主程序中与最新的升级包对应的部分。
在查找主程序,并将主程序加载到Web容器中时,还将查找到的主程序加载到缓存中,且在加载的过程中不重复加载主程序中与最新版本的升级包对应的部分。因此,在缓存中即存有主程序,还存有最新版本的升级包,从而在缓存中存有了最新版本的应用程序。这样做的意义在于,当其他用户访问应用程序时,直接从缓存中就可查找并得到完整的最新版本的应用程序,避免了还需要在存储主程序的路径下查找的步骤,因此可以有效提高系统的运行效率。
在一个实施例中,在步骤S120之后,还包括运行更新后的应用程序,并将运行结果反馈到用户界面的步骤。
Web容器里面的应用程序为更新后的应用程序,运行应用程序后可修复原应用程序存在的漏洞,或是在原应用程序的基础上增加了新的功能。从而提高系统的性能,或是改善了用户体验。
如图4所示,本发明还提供一种Web应用程序升级系统,该系统包括缓存模块110及应用程序升级模块120。其中:
缓存模块110用于获取最新的升级包,并将最新的升级包加载到缓存。
升级包可以是针对应用程序的主程序中的漏洞而编辑的补丁,也可是为了对应用程序的功能进行升级而编辑的功能模块。在一个实施例中,包含多个版本的升级包,多个版本的升级包按顺序存储在升级包存储路径下,且多个版本的升级包对应不同版本的应用程序,加载不同版本的升级包可更新得到不同版本的应用程序。在一个实施例中,升级包为Jar包,以便于JAVA系统查找和加载升级包。
如图5所示,在一个实施例中,缓存模块110包括监听器111、路径提取模块113及升级包加载模块115。其中:
监听器111用于检测是否有最新的升级包。
在一个实施例中,监听器111配置监听程序,时刻监听升级包存储路径下是否有最新版本的升级包。当监听器111检测到有最新版本的升级包时,需要重新启动服务器,在重启完成后,监听器111首先控制缓存进行初始化,清除缓存内原有的数据。
路径提取模块113用于当检测到有最新的升级包时,获取升级包存储路径。
升级包加载模块115用于从升级包存储路径获取最新的升级包,并将最新的升级包加载到缓存。
缓存中原有的数据已经被清除,当升级包加载模块115加载最新版本的升级包到缓存中时,缓存中只存有最新版本的升级包。在一个实施例中,缓存为哈希表,其中主键为最新版本的升级包所对应的类的全名。
应用程序升级模块120用于获取Web应用访问请求,并根据最新版本的升级包将应用程序升级成最新版本的应用程序。
不同版本的升级包对应着不同版本的应用程序,缓存中存在最新版本的升级包,因此应用程序升级模块120可以根据缓存中最新版本的升级包将应用程序升级成最新版本的应用程序。
如图6所示,在一个实施例中,应用程序升级模块120包括第一加载模块121及第二加载模块123。其中:
第一加载模块121用于从缓存中获取最新的升级包,并将最新的升级包加载到Web容器内。
在一个实施例中,当应用程序升级模块120获取Web应用访问请求后,服务器需要根据Web应用访问请求运行应用程序。而在运行应用程序之前须先将应用程序加载到Web容器中。首先第一加载模块121从缓存中查找程序,并将查找到的程序加载到Web容器内,由于缓存中只存有最新版本的升级包,因此最新版本的升级包首先加载到Web容器中。
第二加载模块123用于将应用程序的主程序加载到Web容器内,与最新的升级包组成更新后的应用程序,且不重复加载主程序中与最新的升级包对应的部分。
在一个实施例中,第一加载模块121在缓存中查到并加载最新版本的升级包后,Web容器内的应用程序缺少主程序,还不足以实现整个功能。因此,第二加载模块123会继续在存储主程序的路径下查找主程序,并将查找到的主程序加载到Web容器内。在加载过程中,主程序中与已加载进Web容器的最新版本的升级包对应的部分不被加载。因此,在Web容器中,相当于用最新版本的升级包替换了主程序中与最新版本的升级包对应的部分,从而得到最新版本的应用程序。
在一个实施例中,主程序存储在两个路径下,其中一个路径存储的是主程序的类文件,另一个路径下存储的是主程序类文件的Jar包。第二加载模块123在查找主程序时,先在存储类文件的路径下查找,若没有查找到完整的主程序,则到存储Jar包的路径下查找。采用两个路径存储主程序可提高系统的可靠性。
在一个实施例中,应用程序升级模块120还包括主程序加载模块(图未示),主程序加载模块用于加载主程序到缓存,且不重复加载主程序中与最新的升级包对应的部分。
在第二加载模块123查找主程序,并将主程序加载到Web容器中时,主程序加载模块将查找到的主程序加载到缓存中,且在加载的过程中不重复加载主程序中与最新版本的升级包对应的部分。因此,在缓存中即存有主程序,还存有最新版本的升级包,从而在缓存中存有了最新版本的应用程序。这样做的意义在于,当其他用户访问应用程序时,第一加载模块121从缓存中就可查找并得到完整的最新版本的应用程序,避免了还需要第二加载模块123在存储主程序的路径下查找的步骤,因此可以有效提高系统的运行效率。
在一个实施例中,Web应用程序升级系统还包括处理模块,处理模块用于运行更新后的应用程序,并将运行结果反馈到用户界面。
Web容器里面的应用程序为更新后的应用程序,处理模块运行后可修复原应用程序存在的漏洞,或是在原应用程序的基础上增加了新的功能。从而提高系统的性能,或是改善了用户体验。
上述Web应用程序升级方法及系统,先获取最新的升级包,并将最新的升级包加载到缓存。然后根据缓存中最新的升级包更新应用程序。不同的升级包对应着不同的应用程序。在升级的过程中,主程序中需要升级的部分未被覆盖,加载不同的升级包可以得到不同版本的应用程序,当程序出现故障时,可快速恢复原来的版本,且容易追查问题出现在哪个版本上。因此,通过上述方法及系统可便于对Web应用程序的版本进行管理。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。