CN104714812B - 在云环境中快速部署和加载Java应用的方法和系统 - Google Patents

在云环境中快速部署和加载Java应用的方法和系统 Download PDF

Info

Publication number
CN104714812B
CN104714812B CN201310684235.2A CN201310684235A CN104714812B CN 104714812 B CN104714812 B CN 104714812B CN 201310684235 A CN201310684235 A CN 201310684235A CN 104714812 B CN104714812 B CN 104714812B
Authority
CN
China
Prior art keywords
jar
shared
file
deployment
application
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201310684235.2A
Other languages
English (en)
Other versions
CN104714812A (zh
Inventor
何震苇
杨新章
陆钢
梁柏青
李慧云
钟伟彬
魏颖琪
陈力
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Telecom Corp Ltd
Original Assignee
China Telecom Corp Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by China Telecom Corp Ltd filed Critical China Telecom Corp Ltd
Priority to CN201310684235.2A priority Critical patent/CN104714812B/zh
Publication of CN104714812A publication Critical patent/CN104714812A/zh
Application granted granted Critical
Publication of CN104714812B publication Critical patent/CN104714812B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例公开了一种在云环境中快速部署和加载Java应用的方法和系统,其中,方法包括:应用部署客户端装置根据本地Java应用共享类库JAR目录确定云平台的共享JAR库中不存在的增量共享JAR文件,将增量共享JAR文件、私有JAR文件和共享JAR文件标识文件打包成Java应用部署包,将Java应用部署包发送给云应用部署器;云应用部署器从Java应用部署包中提取增量共享JAR文件,将增量共享JAR文件存入共享JAR库,将Java应用部署包中的增量共享JAR文件去除后发送给应用容器;应用容器根据接收到的Java应用部署包加载Java应用。本发明实施例可以提升Java应用部署效率,降低应用容器的内存消耗。

Description

在云环境中快速部署和加载Java应用的方法和系统
技术领域
本发明涉及云计算领域,尤其涉及一种在云环境中快速部署和加载Java应用的方法和系统。
背景技术
Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。在云环境中部署Java应用,需将Java应用在本地环境中的所有资源和类打成应用部署包,通过互联网上传到云平台的应用容器上运行。
Java应用普遍使用了大量第三方类库或框架(如Struts、Spring、Hibernate),应用所需的类库(Java Archive,JAR)文件都要打包到应用部署包中,导致应用部署包的大小高达几十兆甚至上百兆,造成Java应用部署效率低,且应用容器需单独加载每个Java应用的类库,使得应用容器的内存消耗大。
在现有技术中,存在两种方法改进Java应用在云环境中的部署效率,一种是内置类库方法,一种是增量补丁方法。
内置类库方法是将常见的类库提前部署在云平台的Java应用容器中,Java应用部署时无需打包云平台内置的类库,内置类库方法存在以下局限性:
一、Java应用云化迁移成本高。当Java应用需要云化迁移部署到云平台时,需要保证Java应用的类库版本与应用容器保持一致,如果Java应用使用了与应用容器不一致的类库版本,就要对Java应用进行修改和重新编译,这增加了Java应用的迁移成本;
二、类库升级维护困难。通常需要人工更新维护云平台的类库版本,而且每一个类库文件升级时都需对云平台的所有应用容器进行升级,并重新加载Java应用部署在应用容器中的应用实例;
三、Java应用部署包仍然庞大。Java应用依赖的大量云平台尚未内置的类库仍需反复打包部署。
增量补丁部署法是人工或借助工具筛选出相对于上一次部署的增量文件,只将Java应用的增量文件打包部署到云平台的一个或多个应用容器中,增量补丁方法仅仅是减少了应用升级部署包的大小,增量补丁部署法存在的缺陷性包括:
一、Java应用的每个实例在应用容器中仍然需要全量部署,当Java应用的实例数弹性增加时,需要在新的应用容器中全量部署完整的应用部署包,应用实例弹性扩展的部署开销仍然没有降低;
二、部署到应用容器的每个Java应用的应用实例需要全量加载,Java应用所依赖的类库也会加载到内存中,不同的应用实例重复加载相同的类库加大了应用容器的内存和输入/输出(I/O)开销。
发明内容
本发明实施例提供一种在云环境中快速部署和加载Java应用的方法和系统,以提升Java应用部署效率,降低应用容器的内存消耗,且无需增加额外的类库迁移和维护成本。
本发明实施例提供一种在云环境中快速部署和加载Java应用的方法,包括:
应用部署客户端装置根据本地Java应用共享类库JAR目录确定云平台的共享JAR库中不存在的共享JAR文件作为增量共享JAR文件,将所述增量共享JAR文件、私有JAR文件和共享JAR文件标识文件打包成Java应用部署包,将所述Java应用部署包发送给云应用部署器;其中,所述共享JAR库中存放了所有已部署在所述云平台上的Java应用的共享JAR文件,所述共享JAR文件标识文件中记录有所述本地Java应用共享类库JAR目录的所有共享JAR文件的标识信息,每个标识信息用于唯一标识一个共享JAR文件;
所述云应用部署器从所述Java应用部署包中提取所述增量共享JAR文件,将所述增量共享JAR文件存入所述共享JAR库,将所述Java应用部署包中的所述增量共享JAR文件去除后发送给应用容器;
所述应用容器根据接收到的Java应用部署包加载Java应用。
进一步地,所述应用容器根据接收到的Java应用部署包加载Java应用包括:
所述应用容器将接收到的Java应用部署包解压缩到应用部署目录中,从所述应用部署目录加载Java应用的所述私有JAR文件,根据所述共享JAR文件标识文件通过类库代理从所述共享JAR库中加载Java应用的共享JAR文件。
进一步地,所述应用部署客户端装置根据本地Java应用共享类库JAR目录确定云平台的共享JAR库中不存在的增量共享JAR文件,包括:
所述应用部署客户端装置将所述共享JAR文件标识文件发送给共享JAR库管理装置;
所述共享JAR库管理装置根据所述共享JAR文件标识文件检查所述共享JAR库,将所述共享JAR库中不存在的JAR文件的标识信息形成增量共享JAR文件标识列表,将所述增量共享JAR文件标识列表发送给所述应用部署客户端装置;
所述应用部署客户端装置根据所述增量共享JAR文件标识列表确定所述增量共享JAR文件。
进一步地,所述应用部署客户端装置将所述共享JAR文件标识文件发送给所述共享JAR库管理装置之前,所述方法还包括:
所述应用部署客户端装置根据所述本地Java应用共享类库JAR目录中的所有JAR文件的标识信息生成所述共享JAR文件标识文件。
进一步地,每个共享JAR文件的标识信息包括该共享JAR文件的文件名和文件哈希码,所述文件哈希码为该共享JAR文件的消息摘要算法SHA1(Secure Hash Algorithm,安全哈希算法)散列码。
本发明实施例提供一种云环境中快速部署和加载Java应用的系统,包括:应用部署客户端装置、共享JAR库管理装置、云应用部署器和应用容器;
所述共享JAR库管理装置,用于管理云平台的共享JAR库中的共享JAR文件;其中,所述共享JAR库中存放了所有已部署在所述云平台上的Java应用的共享JAR文件;
所述应用部署客户端装置,用于根据本地Java应用共享类库JAR目录请求所述共享JAR库管理装置确定云平台的共享JAR库中不存在的共享JAR文件作为增量共享JAR文件,将所述增量共享JAR文件、私有JAR文件和共享JAR文件标识文件打包成Java应用部署包,将所述Java应用部署包发送给云应用部署器;其中,所述共享JAR文件标识文件中记录有所述本地Java应用共享类库JAR目录的所有共享JAR文件的标识信息,每个标识信息用以唯一标识一个共享JAR文件;
所述云应用部署器,用于从所述Java应用部署包中提取所述增量共享JAR文件,将所述增量共享JAR文件存入所述共享JAR库,将所述Java应用部署包中的所述增量共享JAR文件去除后发送给应用容器;
所述应用容器,用于根据接收到的Java应用部署包加载Java应用。
进一步地,所述应用容器具体用于接收到的Java应用部署包解压缩到应用部署目录中,从所述应用部署目录加载Java应用的所述私有JAR文件,根据所述共享JAR文件标识文件通过类库代理从所述共享JAR库中加载Java应用的共享JAR文件。
进一步地,所述应用部署客户端装置根据本地Java应用共享类库JAR目录请求所述共享JAR库管理装置确定云平台的共享JAR库中不存在的共享JAR文件作为增量共享JAR文件时,具体用于将所述共享JAR文件标识文件发送给所述共享JAR库管理装置;以及根据所述共享JAR库管理装置返回的增量共享JAR文件标识列表确定所述增量共享JAR文件;
所述共享JAR库管理装置具体用于根据所述共享JAR文件标识文件检查所述共享JAR库,将所述共享JAR库中不存在的JAR文件的标识信息形成增量共享JAR文件标识列表,将所述增量共享JAR文件标识列表发送给所述应用部署客户端装置。
进一步地,所述应用部署客户端装置还用于根据所述本地Java应用共享类库JAR目录中的所有JAR文件的标识信息生成所述共享JAR文件标识文件。
进一步地,每个共享JAR文件的标识信息包括该共享JAR文件的文件名和文件哈希码,所述文件哈希码为该共享JAR文件的消息摘要算法SHA1散列码。
基于本发明上述实施例提供的在云环境中快速部署和加载Java应用的方法和系统,在云平台引入了一个共享JAR库,记录了所有已部署在云平台上的Java应用的共享JAR文件,在用户侧提供一个应用部署客户端装置,应用部署客户端装置在Java应用部署前,先通过共享JAR库判断Java应用中有哪些共享JAR文件是共享JAR库已有的,共享JAR库中有的共享JAR文件自动从Java应用部署包中剔除,应用部署客户端装置打包上传的Java应用部署包不包含共享JAR库中已有的共享JAR文件,仅包含本次Java应用的私有JAR文件和新增的共享JAR文件(即:增量共享JAR文件),新增的共享JAR文件在应用部署到云平台时自动添加到共享JAR库中。与现有技术相比,由于本发明实施例只需打包部署云平台共享JAR库中没有的增量共享JAR文件,Java应用部署包中的增量共享JAR文件自动更新到云平台的共享JAR库中,Java应用在运行时应用容器从共享JAR库中动态加载所需的共享JAR文件,从而提升了Java应用部署效率,降低了应用容器的内存消耗,而且无需增加额外的类库迁移和维护成本。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
构成说明书的一部分的附图描述了本发明的实施例,并且连同描述一起用于解释本发明的原理。
参照附图,根据下面的详细描述,可以更加清楚地理解本发明,其中:
图1为本发明在云环境中快速部署和加载Java应用的方法一个实施例的流程图。
图2为本发明实施例中确定增量共享JAR文件一个实施例的流程图。
图3为本发明云环境中快速部署和加载Java应用的系统一个实施例的结构示意图。
具体实施方式
现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
图1为本发明在云环境中快速部署和加载Java应用的方法一个实施例的流程图。如图1所示,该实施例的方法包括:
步骤101,应用部署客户端装置根据本地Java应用共享类库JAR目录确定云平台的共享JAR库中不存在的共享JAR文件作为增量共享JAR文件,将增量共享JAR文件、私有JAR文件和共享JAR文件标识文件打包成Java应用部署包发送给云应用部署器。
其中,云平台的共享JAR库中存储有已部署在云平台上的Java应用的共享JAR文件;共享JAR文件标识文件中记录有本地Java应用共享类库JAR目录的所有共享JAR文件的标识信息,每个标识信息用以唯一标识一个共享JAR文件。
步骤102,云应用部署器从Java应用部署包中提取增量共享JAR文件,通过共享JAR库管理装置将增量共享JAR文件存入共享JAR库,将Java应用部署包中的增量共享JAR文件去除后发送给应用容器。
步骤103,应用容器根据接收到的Java应用部署包加载Java应用。
具体地,应用部署客户端装置具体为安装有应用部署客户端的电子装置,应用部署客户端装置可以集成在本地的电子设备中,该电子设备例如可以为个人计算机、笔记本电脑或服务器等。电子设备中装载有Java应用,通过该应用部署客户端装置将该Java应用部署和加载到云平台中。
本地Java应用共享类库JAR目录中记录有该Java应用在本地环境中的所有共享JAR文件的信息,共享JAR文件是可以被其他Java应用共享的JAR文件。云平台中设置有共享JAR库,该共享JAR库中存储有已部署在该云平台上的所有的Java应用的共享JAR文件,该共享JAR库中还可以记录有每个共享JAR文件的标识信息以及每个共享JAR文件的文件名、大小和入库时间等信息。共享JAR库中的共享JAR文件是由云平台从Java应用部署包中自动提取并添加的共享JAR库中,无需人工更新维护类库。初始时共享类库的JAR文件为空,随着云平台部署的Java应用不断增加,从Java应用部署包中提取存放到共享JAR库的共享JAR文件也越来越多。
应用部署客户端装置根据该本地Java应用共享类库JAR目录可以确定云平台的共享JAR库中不存在的共享JAR文件,即增量共享JAR文件。应用部署客户端装置将增量共享JAR文件、私有JAR文件和共享JAR文件标识文件打包成Java应用部署包,其中,私有JAR文件具体为该Java应用私有的JAR文件,即不允许其他Java应用共享。共享JAR文件标识文件记录有本地Java应用共享类库JAR目录的所有共享JAR文件的标识信息,其中的每个标识信息用以唯一标识一个共享JAR文件。
Java应用部署包具体可以为WAR(Web Achieve)或EAR(Enterprise Achieve)。
例如:Java应用依赖的JAR文件分别为a.jar、b.jar和c.jar,其中a.jar为私有JAR文件,b.jar、c.jar为共享JAR文件,b.jar在共享JAR库中已存在,c.jar为新出现的共享JAR文件,那么Java应用第一次部署需打包的JAR文件包括a.jar和c.jar,假设Java应用第二次部署前只修改了a.jar,那么第二次部署则只需打包a.jar,不再需要打包c.jar了。
应用部署客户端装置将该Java应用部署包发送给云应用部署器,该云应用部署器具体可以设置在云平台中,也可以独立设置。云应用部署器从Java应用部署包中提取增量共享JAR文件,将该增量共享JAR文件存入云平台的共享JAR库中,将Java应用部署包中的增量共享JAR文件剔除,将剔除增量共享JAR文件后的Java应用部署包发送给应用容器。
云平台中可以有多个应用容器,可以将Java应用部署到其中的一个或多个应用容器中。若将Java应用部署多个应用容器中,则云应用部署器可以将上述剔除增量共享JAR文件后的Java应用部署包发送给多个应用容器。在每个应用容器上运行的是Java应用的一个应用实例,每个Java应用至少有一个应用实例,通过部署多个应用实例可以将Java应用的负载分配到多个应用实例上运行,提高运行效率,实现应用负载均衡,同时还可以避免出现应用单点故障。在实际实现过程中,Java应用的应用实例数是还可以根据Java应用的实际负载(或并发访问量)动态扩展或收缩的。
剔除增量共享JAR文件后的Java应用部署包中还有该Java应用的私有JAR文件和共享JAR文件标识文件,应用容器加载Java应用时,加载该私有JAR文件,并根据共享JAR文件标识文件从共享JAR库中加载共享JAR文件。
本实施例提供的云环境中快速部署和加载Java应用的方法,在云平台引入了一个共享JAR库,存储了所有已部署在云平台上的Java应用的共享JAR文件,在用户侧提供一个应用部署客户端装置,应用部署客户端装置在Java应用部署前,先通过共享JAR库判断Java应用中有哪些共享JAR文件是共享JAR库已有的,共享JAR库中有的共享JAR文件自动从Java应用部署包中剔除,打包的Java应用部署包不包含共享JAR库中已有的共享JAR文件,仅包含Java应用的私有JAR文件和新增的共享JAR文件,新增的共享JAR文件在Java应用部署到云平台时自动添加到共享JAR库中。由于只需打包部署共享JAR库中没有的新共享JAR文件,Java应用部署包中的新JAR文件自动更新到云平台的共享JAR库中,Java应用在运行时应用容器从共享JAR库中动态加载所需的共享JAR文件,从而提升了Java应用部署效率,降低了应用容器的内存消耗,而且无需增加额外的类库迁移和维护成本。
根据本发明在云环境中快速部署和加载Java应用的方法的一个具体示例而非限制,在上述实施例的步骤103中,应用容器根据接收到的Java应用部署包加载Java应用,具体可以包括:
应用容器将接收到的Java应用部署包解压缩到应用部署目录中,从应用部署目录加载Java应用的私有JAR文件,根据共享JAR文件标识文件通过类库代理从共享JAR库中加载Java应用的共享JAR文件。
具体地,类库代理可以缓存已加载的共享JAR文件,以供应用容器中的其他Java应用使用。应用容器通过类库代理加载共享JAR库中的共享JAR文件,如果某个JAR文件在应用容器中已加载,则直接返回内存中的类库引用,无需重复加载类库。
根据本发明在云环境中快速部署和加载Java应用的方法的另一个具体示例而非限制,在上述实施例的步骤101中,应用部署客户端装置根据本地Java应用共享类库JAR目录确定云平台的共享JAR库中不存在的增量共享JAR文件,如图2所示,其具体可以包括以下步骤:
步骤111,应用部署客户端装置将共享JAR文件标识文件发送给共享JAR库管理装置。
步骤121,共享JAR库管理装置根据共享JAR文件标识文件检查共享JAR库,将共享JAR库中不存在的JAR文件的标识信息形成增量共享JAR文件标识列表,将增量共享JAR文件标识列表发送给应用部署客户端装置。
步骤131,应用部署客户端装置根据增量共享标识列表确定增量共享JAR文件。
具体地,共享JAR库管理装置可以设置在云平台中,可以为云平台的功能模块,应用部署客户端装置将共享JAR文件标识文件发送给共享JAR库管理装置,由于共享JAR文件标识文件中记录的是用以唯一标识共享JAR文件的共享JAR文件的标识信息,可以通过共享JAR库验证共享JAR文件的存在性,并将共享JAR库中不存在的JAR文件的标识信息形成增量共享标识列表,以供应用部署客户端装置确定增量共享JAR文件。
示例性地,在本实施例的步骤111中,应用部署客户端装置将共享JAR文件标识文件发送给共享JAR库管理装置之前,方法还可以包括如下步骤:
步骤141,应用部署客户端装置根据本地Java应用共享类库JAR目录中的所有JAR文件的标识信息生成共享JAR文件标识文件。
示例性地,标识信息具体可以包括共享JAR文件的文件名和文件哈希码,其中的文件哈希码为共享JAR文件的消息摘要算法(SHA1)散列码。
具体地,JAR文件的标识信息可以为JAR文件字符串(JARKey),共享标识文件为文本文件,包括该Java应用所依赖的JARKey列表,其中JARKey=JAR文件名+文件哈希码,其中文件哈希码可以是整个JAR文件的SHA1散列码。一个JARKey用以唯一标识一个JAR文件。
由于为Java应用的每个共享JAR文件生成一个唯一的Key(JARKey),不同类库的JAR文件或同一个类库的不同版本JAR文件的JARKey是不同的,通过共享JAR库验证JARKey的存在性就可以判断应用的哪些共享JAR文件是已有的,哪些是新增的。需要指出的是,开发者可以自行决定应用的哪些JAR文件属于共享JAR文件,哪些JAR文件属于私有JAR,默认情况下,Java应用的所有JAR均属于共享JAR文件,私有JAR文件是会打包在Java应用部署包中的,对于云平台的共享JAR库中已有的共享JAR文件,则不会打包到Java应用部署包中。
以下通过一个具体的实现方式对本发明的快速部署和加载Java应用的方法进行详细地说明。
首先对Java应用部署包进行扩展,扩展的Java应用部署包包括:私有JAR文件包、共享JARKey文件、增量共享JAR文件包。其中,共享JARKey文件为文本文件,包括本应用所依赖的JARKey列表,其中JARKey=文件名+文件哈希码,其中文件哈希码可以是整个JAR文件的SHA1散列码。
Java应用部署步骤如下:
在第一个操作中,应用部署客户端装置识别Java应用的增量共享JAR文件,具体包括:
计算本地应用共享JAR目录中所有JAR文件的JARKey,生成共享JARKey文件;
将共享JARKey文件发送给共享JAR库管理装置,共享JAR库管理装置JARKey在共享JAR库中的存在性,向应用部署客户端返回共享JAR库中不存在的JARKey列表,即增量共享JARKey列表,对应的JAR文件即为增量共享JAR文件;
在第二个操作中,应用部署客户端装置打包并上传Java应用扩展部署包,具体包括:
将Java应用的私有JAR文件、增量共享JAR文件和共享JARKey文件打包成Java应用部署包;
将Java应用部署包上传给云平台的云应用部署器;
在第三个操作中,云应用部署器从Java应用部署包中的提取增量共享JAR文件,将增量共享JAR文件发送给共享JAR库,将增量共享JAR包从Java应用部署包中剔除,然后将Java应用部署包发送给至少一个应用容器;
在第四个操作中,应用容器将Java应用部署包解压缩到应用部署目录中,从应用部署目录加载应用的私有JAR文件,通过类库代理从共享JAR库中加载共享JAR文件;
在第五个操作中,类库代理缓存已加载的共享JAR文件,供应用容器中的其他Java应用使用。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
图3为本发明云环境中快速部署和加载Java应用的系统一个实施例的结构示意图。如图3所示,本实施例提供的系统具体可以实现本发明任意实施例提供的方法的各个步骤,具体实现过程在此不再赘述。本实施例提供的系统包括:应用部署客户端装置31、云应用部署器32、应用容器33和共享JAR库管理装置34。其中:
应用部署客户端装置31,用于根据本地Java应用共享类库JAR目录请求共享JAR库管理装置34确定云平台的共享JAR库中不存在的共享JAR文件作为增量共享JAR文件,将该增量共享JAR文件、私有JAR文件和共享JAR文件标识文件打包成Java应用部署包发送给云应用部署器32。其中,共享JAR文件标识文件中记录有本地Java应用共享类库JAR目录的所有共享JAR文件的标识信息,每个标识信息用以唯一标识一个共享JAR文件。
云应用部署器32,用于从Java应用部署包中提取增量共享JAR文件,共享JAR库管理装置34将增量共享JAR文件存入共享JAR库,将Java应用部署包中的增量共享JAR文件去除后发送给应用容器33。
应用容器33,用于根据接收到的Java应用部署包加载Java应用。
共享JAR库管理装置34,用于管理云平台的共享JAR库中的共享JAR文件,以及将云应用部署器32提取的增量共享JAR文件存入共享JAR库。其中,共享JAR库中存放了所有已部署在云平台上的Java应用的共享JAR文件。
本实施例提供的云环境中快速部署和加载Java应用的系统,在云平台引入了一个共享JAR库,记录了所有已部署在云平台上的Java应用的共享JAR文件,在用户侧提供一个应用部署客户端装置,应用部署客户端装置在Java应用部署前,先通过共享JAR库判断Java应用中有哪些共享JAR文件是共享JAR库已有的,共享JAR库中有的共享JAR文件自动从Java应用部署包中剔除,打包的Java应用部署包不包含共享JAR库中已有的共享JAR文件,仅包含Java应用的私有JAR文件和新增的共享JAR文件,新增的共享JAR文件在应用部署到云平台时自动添加到共享JAR库中。由于,只需打包部署共享JAR库中没有的新共享JAR文件,Java应用部署包中的新JAR文件自动更新到云平台的共享JAR库中,Java应用在运行时应用容器从共享JAR库中动态加载所需的共享JAR文件,从而提升了Java应用部署效率,降低了应用容器33的内存消耗,而且无需增加额外的类库迁移和维护成本。
根据上述云环境中快速部署和加载Java应用的系统实施例的一个具体示例而非限制,应用容器33具体用于将Java应用部署包解压缩到应用部署目录中,从应用部署目录加载Java应用的私有JAR文件,根据共享JAR文件标识文件通过类库代理从共享JAR库中加载Java应用的共享JAR文件。
在本发明云环境中快速部署和加载Java应用的系统的另一个实施例中。应用部署客户端装置31根据本地Java应用共享类库JAR目录请求共享JAR库管理装置34确定云平台的共享JAR库中不存在的共享JAR文件作为增量共享JAR文件时,具体用于将共享JAR文件标识文件发送给共享JAR库管理装置34,以及根据共享JAR库管理装置34返回的增量共享JAR文件标识列表确定增量共享JAR文件。相应地,共享JAR库管理装置34具体用于根据共享JAR文件标识文件检查共享JAR库,将共享JAR库中不存在的JAR文件的标识信息形成增量共享JAR文件标识列表并发送给应用部署客户端装置31。
在进一步实施例中,应用部署客户端装置31还可以用于根据本地Java应用共享类库JAR目录中的所有JAR文件的标识信息生成共享标识文件。
示例性地,每个共享JAR文件的标识信息具体可以包括共享JAR文件的文件名和文件哈希码,文件哈希码为共享JAR文件的SHA1散列码。
本说明书中各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似的部分相互参见即可。对于系统实施例而言,由于其与方法实施例基本对应,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本发明的描述是为了示例和描述起见而给出的,而并不是无遗漏的或者将本发明限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。选择和描述实施例是为了更好说明本发明的原理和实际应用,并且使本领域的普通技术人员能够理解本发明从而设计适于特定用途的带有各种修改的各种实施例。

Claims (8)

1.一种在云环境中快速部署和加载Java应用的方法,其特征在于,包括:
应用部署客户端装置根据本地应用共享类库JAR目录确定云平台的共享JAR库中不存在的共享JAR文件作为增量共享JAR文件,将所述增量共享JAR文件、私有JAR文件和共享JAR文件标识文件打包成Java应用部署包,将所述Java应用部署包发送给云应用部署器;其中,所述共享JAR库中存放了所有已部署在所述云平台上的Java应用的共享JAR文件,所述共享JAR文件标识文件中记录有所述本地Java应用共享类库JAR目录的所有共享JAR文件的标识信息,每个标识信息用以唯一标识一个共享JAR文件;
所述云应用部署器从所述Java应用部署包中提取所述增量共享JAR文件,将所述增量共享JAR文件存入所述共享JAR库,将所述Java应用部署包中的所述增量共享JAR文件去除后发送给应用容器;
所述应用容器根据接收到的Java应用部署包加载Java应用;
其中,所述应用部署客户端装置根据本地Java应用共享类库JAR目录确定云平台的共享JAR库中不存在的增量共享JAR文件,包括:
所述应用部署客户端装置将所述共享JAR文件标识文件发送给共享JAR库管理装置;
所述共享JAR库管理装置根据所述共享JAR文件标识文件检查所述共享JAR库,将所述共享JAR库中不存在的JAR文件的标识信息形成增量共享JAR文件标识列表,将所述增量共享JAR文件标识列表发送给所述应用部署客户端装置;
所述应用部署客户端装置根据所述增量共享JAR文件标识列表确定所述增量共享JAR文件。
2.根据权利要求1所述的云环境中快速部署和加载Java应用的方法,其特征在于,所述应用容器根据接收到的Java应用部署包加载Java应用包括:
所述应用容器将接收到的Java应用部署包解压缩到应用部署目录中,从所述应用部署目录加载Java应用的私有JAR文件,根据所述共享JAR文件标识文件通过类库代理从所述共享JAR库中加载Java应用的共享JAR文件。
3.根据权利要求1所述的云环境中快速部署和加载Java应用的方法,其特征在于,所述应用部署客户端装置将所述共享JAR文件标识文件发送给所述共享JAR库管理装置之前,所述方法还包括:
所述应用部署客户端装置根据所述本地Java应用共享类库JAR目录中的所有JAR文件的标识信息生成所述共享JAR文件标识文件。
4.根据权利要求1至3任意一项所述的云环境中快速部署和加载Java应用的方法,其特征在于,每个共享JAR文件的标识信息包括该共享JAR文件的文件名和文件哈希码,所述文件哈希码为该共享JAR文件的消息摘要算法SHA1散列码。
5.一种云环境中快速部署和加载Java应用的系统,其特征在于,包括:应用部署客户端装置、共享JAR库管理装置、云应用部署器和应用容器;
所述共享JAR库管理装置,用于管理云平台的共享JAR库中的共享JAR文件;其中,所述共享JAR库中存放了所有已部署在所述云平台上的Java应用的共享JAR文件;
所述应用部署客户端装置,用于根据本地Java应用共享类库JAR目录请求所述共享JAR库管理装置确定云平台的共享JAR库中不存在的共享JAR文件作为增量共享JAR文件,将所述增量共享JAR文件、私有JAR文件和共享JAR文件标识文件打包成Java应用部署包,将所述Java应用部署包发送给云应用部署器;其中,所述共享JAR文件标识文件中记录有所述本地Java应用共享类库JAR目录的所有共享JAR文件的标识信息,每个标识信息用以唯一标识一个共享JAR文件;
所述云应用部署器,用于从所述Java应用部署包中提取所述增量共享JAR文件,通过所述共享JAR库管理装置将所述增量共享JAR文件存入所述共享JAR库,将所述Java应用部署包中的所述增量共享JAR文件去除后发送给应用容器;
所述应用容器,用于根据接收到的Java应用部署包加载Java应用;
其中,所述应用部署客户端装置根据本地Java应用共享类库JAR目录请求所述共享JAR库管理装置确定云平台的共享JAR库中不存在的共享JAR文件作为增量共享JAR文件时,具体用于将所述共享JAR文件标识文件发送给所述共享JAR库管理装置;以及根据所述共享JAR库管理装置返回的增量共享JAR文件标识列表确定所述增量共享JAR文件;
所述共享JAR库管理装置具体用于根据所述共享JAR文件标识文件检查所述共享JAR库,将所述共享JAR库中不存在的JAR文件的标识信息形成增量共享JAR文件标识列表,将所述增量共享JAR文件标识列表发送给所述应用部署客户端装置。
6.根据权利要求5所述的云环境中快速部署和加载Java应用的系统,其特征在于,所述应用容器具体用于接收到的Java应用部署包解压缩到应用部署目录中,从所述应用部署目录加载Java应用的所述私有JAR文件,根据所述共享JAR文件标识文件通过类库代理从所述共享JAR库中加载Java应用的共享JAR文件。
7.根据权利要求6所述的云环境中快速部署和加载Java应用的系统,其特征在于,所述应用部署客户端装置还用于根据所述本地Java应用共享类库JAR目录中的所有JAR文件的标识信息生成所述共享JAR文件标识文件。
8.根据权利要求5所述的云环境中快速部署和加载Java应用的系统,其特征在于,每个共享JAR文件的标识信息包括该共享JAR文件的文件名和文件哈希码,所述文件哈希码为该共享JAR文件的消息摘要算法SHA1散列码。
CN201310684235.2A 2013-12-13 2013-12-13 在云环境中快速部署和加载Java应用的方法和系统 Active CN104714812B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310684235.2A CN104714812B (zh) 2013-12-13 2013-12-13 在云环境中快速部署和加载Java应用的方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310684235.2A CN104714812B (zh) 2013-12-13 2013-12-13 在云环境中快速部署和加载Java应用的方法和系统

Publications (2)

Publication Number Publication Date
CN104714812A CN104714812A (zh) 2015-06-17
CN104714812B true CN104714812B (zh) 2018-03-23

Family

ID=53414187

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310684235.2A Active CN104714812B (zh) 2013-12-13 2013-12-13 在云环境中快速部署和加载Java应用的方法和系统

Country Status (1)

Country Link
CN (1) CN104714812B (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105138327A (zh) * 2015-08-21 2015-12-09 青岛海信移动通信技术股份有限公司 一种跨平台web应用的打包方法
CN105224358A (zh) * 2015-09-07 2016-01-06 浪潮集团有限公司 一种云计算下软件自动打包部署的系统及方法
CN107239298B (zh) * 2017-04-28 2021-02-19 北京五八信息技术有限公司 应用程序调试方法及装置
CN107589948A (zh) * 2017-07-28 2018-01-16 北京北信源软件股份有限公司 项目文件部署方法及系统
CN107590001B (zh) * 2017-09-08 2020-12-22 北京京东尚科信息技术有限公司 负载均衡方法及装置、存储介质、电子设备
CN110109649B (zh) * 2018-02-01 2023-08-08 中国电信股份有限公司 针对Web服务的容器控制方法、装置和容器系统
CN109725909B (zh) * 2018-05-07 2023-07-21 中国平安人寿保险股份有限公司 代码文件打包部署方法、持续集成服务器及系统
CN110058862A (zh) * 2018-09-04 2019-07-26 中国平安人寿保险股份有限公司 用于Jar文件的安全部署方法、装置、设备和存储介质
US11080050B2 (en) 2019-01-29 2021-08-03 International Business Machines Corporation Class data loading acceleration
CN112379924B (zh) * 2020-11-04 2023-03-07 福建亿榕信息技术有限公司 一种基于容器模板的国产应用跨系统迁移方法
CN112860645A (zh) * 2021-02-09 2021-05-28 恒安嘉新(北京)科技股份公司 一种离线压缩文件的处理方法、装置、计算机设备及介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1591339A (zh) * 2003-08-28 2005-03-09 国际商业机器公司 提供共享Web模块的系统和方法
CN102073506A (zh) * 2011-02-24 2011-05-25 北京中电普华信息技术有限公司 一种基于J2EE的Web应用请求处理方法及系统
CN102612023A (zh) * 2012-03-16 2012-07-25 北京掌汇天下科技有限公司 一种移动终端更新应用的方法、服务器以及移动终端
CN103002010A (zh) * 2012-10-29 2013-03-27 北京奇虎科技有限公司 一种基于增量数据的数据更新方法、装置和系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1591339A (zh) * 2003-08-28 2005-03-09 国际商业机器公司 提供共享Web模块的系统和方法
CN102073506A (zh) * 2011-02-24 2011-05-25 北京中电普华信息技术有限公司 一种基于J2EE的Web应用请求处理方法及系统
CN102612023A (zh) * 2012-03-16 2012-07-25 北京掌汇天下科技有限公司 一种移动终端更新应用的方法、服务器以及移动终端
CN103002010A (zh) * 2012-10-29 2013-03-27 北京奇虎科技有限公司 一种基于增量数据的数据更新方法、装置和系统

Also Published As

Publication number Publication date
CN104714812A (zh) 2015-06-17

Similar Documents

Publication Publication Date Title
CN104714812B (zh) 在云环境中快速部署和加载Java应用的方法和系统
US10599533B2 (en) Cloud storage using merkle trees
CN103902696B (zh) 一种加载资源文件的方法及装置
CN110058873A (zh) 应用页面更新方法、装置、设备和存储介质
US11210269B2 (en) System and method for deduplicating container image storage data
CN110147239B (zh) 游戏安装包体的多重压缩的方法、设备及存储介质
CN108446363A (zh) 一种kv引擎的数据处理方法及装置
CN107315668A (zh) 分布式存储系统数据一致性自动化快速检测方法及装置
CN104424423B (zh) 应用程序的权限确定方法和装置
CN107741877A (zh) 一种云手机启动虚拟操作系统的方法、存储介质和处理器
CN102810089A (zh) 基于内容的短链接系统及实现方法
CN105138333A (zh) 基于安卓系统的apk文件压缩的方法及系统
CN103077043B (zh) 一种快速启动及运行Linux的方法
US20200379752A1 (en) Equivalency of revisions on modern version control systems
CN105955762A (zh) 一种注入动态链接库文件的方法、装置及电子设备
CN107273151A (zh) 一种安全的Android App功能插件化方法
CN105786538A (zh) 基于安卓系统的软件升级方法和装置
CN112114849B (zh) 一种资源更新方法和装置
CN106610839A (zh) 发布升级包的方法、轻量升级方法、装置及系统
CN106202158A (zh) 一种图形文件格式的使用方法及装置
CN108228717A (zh) 页面的加载方法及装置
CN106406923A (zh) 动态库文件的处理方法及装置
CN104182532B (zh) 终端文件的清理方法、装置及终端
CN108196831A (zh) 业务系统的构建方法和装置
CN109656614A (zh) 文件的处理方法、装置及系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
EXSB Decision made by sipo to initiate substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant