更新JAVA应用服务的系统及方法与流程

文档序号:11677303阅读:779来源:国知局
更新JAVA应用服务的系统及方法与流程

本发明涉及软件开发领域以及java领域,更为具体而言,涉及一种更新java应用服务的系统及方法。



背景技术:

现在较为普遍的升级java应用服务的做法是重启服务器方式,具体而言,采用如下步骤:

(1)停java应用服务器。

(2)升级部署java应用服务。

(3)启java应用服务器,让新部署的java应用服务生效。

这种升级方式存在诸多缺陷,下面以中国建设银行所面临的问题为例进行说明。

一方面,在项目开发过程中,如果该项目是总分行协同开发模式(例如,总行开发总体框架及公共业务模块,分行开发分行差异化的模块),则在系统集成测试时,30多家分行随时都有可能更换版本以解决测试问题。每天频繁地重启服务,会影响整体的测试进度及测试效果,导致项目进度失控。

另一方面,目前系统上收至总行,集中开发、集中部署是一个趋势。在代理业务领域,中国建设银行总行集中的代理业务平台系统是一个7x24小时提供服务的系统。当有新的代理业务产品上线时,如果继续采用重启服务器的方式,会降低银行的服务质量、不利于提升客户体验。

再一方面,中国建设银行总行集中的代理业务平台系统采用的是总分行协同开发模式,总行开发总体框架及公共业务模块,分行开发分行差异化的模块。当有新的代理业务需求时,分行针对新的代理业务进行差异化开发,如果采用重启服务器的方式,则需要等待统一的时间窗口进行版本上线操作,这无疑延迟了新产品的投产时间,削弱了行业竞争力。



技术实现要素:

鉴于现有技术的上述缺陷,本发明实施方式提供了一种更新java应用服务的系统和方法,能够提高java应用服务在升级方面的灵活性并且在项目开发等方面具有诸多优势。

具体地,本发明实施方式提供了一种更新java应用服务的系统,其包括:

文件获取模块,用于获取待更新的jar文件;

更新处理模块,用于创建与所述jar文件对应的第一类加载器,并通过所述第一类加载器加载所述jar文件;

其中,所述第一类加载器用于加载所述jar文件并与java类加载器绑定父子关系。

相应地,本发明实施方式还提供了一种用于更新java应用服务的方法,其包括:

获取待更新的jar文件;

创建与所述jar文件对应的第一类加载器,并通过所述第一类加载器加载所述jar文件;

其中,所述第一类加载器用于加载所述jar文件并与java类加载器绑定父子关系。

此外,本发明实施方式还提供了一种更新java应用服务的系统,,其包括:

更新jar文件服务,用于接收jar文件并发送更新请求;

类加载器管理器,用于响应所述更新请求创建与所述jar文件对应的第一类加载器;

其中,所述第一类加载器继承java类加载器并用于加载所述jar文件。

采用本发明实施方式,通过为待更新的jar文件创建用于加载该文件的类加载器,并通过创建的类加载器加载jar文件,从而避免了现有技术为更新java应用服务而重启java应用服务器所带来的诸多不便。更具体而言,具有下述有益效果:

(1)团队开发时,在系统集成测试过程中,通过本发明升级java应用服务,可以保证团队成员在升级自己开发的java应用服务时,不影响团队其他成员所开发的java应用服务。达到提高测试效率、保障项目进度的目的。

(2)在系统上线投产过程中,通过本发明升级java应用服务,可以保证在升级java应用服务时,不需要停止java应用服务器,让不属本次升级范围内的、正在运行的java应用服务不受影响。达到提升服务质量、改善客户体验的目的。

(3)在总分行协同开发、系统集中部署在总行时,通过本发明升级java应用服务,可以让分行通过交易发布自己开发的java程序并实时生效。达到快速响应业务需求、提高行业竞争力的目的。

附图说明

图1是根据本发明实施例的一种更新java应用服务的系统的框图的一例;

图2是根据本发明实施例的一种更新java应用服务的方法的流程示意图的一例;

图3是根据本发明实施例的一种更新java应用服务的系统的框图的另一例;

图4是根据本发明实施例的一种更新java应用服务的方法的流程示意图的另一例;

图5是根据本发明实施例的一种证明调用java程序的流程示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。

在本发明的说明书和权利要求书及上述附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如101、102等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1是根据本发明实施例的一种更新java应用服务的系统的框图。参照图1,所述系统包括文件获取模块10和更新处理模块20,下面具体进行说明。

在本实施例中,文件获取模块10用于获取待更新的jar文件。例如,由操作人员主动上传jar文件、自动上传jar文件或文件获取模块10主动请求jar文件,从而获取jar文件。

在本实施例中,更新处理模块20用于创建与所述jar文件对应的第一类加载器,并通过所述第一类加载器加载所述jar文件。其中,所述第一类加载器用于加载所述jar文件并与java类加载器绑定父子关系。

采用本实施例提供的系统,通过为待更新的jar文件创建用于加载该文件的类加载器,并通过创建的类加载器加载jar文件,从而避免了现有技术为更新java应用服务而重启java应用服务器所带来的诸多不便。

可选地,在本实施例的一种实现方式中,如图1中虚线框所示,更新处理模块20可以包括预处理子模块,该预处理子模块用于判断是否已经存在与所述jar文件对应的第二加载器,如果存在,则释放该第二类加载器,然后再由创建模块20创建所述第一类加载器。如果不存在,则直接创建所述第一类加载器。

需要说明的是,本发明中提及的“与所述jar文件对应的第一类加载器”是指用于加载所述jar文件的类加载器;本发明中提及的“与所述jar文件对应的第二类加载器”是指用于加载所述jar文件的更新前的文件的类加载器。示例性地,jar文件在更新前和更新后都具有相同的标识(例如,文件名)。

在该实现方式中,预处理子模块可以在确定存在第二类加载器时,向第二类加载器发送关闭请求以便第二类加载器卸载其当前加载的jar文件(即,所述jar文件在更新前的文件)。

可选地,在本实施例的一种实现方式中,第一类加载器用于加载和/或重新加载指定路径下的jar文件。

图2是根据本发明实施例的一种更新java应用服务的方法的流程示意图,参照图2,所述方法包括:

200:获取待更新的jar文件。

202:创建与所述jar文件对应的第一类加载器。

204:通过所述第一类加载器加载所述jar文件。

在本实施例中,所述第一类加载器用于加载所述jar文件并与java类加载器绑定父子关系。

采用本实施例提供的方法,通过为待更新的jar文件创建用于加载该文件的类加载器,并通过创建的类加载器加载jar文件,从而避免了现有技术为更新java应用服务而重启java应用服务器所带来的诸多不便。

可选地,在本实施例的一种实现方式中,在处理202中,在获取所述jar文件之后,判断是否已经存在与所述jar文件对应的第二类加载器;如果存在所述第二类加载器,则释放该第二类加载器,然后创建所述第一类加载器。

示例性地,在本实现方式中,在确定存在第二类夹杂器时,向所述第二类加载器发送关闭请求以便所述第二类加载器卸载当前加载的jar文件。

可选地,在本实施例的一种实现方式中,第一类加载器用于加载和/或重新加载指定路径下的所述jar文件。

图3是根据本发明实施例的一种更新java应用服务的系统的框图。由于本发明提供的系统在更新java应用服务时无需重启java应用服务器,所以,也可以将本实施例提供的系统称作热升级java应用服务系统。参照图3,该系统包括更新jar文件服务和类加载器管理器。下面进行具体说明。

在本实施例中,更新jar文件服务用于接收jar文件并发送更新请求,具体而言,例如,在接收jar文件完成后,通知类加载器管理器加载所述jar文件。

