CN102073512B - 一种java集群应用系统代码装载及升级装置和方法 - Google Patents
一种java集群应用系统代码装载及升级装置和方法 Download PDFInfo
- Publication number
- CN102073512B CN102073512B CN200910221980.7A CN200910221980A CN102073512B CN 102073512 B CN102073512 B CN 102073512B CN 200910221980 A CN200910221980 A CN 200910221980A CN 102073512 B CN102073512 B CN 102073512B
- Authority
- CN
- China
- Prior art keywords
- class
- java
- java class
- version
- server
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44536—Selecting among different versions
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请实施例公开了一种JAVA集群应用系统代码装载的装置和方法,本申请实施例所提供的装载方案,无须将最新代码发布到集群中的各服务器,也无需重启集群各服务器的Java应用,只需要在将代码存储服务器,如SVN服务器中代码进行更新,位于集群中的各个服务器就能够自动地装载最新的代码,提升了JAVA集群系统的可用性。
Description
技术领域
本申请涉及网络技术领域,尤其涉及一种JAVA集群应用系统代码装载装置和方法。
背景技术
集群系统是由多台同构或异构的计算机连接起来协同完成特定的任务就构成了集群系统。JAVA集群应用系统是基于集群部署的JAVA应用系统。
一般的JAVA集群应用系统,如JAVA的web应用系统,任务集群系统等,需要在客户端安装及部署系统运行所需要的类库等。一旦代码或者类库需要升级,则需要将最新的代码更新发布到集群中的所有服务器上,并重新启动各服务器上的java应用。
发明人通过研究发现,现有JAVA集群应用系统,无论是代码进行装载还是代码的升级都需要将新装载或者待升级的代码更新发布到集群中的所有服务器上,并且要重新启动各个服务器上的java应用,工作量巨大,耗时长,效率非常低下。
发明内容
有鉴于此,本申请实施例的目的是提供一种JAVA集群应用系统代码装载装置和方法,快速高效地实现代码的装载和升级。
为实现上述目的,本申请实施例提供了如下技术方案:
一种JAVA集群应用系统代码装载的装置,位于所述JAVA集群的服务器中,包括:
接收单元,用于接收服务器发送的类装载请求,所述类装载请求中携带待装载的第一JAVA类的类名;
查找单元,用于根据所述类名从类注册信息中查找所述第一JAVA类的实体的存储地址,根据所述存储地址从所述第一JAVA类的存储地获取所述第一JAVA类的最新版本号;
判断单元,用于判断所述第一JAVA类的最新版本号与本地存储的上次装载的所述第一JAVA类的版本号是否相同;
处理单元,用于在所述第一JAVA类的最新版本号与本地存储的上次装载的所述第一JAVA类的版本号不同时从所述第一JAVA类的存储地获取最新版本的所述第一JAVA类,进行装载,并将所述第一JAVA类在所述类版本记录中版本号进行更新;否则直接装载所述第一JAVA类。
可选地,所述查找单元中通过类地址散列表记录所述类注册信息中的内容。
可选地,通过所述类地址散列表的主键记录所述第一JAVA类的类名,通过所述类地址散列表的主键的值记录所述第一JAVA类存储地址。
可选地,所述查找单元通过类版本散列表记录所述第一JAVA类的版本信息。
可选地,通过所述类版本散列表的主键记录所述第一JAVA类的类名,通过所述类版本散列表的主键的值记录上次装载的所述第一JAVA类的版本号。
一种类库注册系统,用于维护类注册信息,所述系统包括:
获取单元,用于根据接收到的JAVA类库存储地址获取JAVA类库;
新增单元,用于遍历所述JAVA类库,将所述类注册信息中还未记录的,包含在所述JAVA类库中的新类插入所述类注册信息中;
更新单元,用于遍历所述JAVA类库,根据所述JAVA类库中记录的各个JAVA类的存储地址更新所述注册信息中对应的JAVA类的存储地址。
所述类注册信息包括类名、类库名以及所述类库存储地址。
一种JAVA集群应用系统代码装载的方法,用于所述JAVA集群的服务器中,包括:
接收服务器发送的类装载请求,所述类装载请求中携带待装载的第一JAVA类的类名;
根据所述类名从类注册信息中查找所述第一JAVA类存储地址,根据所述存储地址从所述第一JAVA类的存储地获取所述第一JAVA类的最新版本号;
判断所述第一JAVA类的最新版本号与本地存储的上次装载的所述第一JAVA类的版本号是否相同;
在所述最新版本号与本地存储的上次装载的所述第一JAVA类的版本号相同时获取最新版本的所述第一JAVA类,进行装载,并将所述第一JAVA类在所述类版本记录中版本号进行更新;否则直接装载所述第一JAVA类。
一种类库注册方法,包括:
根据接收到的JAVA类库存储地址获取JAVA类库;
遍历所述JAVA类库,将所述类注册信息中还未记录的,包含在所述JAVA类库中的新类插入所述类注册信息中;
遍历所述JAVA类库,根据所述JAVA类库中记录的各个JAVA类的存储地址更新所述注册信息中对应的JAVA类的存储地址。
可见,在本申请实施例中,接收单元,用于接收服务器发送的类装载请求,所述类装载请求中携带待装载的第一JAVA类的类名;查找单元,用于根据所述类名从类注册信息中查找所述第一JAVA类的实体的存储地址,根据所述存储地址从所述第一JAVA类的存储地获取所述第一JAVA类的最新版本号;判断单元,用于判断所述第一JAVA类的最新版本号与本地存储的上次装载的所述第一JAVA类的版本号是否相同;处理单元,用于在所述第一JAVA类的最新版本号与本地存储的上次装载的所述第一JAVA类的版本号不同时从所述第一JAVA类的存储地获取最新版本的所述第一JAVA类,进行装载,并将所述第一JAVA类在所述类版本记录中版本号进行更新;否则直接装载所述第一JAVA类。本申请实施例所提供的装载方案,无须将最新代码发布到集群中的各服务器,也无需重启集群各服务器的Java应用,只需要在将代码存储服务器,如SVN服务器中代码进行更新,位于集群中的各个服务器就能够自动地装载最新的代码,提升了JAVA集群系统的可用性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请一实施例所提供的装置的结构示意图;
图2为本申请另一实施例所提供本申请实施例所提供的装置的应用场景结构示意图;
图3为本申请一实施例所提供装置中一单元的结构示意图;
图4为本申请一实施例所提供的一系统的结构示意图;
图5为本申请一实施例所提供的一方法的流程图;
图6为本申请一实施例所提供的另一种方法的流程图;
图7为本申请一实施例所提供的方法的流程图;
图8为本申请另一实施例所提供的方法的流程图。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
图1为本申请一实施例所提供的JAVA集群应用系统代码装载的装置的结构示意图,该装置位于所述JAVA集群的每个服务器中。该装置包括:接收单元101、查找单元102、判断单元103以及处理单元104,其中:
接收单元101,用于接收服务器发送的类装载请求,所述类装载请求中携带待装载的第一JAVA类的类名;
第一JAVA类用来指代类装载请求中待装载的JAVA类,例如某个待装载的JAVA类可以是com.foo.helloworld。
查找单元102,用于根据所述类名从类注册信息中查找所述第一JAVA类存储地址,根据所述存储地址从所述第一JAVA类的存储地获取所述第一JAVA类的最新版本号;
可以通过表格对类注册信息进行记录,例如,本申请一实施例中,通过类注册表记录所述类注册信息。
类注册表(ClassTable)可以保存在数据库中,用来记录JAVA类及各个JAVA类的存储地址。图2为本申请实施例所提供装置的一个应用场景图。图中,类注册表保存在在数据库201中,本申请实施例提供的代码装载装置202所在的服务器203与数据库201连接,该装载装置202能够与数据库201通信,读取所述数据库201中类注册表的信息。
JAVA类一般是打包在jar格式的压缩包中。本申请实施例仍然采用这种方式,参见图2,本申请实施例中,将JAVA类打包成jar包后,将jar包上传到SVN服务器204上。通过SVN服务器保存jar包并记录各个jar包的版本信息。SVN(Subversion)是一种流行的源代码版本控制系统,SVN服务器是Subversion用于存储和管理源代码的服务器。存储在SVN服务器上的每个jar包都会有一个SVN地址,根据这个SVN地址可以对jar包进行查找。
图2中,服务器203与数据库201连接,位于服务器203中的装载装置202能够与SVN服务器通信,根据各个jar包的地址从SVN服务器中获取各个JAVA类。
表1为本申请一实施例所提供的类注册表的例子,类注册表中记录的信息包括JAVA类名、该JAVA类所属的jar包的名称以及该JAVA类所属的jar包对应的SVN地址。
表1的示例中给出的JAVA类的类名为:com.foo.helloworld;该JAVA类所属的jar包的名称为hello-biz;该JAVA类所属的jar包对应的SVN地址为:http://svn.foo-inc.com/repos/example/hello.jar。
表1
字段名 | 类型 | 中文含义 | 备注 |
CLASS_NAME | VARchar(100) | JAVA类目 | 如com.foo.helloworld |
JAR_NAME | VARchar(100) | JAR包名 | 如hello-biz |
SVN_URL | VARchar(200) | JAR包对应的svn地址 | 类库SVN地址,如http://svn.foo-inc.com/repos/example/hello.jar |
SVN服务器对JAVA类的每一次更新都进行记录。用户每次修改JAVA代码,并将修改后的JAVA代码通过SVN客户端软件提交到SVN服务器后,SVN服务器都会为修改后的JAVA代码生成一个新的版本,并对新的版本进行记录,实际应用中,可以通过版本号记录各个版本的JAVA代码。对于同一个JAVA类,版本越新则对应的版本号越大。例如一个JAVA类,它的当前版本号是15516,若某用户对这个JAVA类进行了修改,并将修改提交到SVN服务器,SVN服务器会将版本号升级到15517,而原先的15516那个版本成为历史版本。
为了提高数据的查找速度,在本申请的一些实施例中,查找单元可以分别通过类地址散列表和类版本散列表记录所述第一JAVA类的地址信息和版本信息。
具体地,可以通过所述类地址散列表的主键记录所述第一JAVA类的类名,通过所述类地址散列表主键的主键的值记录所述第一JAVA类的存储地址。
表2
主键(key) | java类名,如com.foo.helloworld |
主键的值(Value) | 该java类所在的jar包的svn地址 |
如:http://svn.foo-inc.com/repos/example/helloworld.jar |
表2为一个类地址散列表,从表中可以看出,JAVA类被打包在jar包中,jar包存储在SVN服务器上。该类地址散列表通过主键(key)记录类名,表2中,该类名为com.foo.helloworld;通过主键的主键的值(value)记录JAVA类所属的jar包的SVN地址,表2中,该地址为http://svn.foo-inc.com/repos/example/helloworld.jar。
表3
主键(key) | java类名,如com.foo.helloworld |
主键的值(Value) | 该java类所在的jar包上一次装载的SVN版本号如:22162 |
表3为一个类版本散列表,主键(key)用于记录类名,表3中,该类名为com.foo.helloworld;主键的值(value)用于记录JAVA类所属的jar包上一次装载的SVN版本号,表3中,com.foo.helloworld类所属的jar包上次装载的版本号为:22162。
判断单元103,用于判断所述第一JAVA类的最新版本号与本地存储的上次装载的所述第一JAVA类的版本号是否相同;
类注册信息中记录了所有已经注册的类的信息,而本申请实施例中通过类版本散列表和类地址散列表记录本地的JAVA应用所用到的类的地址和版本信息。
处理单元104,用于在所述第一JAVA类的最新版本号与本地存储的上次装载的所述第一JAVA类的版本号不同时,从所述第一JAVA类的存储地获取最新版本的所述第一JAVA类,进行装载,并将所述第一JAVA类在所述类版本记录中版本号进行更新;否则直接装载所述第一JAVA类。
处理单元每次装载类时,都会通过类版本号判断该类所在的jar包在SVN上是否有更新,如果有更新,则将查找单元中的类版本散列表中对应的版本号更新为最新的主键的值。
在本申请实施例中,如果某个JAVA类已经被装载过,并且版本一致,类装载装置就会从本地直接装载该类并运行;如果版本不一致,则需要从服务器上去获取最新的版本JAVA类,装载并运行。
参见图3,本申请一实施例所提供的装载装置将JAVA类打包在jar格式的压缩包中,并将jar包存储在SVN服务器中时,图1所示的处理单元具体包括:
第一获取子单元301,用于在所述第一JAVA类的最新版本号与本地存储的上次装载的所述第一JAVA类的版本号不同时获取最新版本的所述第一JAVA类所属的jar包对应的SVN地址;
第二获取子单元302,用于根据所述SVN地址获取最新版本的所述第一JAVA类;
第一处理子单元303,用于装载所述第一JAVA类,并将所述第一JAVA类在所述类版本记录中版本号进行更新;
第二处理子单元304,用于在所述最新版本号与本地存储的上次装载的所述第一JAVA类的版本号相同时直接装载所述第一JAVA类。
现有的代码装载方案,需要频繁的将最新的代码发布到集群的各服务器上,比较耗时,浪费人力物力。尤其是在集群中服务器比较多的情况下,代码装载的效率就更为低下。本申请实施例所提供的装载装置,无须将最新代码发布到集群中的各服务器,也无需重启集群各服务器的Java应用,只需要在将代码存储服务器,如SVN服务器中代码进行更新,位于集群中的各个服务器就能够自动地装载最新的代码,提升了JAVA集群系统的可用性,提高了代码装载的效率。
此外,现有的代码装载方案中,在程序装载过程中,如果出现集群中的某几台服务器的代码漏升级了,或者部分服务器代码升级失败了,则会出现集群中各服务器新老不同版本的代码同时运行的情况,可能会破坏数据,造成不可逆的严重后果。而本申请实施例提供的代码装载装置使得各个服务器能够根据代码存储服务器,如SVN服务器中的代码进行更新,保证各个服务器都能自动地装载到最新的版本,避免了因各服务器因为新老不同版本的代码同时运行产生破坏数据情况的出现,从而避免了不可逆的严重后果的出现,提高了整个JAVA集成应用系统运行的安全性。
为了进一步保证装载装置能够从类注册表中获得准确地最全面的类信息,本申请实施例还提供一种类库注册系统,专门用于维护类注册表,参见图4,该类库注册系统包括:
获取单元401,用于根据接收到的JAVA类库存储地址获取JAVA类库;
新增单元402,用于遍历所述JAVA类库,将所述类注册表中还未记录的,包含在所述JAVA类库中的新类插入所述类注册表中;
更新单元403,用于遍历所述JAVA类库,根据所述JAVA类库中记录的各个JAVA类的存储地址更新所述注册表中对应的JAVA类的存储地址。
本申请实施例所提供的类库注册系统能够即时将JAVA类库中的新类记录到类注册表中,并且能够对已经记录在类注册表中的JAVA类,也能够根据JAVA类库中记录的各个JAVA类的存储地址更新所述注册表中对应的JAVA类的存储地址,以保证类注册表中始终记录的是最新的最全的JAVA类信息,为装载装置的装载工作提供有力的保障。
本申请实施例还提供一种JAVA集群应用系统代码装载的方法,用于所述JAVA集群的服务器中,参见图5,该方法包括:
S501,接收服务器发送的类装载请求,所述类装载请求中携带待装载的第一JAVA类的类名;
S502,根据所述类名从类注册表中查找所述第一JAVA类存储地址,根据所述存储地址从所述第一JAVA类的存储地获取所述第一JAVA类的最新版本号;
为了提高数据的查找速度,在本申请的一些实施例中,可以通过类地址散列表记录所述类注册表中的内容。具体地,可以通过所述类地址散列表的主键记录所述第一JAVA类的类名,通过所述类地址散列表的主键的值记录所述第一JAVA类存储地址。
可选地,还可以通过类版本散列表记录所述第一JAVA类的版本信息,具体地,通过所述类版本散列表的主键记录所述第一JAVA类的类名,通过所述类版本散列表的主键的值记录上次装载的所述第一JAVA类的版本信息。
S503,判断所述第一JAVA类的最新版本号与本地存储的上次装载的所述第一JAVA类的版本号是否相同;
S504,在所述第一JAVA类的最新版本号与本地存储的上次装载的所述第一JAVA类的版本号不同时获取最新版本的所述第一JAVA类,进行装载,并将所述第一JAVA类在所述类版本记录中版本号进行更新;否则直接装载所述第一JAVA类。
为了进一步保证图5所示的装载方法的实现,本申请实施例还提供一种类库注册方法,参见图6,该方法包括:
S601,根据接收到的JAVA类库存储地址获取JAVA类库;
S602,遍历所述JAVA类库,将所述类注册表中还未记录的,包含在所述JAVA类库中的新类插入所述类注册表中;
所述类注册表中的内容包括类名、类库名以及所述类库存储地址。
S603,遍历所述JAVA类库,根据所述JAVA类库中记录的各个JAVA类的存储地址更新所述注册表中对应的JAVA类的存储地址。
本申请实施例所提供的方法通过S602实现了对新类的登记,保证了JAVA类库的完整性,通过S603能够实时地对各个JAVA类的存储地址进行更新,保证了JAVA类库所保存信息的准确性,为顺利实现图5所示的方法提供了有利的保障。
图7为本申请另一实施例所提供的代码装置方法,在该方法中,程序员甲写了一个JAVA类,该JAVA类的功能是在网页上打印“hello,world”这句话。这个类的文件名是helloworld.class,被打包在hello.jar这个JAVA包中,被上传到SVN服务器。
本申请实施例中,hello.jar这个JAVA包中所有的类以及hello.jar这个JAVA包对应SVN服务器的url记入被记入类注册表(ClassTable)中。
当JAVA集群中的某个服务器上的一个程序aaaa在执行过程中需要调用helloworld.class这个类时,本申请实施例所提供的代码装置方法具体为:
S701、当程序aaaa启动的时候,位于该服务器中的类装载装置遍历ClassTable中的记录,将所有的类以及对应的SVN URL记录到本地的类地址散列表(SvnUrlMap)里。
S702、当程序aaaa执行到调用helloworld.class时,类装载装置从SvnUrlMap中找到helloworld.class对应jar包的SVN URL。
S703、根据SVN URL访问SVN服务器,获取helloworld.class所对应的hello.jar包,并获取helloworld.class的最新版本号。
例如此时,helloworld.class的最新版本号为10000。
S704、将helloworld.class的类名以及最新版本号记入本地的版本散列表(ClassVersionMap),该散列表的key为“helloworld”,主键的值为10000。
S705、从SVN服务器下载helloworld.class。
S706、加载helloworld.class并运行该类。
假设在此之后,程序员甲又修改了helloworld.class,并重新打包hello.jar,然后提交到SVN服务器,SVN服务器接受了最新的hello.jar,并产生了一个最新的版本号10001。
此时aaaa若再次运行,当它再次要调用helloworld.class的时候,参见图8,本申请实施例所提供的装载方法为:
S801、aaaa所在的服务器中的装载装置根据“helloworld”从SvnUrlMap中查找到对应的SVN URL。
因为通过图7所示的方法,helloworld这个类的信息已经被记录在本次,所以当该方法再次调用该类时,可以直接从本地的SvnUrlMap中查找该类对应的SVN URL。
S802、根据SVN URL访问SVN服务器,获取helloworld.class的最新版本号为10001,
S803、将helloworld.class的最新版本号与本地存储的ClassVersionMap中记录的helloworld.class的版本号进行比较,判断两者是否一致,如果一致,进入步骤S805,否则进入S804。
本申请实施例中,本地记录的helloworld.class的版本号为10000,而从SVN服务器上获得的helloworld.class最新的版本号为10001,通过比较发现helloworld.class最新的版本号比本地记录的版本号要大,说明helloworld.class更新了。
S804、根据SVN URL从SVN服务器上下载最新的helloworld.class。
S805、加载helloworld.class,并且运行。
本申请实施例所提供的方法,预先对各个新类进行登记。当某个类可能被调用时,根据该类的登记信息获取该类的存储地址,并通过存储地址从该类的存储地获得该类的版本信息,通过比较获得该类最新的版本,并进行加载和调用。本申请实施例所提供的方法无须将最新代码发布到集群中的各服务器,也无需重启集群各服务器的JAVA应用,只需要在将代码存储服务器,如SVN服务器中代码进行更新,位于集群中的各个服务器就能够自动地装载最新的代码,提升了JAVA集群系统的可用性,提高了代码装载的效率。
为了描述的方便,本申请实施例在描述装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本申请可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
虽然通过实施例描绘了本申请,本领域普通技术人员知道,本申请有许多变形和变化而不脱离本申请的精神,希望所附的权利要求包括这些变形和变化而不脱离本申请的精神。
Claims (10)
1.一种JAVA集群应用系统代码装载的装置,其特征在于,位于所述JAVA集群的服务器中,包括:
接收单元,用于接收服务器发送的类装载请求,所述类装载请求中携带待装载的第一JAVA类的类名;
查找单元,用于根据所述类名从类注册信息中查找所述第一JAVA类的实体的存储地址,根据所述存储地址从所述第一JAVA类的存储地获取所述第一JAVA类的最新版本号,其中,所述类注册信息通过类注册表记录,所述类注册信息包括JAVA类名、该JAVA类所属的jar包的名称以及该JAVA类所属的jar包对应的SVN地址,所述类注册表保存于数据库中,通过与所述数据库通信读取类注册表中的信息,其中,所述类注册表由类库注册系统维护,所述类库注册系统将JAVA类库中的新类记录到类注册表,所述类库注册系统根据JAVA类库中记录的各个JAVA类的存储地址更新所述注册表中对应的JAVA类的存储地址,所述SVN地址为存储在SVN服务器上的jar包对应的存储地址,所述SVN服务器对JAVA类的每一次更新都进行记录,用户每次修改JAVA代码,并将修改后的JAVA代码通过SVN客户端软件提交到SVN服务器后,SVN服务器都会为修改后的JAVA代码生成一个新的版本,并对新的版本进行记录,通过版本号记录各个版本的JAVA代码;
判断单元,用于判断所述第一JAVA类的最新版本号与本地存储的上次装载的所述第一JAVA类的版本号是否相同;
处理单元,用于在所述第一JAVA类的最新版本号与本地存储的上次装载的所述第一JAVA类的版本号不同时从所述第一JAVA类的存储地获取最新版本的所述第一JAVA类,进行装载,并将所述第一JAVA类在本地的类版本记录中版本号进行更新;否则直接装载所述第一JAVA类。
2.根据权利要求1所述的装置,其特征在于,所述查找单元中通过类地址散列表记录所述类注册信息中的内容。
3.根据权利要求2所述的装置,其特征在于,通过所述类地址散列表的主键记录所述第一JAVA类的类名,通过所述类地址散列表的主键的值记录所述第一JAVA类存储地址。
4.根据权利要求1所述的装置,其特征在于,所述查找单元通过类版本散列表记录所述第一JAVA类的版本信息。
5.根据权利要求4所述的装置,其特征在于,通过所述类版本散列表的主键记录所述第一JAVA类的类名,通过所述类版本散列表的主键的值记录上次装载的所述第一JAVA类的版本号。
6.一种JAVA集群应用系统代码装载的方法,其特征在于,用于所述JAVA集群的服务器中,包括:
接收服务器发送的类装载请求,所述类装载请求中携带待装载的第一JAVA类的类名;
根据所述类名从类注册信息中查找所述第一JAVA类存储地址,根据所述存储地址从所述第一JAVA类的存储地获取所述第一JAVA类的最新版本号,其中,所述类注册信息通过类注册表记录,所述类注册信息包括JAVA类名、该JAVA类所属的jar包的名称以及该JAVA类所属的jar包对应的SVN地址,所述类注册表保存于数据库中,通过与所述数据库通信读取类注册表中的信息,其中,所述类注册表由类库注册系统维护,所述类库注册系统将JAVA类库中的新类记录到类注册表,所述类库注册系统根据JAVA类库中记录的各个JAVA类的存储地址更新所述注册表中对应的JAVA类的存储地址,所述SVN地址为存储在SVN服务器上的jar包对应的存储地址,所述SVN服务器对JAVA类的每一次更新都进行记录,用户每次修改JAVA代码,并将修改后的JAVA代码通过SVN客户端软件提交到SVN服务器后,SVN服务器都会为修改后的JAVA代码生成一个新的版本,并对新的版本进行记录,通过版本号记录各个版本的JAVA代码;
判断所述第一JAVA类的最新版本号与本地存储的上次装载的所述第一JAVA类的版本号是否相同;
在所述最新版本号与本地存储的上次装载的所述第一JAVA类的版本号不同时获取最新版本的所述第一JAVA类,进行装载,并将所述第一JAVA类在本地的类版本记录中版本号进行更新;否则直接装载所述第一JAVA类。
7.根据权利要求6所述的方法,其特征在于,通过类地址散列表记录所述类注册信息中的内容。
8.根据权利要求7所述的方法,其特征在于,通过类地址散列表记录所述类注册信息中的内容具体为:
通过所述类地址散列表的主键记录所述第一JAVA类的类名,通过所述类地址散列表的主键的值记录所述第一JAVA类存储地址。
9.根据权利要求6所述的方法,其特征在于,通过类版本散列表记录所述第一JAVA类的版本信息。
10.根据权利要求9所述的方法,其特征在于,通过类版本散列表记录所述第一JAVA类的版本信息具体为:
通过所述类版本散列表的主键记录所述第一JAVA类的类名,通过所述类版本散列表的主键的值记录上次装载的所述第一JAVA类的版本信息。
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910221980.7A CN102073512B (zh) | 2009-11-23 | 2009-11-23 | 一种java集群应用系统代码装载及升级装置和方法 |
JP2012539890A JP5705869B2 (ja) | 2009-11-23 | 2010-10-01 | クラスタベースのjavaアプリケーションシステムのコードをロードおよび更新する装置および方法 |
EP10831944.3A EP2504763A4 (en) | 2009-11-23 | 2010-10-01 | DEVICE AND METHOD FOR LOADING AND UPDATING CODES OF A CLUSTER-BASED JAVA APPLICATION SYSTEM |
PCT/US2010/051087 WO2011062685A1 (en) | 2009-11-23 | 2010-10-01 | Apparatus and method for loading and updating codes of cluster-based java application system |
US13/001,609 US8555252B2 (en) | 2009-11-23 | 2010-10-01 | Apparatus and method for loading and updating codes of cluster-based java application system |
HK11107095.6A HK1153018A1 (zh) | 2009-11-23 | 2011-07-08 | 種 集群應用系統代碼裝載及升級裝置和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910221980.7A CN102073512B (zh) | 2009-11-23 | 2009-11-23 | 一种java集群应用系统代码装载及升级装置和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102073512A CN102073512A (zh) | 2011-05-25 |
CN102073512B true CN102073512B (zh) | 2014-07-16 |
Family
ID=44032058
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910221980.7A Active CN102073512B (zh) | 2009-11-23 | 2009-11-23 | 一种java集群应用系统代码装载及升级装置和方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US8555252B2 (zh) |
EP (1) | EP2504763A4 (zh) |
JP (1) | JP5705869B2 (zh) |
CN (1) | CN102073512B (zh) |
HK (1) | HK1153018A1 (zh) |
WO (1) | WO2011062685A1 (zh) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010009195A1 (en) | 2008-07-16 | 2010-01-21 | Schering Corporation | Bicyclic heterocycle derivatives and use thereof as gpr119 modulators |
US8914784B2 (en) | 2011-06-10 | 2014-12-16 | International Business Machines Corporation | Method and system for checking the consistency of application jar files |
CN102521371A (zh) * | 2011-12-16 | 2012-06-27 | 北京新媒传信科技有限公司 | 一种文件通过web上传并自动重启服务的方法及系统 |
CN102495736A (zh) * | 2011-12-19 | 2012-06-13 | 曙光信息产业(北京)有限公司 | 一种在可执行文件中标识软件代码svn版本的方法和系统 |
CN103491111B (zh) * | 2012-06-08 | 2016-12-14 | 阿里巴巴集团控股有限公司 | 无线应用发布、实现方法与装置 |
US8966441B2 (en) * | 2012-07-12 | 2015-02-24 | Oracle International Corporation | Dynamic scripts to extend static applications |
CN104202401B (zh) * | 2012-10-16 | 2019-03-22 | 北京奇虎科技有限公司 | 应用升级系统 |
CN102882978A (zh) * | 2012-10-16 | 2013-01-16 | 北京奇虎科技有限公司 | 服务器和应用升级方法 |
CN103226488B (zh) * | 2013-05-06 | 2016-08-24 | 中国农业银行股份有限公司 | 一种形式化代码生成中的效率控制方法及装置 |
CN103248524B (zh) * | 2013-05-09 | 2016-04-27 | 北京泛华恒兴科技有限公司 | 基于柔性测试技术的测试数据版本控制方法、装置及系统 |
CN104216729B (zh) * | 2013-06-05 | 2017-10-13 | 阿里巴巴集团控股有限公司 | 应用系统的逻辑模块更新实现方法及装置 |
CN106528071B (zh) * | 2015-09-15 | 2019-08-13 | 阿里巴巴集团控股有限公司 | 目标代码的选取方法及装置 |
CN107451172B (zh) * | 2016-03-31 | 2021-05-28 | 阿里巴巴集团控股有限公司 | 用于版本管理系统的数据同步方法及设备 |
CN106557423A (zh) * | 2016-11-22 | 2017-04-05 | 深圳市掌世界网络科技有限公司 | 一种互联网代码自动发布方法及系统 |
US10649753B2 (en) * | 2016-12-14 | 2020-05-12 | Verizon Patent And Licensing Inc. | Enabling user device application modularity |
CN108345467B (zh) * | 2017-03-14 | 2021-04-16 | 平安科技(深圳)有限公司 | 版本树文件的更新方法和装置 |
CN107239313A (zh) * | 2017-06-09 | 2017-10-10 | 中国建设银行股份有限公司 | Spring应用服务的升级方法和存储介质 |
US10572275B2 (en) * | 2017-06-15 | 2020-02-25 | Microsoft Technology Licensing, Llc | Compatible dictionary layout |
CN109144744A (zh) * | 2017-06-28 | 2019-01-04 | 北京京东尚科信息技术有限公司 | 任务处理系统、方法和装置 |
CN107783757A (zh) * | 2017-10-26 | 2018-03-09 | 福建中金在线信息科技有限公司 | 一种代码规范方法及装置 |
CN107729066B (zh) * | 2017-11-08 | 2021-08-03 | 重庆扬讯软件技术股份有限公司 | 一种基于svn资源库自动化构建发布方法与装置 |
CN108717359A (zh) * | 2018-05-10 | 2018-10-30 | 北京酷我科技有限公司 | 一种基于离线包的app模块的更新方法 |
CN110399352B (zh) * | 2019-06-18 | 2023-05-30 | 平安科技(深圳)有限公司 | 处理svn日志文件的方法、装置、设备及存储介质 |
CN113157314B (zh) * | 2021-04-30 | 2023-10-13 | 云南电网有限责任公司 | 一种高效智能源代码安全管理平台 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060074994A1 (en) * | 2004-09-24 | 2006-04-06 | Thomas Smits | Storing and using classes in databases |
CN101344858A (zh) * | 2008-09-01 | 2009-01-14 | 深圳市金蝶中间件有限公司 | 一种j2ee工程部署的方法和装置 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6175855B1 (en) * | 1996-12-20 | 2001-01-16 | Siemens Aktiengesellschaft | Method for instantiating a class having different versions |
JPH11212793A (ja) * | 1998-01-30 | 1999-08-06 | Fuji Xerox Co Ltd | 画像処理装置 |
US6732139B1 (en) | 1999-08-16 | 2004-05-04 | International Business Machines Corporation | Method to distribute programs using remote java objects |
US8205193B2 (en) * | 2001-06-11 | 2012-06-19 | Hewlett-Packard Development Company, L.P. | Runtime updating of virtual machine class files |
US20040153558A1 (en) | 2002-10-31 | 2004-08-05 | Mesut Gunduc | System and method for providing java based high availability clustering framework |
US7206910B2 (en) | 2002-12-17 | 2007-04-17 | Oracle International Corporation | Delta object replication system and method for clustered system |
US7533389B2 (en) * | 2003-06-20 | 2009-05-12 | Sun Microsystems, Inc. | Dynamic loading of remote classes |
US7519964B1 (en) | 2003-12-03 | 2009-04-14 | Sun Microsystems, Inc. | System and method for application deployment in a domain for a cluster |
US7730450B2 (en) * | 2004-08-12 | 2010-06-01 | National Instruments Corporation | Automatic versioning and data mutation of user-defined data types |
US7555746B2 (en) | 2004-12-09 | 2009-06-30 | Sap Ag | System and method for registering native libraries with non-native enterprise program code |
US20060271510A1 (en) | 2005-05-25 | 2006-11-30 | Terracotta, Inc. | Database Caching and Invalidation using Database Provided Facilities for Query Dependency Analysis |
US20090276754A1 (en) | 2008-05-01 | 2009-11-05 | Kabira Technologies, Inc. | Java virtual machine having integrated transaction management system |
US8255430B2 (en) | 2008-08-26 | 2012-08-28 | Caringo, Inc. | Shared namespace for storage clusters |
US8612383B2 (en) | 2008-11-05 | 2013-12-17 | Mastercard International Incorporated | Method and systems for caching objects in a computer system |
-
2009
- 2009-11-23 CN CN200910221980.7A patent/CN102073512B/zh active Active
-
2010
- 2010-10-01 WO PCT/US2010/051087 patent/WO2011062685A1/en active Application Filing
- 2010-10-01 JP JP2012539890A patent/JP5705869B2/ja not_active Expired - Fee Related
- 2010-10-01 EP EP10831944.3A patent/EP2504763A4/en not_active Ceased
- 2010-10-01 US US13/001,609 patent/US8555252B2/en active Active
-
2011
- 2011-07-08 HK HK11107095.6A patent/HK1153018A1/zh unknown
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060074994A1 (en) * | 2004-09-24 | 2006-04-06 | Thomas Smits | Storing and using classes in databases |
CN101344858A (zh) * | 2008-09-01 | 2009-01-14 | 深圳市金蝶中间件有限公司 | 一种j2ee工程部署的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
US8555252B2 (en) | 2013-10-08 |
HK1153018A1 (zh) | 2012-03-16 |
WO2011062685A1 (en) | 2011-05-26 |
CN102073512A (zh) | 2011-05-25 |
JP5705869B2 (ja) | 2015-04-22 |
EP2504763A1 (en) | 2012-10-03 |
US20110265071A1 (en) | 2011-10-27 |
JP2013511766A (ja) | 2013-04-04 |
EP2504763A4 (en) | 2013-07-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102073512B (zh) | 一种java集群应用系统代码装载及升级装置和方法 | |
CN105100191B (zh) | 一种云编译实现Java应用安装的方法、装置及系统 | |
CN107346252B (zh) | 应用更新方法和装置 | |
US8972967B2 (en) | Application packages using block maps | |
CN109491695A (zh) | 一种集成安卓应用的增量更新方法 | |
CN106610853A (zh) | 一种应用部署方法和装置 | |
US20080216066A1 (en) | Program upgrade system and method for ota-capable mobile terminal | |
CN110597542B (zh) | 软件自动ota升级方法及装置、电子设备 | |
KR20180137554A (ko) | 패치 업그레이드 기반 파일 처리 방법 및 디바이스, 단말기, 및 저장 매체 | |
CN105389182A (zh) | 一种软件升级方法及装置 | |
CN103559065B (zh) | 一种ota升级的方法和系统 | |
CN103647816A (zh) | 一种应用软件升级的方法及装置 | |
CN102833350A (zh) | WebApp更新的处理方法和处理装置 | |
CN109032631B (zh) | 应用程序补丁包获取方法、装置、计算机设备及存储介质 | |
CN104156243A (zh) | 一种应用分发和快速加载运行的系统及方法 | |
CN105302587A (zh) | 数据更新方法及装置 | |
CN108647032B (zh) | 应用加载方法及装置、计算机装置和计算机可读存储介质 | |
CN108540509B (zh) | 一种终端浏览器的处理方法、装置及服务器、智能终端 | |
CN104750528A (zh) | 一种Android程序中的组件管理方法和装置 | |
CN114185491B (zh) | 一种分区文件的下载方法、装置、存储介质及计算机设备 | |
CN112631622A (zh) | 应用安装方法、装置、服务器及计算机可读介质 | |
CN107797818A (zh) | 应用程序升级方法及装置 | |
CN104699511A (zh) | 插件升级方法及装置 | |
CN111290801A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN110532016B (zh) | 版本管理方法、版本更新方法和版本管理系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1153018 Country of ref document: HK |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: GR Ref document number: 1153018 Country of ref document: HK |