在本实施例中,类加载器管理器用于响应所述更新请求创建与所述jar文件对应的第一类加载器(如虚线框所示),其中,所述第一类加载器继承java类加载器并用于加载所述jar文件。

可选地,在本实施例的一种实现方式中,所述类加载器管理还用于执行以下处理中的至少一种:保存类加载器、获取类加载器、获取类对象。

可选地,在本实施例的一种实现方式中,类加载器管理器可提供类加载器(包括自定义类加载器)的管理功能,这些功能可以包括:为指定的jar文件(例如,jar归档文件)创建自定义类加载器;为指定的jar归档文件重新创建自定义类加载器;保存一个自定义类加载器;获取一个自定义类加载器;获取类对象。

在本实施例的一种变形例中,提供一种更新java应用服务的系统,该系统包括类加载器、类加载器管理器和更新jar文件服务,其中,类加载器可以由类加载器管理创建,也可以是从第三方获取。此外,关于各个部分的具体说明,请参照图3所示实施例中的描述。此处不再赘述。

图4是根据本发明实施例的一种更新java应用服务的方法的流程示意图。参照图4,所述方法包括:

步骤a:操作员需要更新(例如,升级)java应用服务时,通过调用更新jar文件服务上传jar文件。

步骤b:更新jar文件服务接收完jar文件后,通知类加载器管理器执行更新处理。

步骤c:类加载器管理器收到更新请求后,首先判断请求更新的jar文件所对应的自定义类加载器是否存在,如果存在,则通知该类加载器关闭后释放该类加载器。

步骤d:自定义类加载器收到关闭请求后,卸载所对应的jar文件。

步骤e:类加载器管理器为jar文件创建一个对应的自定义类加载器,并通知该类加载器加载jar文件中的类对象。

步骤f:自定义类加载器收到加载请求后,加载所指定的jar文件,并与java类加载器绑定父子关系。

采用图4所示方法,能够避免重新启动java应用服务器而实现java应用服务的更新,从而解决诸多因重新启动java应用服务器而导致的问题。更具体而言,采用本实施例图1至图4所示实施例中的任意实施例,具有但不限于以下有意效果:

(1)团队开发时,在系统集成测试过程中,通过本发明升级java应用服务,可以保证团队成员在升级自己开发的java应用服务时,不影响团队其他成员所开发的java应用服务。达到提高测试效率、保障项目进度的目的。

(2)在系统上线投产过程中,通过本发明升级java应用服务,可以保证在升级java应用服务时,不需要停止java应用服务器,让不属本次升级范围内的、正在运行的java应用服务不受影响。达到提升服务质量、改善客户体验的目的。

(3)在总分行协同开发、系统集中部署在总行时,通过本发明升级java应用服务,可以让分行通过交易发布自己开发的java程序并实时生效。达到快速响应业务需求、提高行业竞争力的目的。

图5是根据本发明实施例的一种证明调用java程序的流程示意图。该实施例可以用于证明本发明提供的更新java应用服务的系统以及方法的可行性。

参照图5,在调用java程序时,采用以下步骤:

步骤a:当java程序热升级范畴中的jar归档文件中的某个类(即,申请调用jar文件中的某个类)时,该java程序调用类加载器管理器的获取类对象方法。

步骤b:类加载器管理器收到获取类对象的请求后,首先判断jar文件对应的类加载器是否存在,如果不存在,则为jar文件创建一个类加载器,并通知该类加载器加载jar文件中的类对象。

步骤c:自定义类加载器接收到类加载器管理发送的加载请求后,加载所指定的jar文件,并与java类加载器绑定父子关系。

步骤d:类加载器管理器找到jar文件对应的自定义类加载器后,申请所调用的类对象。

步骤e:自定义类加载器收到调用申请后,返回所申请的类,如果所申请的类不存在则尝试从父类加载器中申请并返回。

采用本实施例提供的方法即可实现java程序的调用,也证明了本发明前述实施例提供的更新java应用服务的系统以及方法的可行性。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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