CN101771762B - 业务***中业务动态加载***及方法 - Google Patents

业务***中业务动态加载***及方法 Download PDF

Info

Publication number
CN101771762B
CN101771762B CN200910076217XA CN200910076217A CN101771762B CN 101771762 B CN101771762 B CN 101771762B CN 200910076217X A CN200910076217X A CN 200910076217XA CN 200910076217 A CN200910076217 A CN 200910076217A CN 101771762 B CN101771762 B CN 101771762B
Authority
CN
China
Prior art keywords
file
java class
business
class file
java
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.)
Expired - Fee Related
Application number
CN200910076217XA
Other languages
English (en)
Other versions
CN101771762A (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.)
Beijing University of Posts and Telecommunications
Original Assignee
Beijing University of Posts and Telecommunications
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 Beijing University of Posts and Telecommunications filed Critical Beijing University of Posts and Telecommunications
Priority to CN200910076217XA priority Critical patent/CN101771762B/zh
Publication of CN101771762A publication Critical patent/CN101771762A/zh
Application granted granted Critical
Publication of CN101771762B publication Critical patent/CN101771762B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明公开了一种业务***中业务动态加载的方法,包括:A将新增业务或/和更新业务的应用的JAVA类文件存储于业务新增及更新指定的文件夹中,参照配置模板编写新增业务或/和更新业务的JAVA类文件的配置文件,并用新编写完成的配置文件直接覆盖旧的配置文件;B线程监控文件夹中设定种类的JAVA类文件的实时新增和更新状况,在有新的JAVA类文件导入时,提取新的JAVA类文件,存储到业务***所在的内存中;C接收到用户的业务请求后,业务***获取***的配置文件并自动进行解析,根据配置文件调用业务***所在的内存中相应的JAVA类文件,JAVA类文件按其自身的逻辑被执行,将执行结果提供至用户,使用户获得业务支持。本发明同时公开了一种实现上述方法的***。本发明实现了业务的动态加载。

Description

业务***中业务动态加载***及方法
技术领域
本发明涉及一种业务加载的方法,尤其涉及一种业务***中业务动态加载***及方法。
背景技术
目前的业务***均是根据用户的需求而设计的,业务***为用户提供了各种各样的业务服务,这大大方便了用户对业务***的应用。随着技术的进步、环境的变化,对于任一客户群而言,其需求也总是变化的。为满足用户需求,即使是同一业务,经常进行更新也是必要的。这里所指的业务***,是指各种具体的应用***,特别是网络上的服务器端的应用***,支持相关业务的应用***等。业务更新包括业务升级、业务扩展、新增业务等。例如目前的电信业务***中,除了一些正常的电信业务外,运营商针对用户的需求,还推出有相关的增值业务如电话声讯业务、服务查询业务、网络服务等。对于运营商来说,增值服务的推出或更新一般能拓展其收入,运营商乐意进行业务升级的操作,但对于业务***而言,升级操作往往需要服务器重新启动,这必然导致所有的业务中断,将对运营商造成收入损失,同时对用户而言也会因服务中断而导致不必要的损失,为降低运营损失及避免给用户带来服务上的不便,电信业务的升级是相当谨慎的,不得不升级的操作往往选择在凌晨使用用户较少的时候,即便如此,中断业务的损失也是相当大,这对于业务***的用户特别是运营商级的用户而言,是相当棘手的一对矛盾。针对于此,目前常用的技术手段多是采用冗余备份的方式,即同时配备两套***,当需要升级更新时,在冗余***上进行更新,而当更新完毕后,用冗余设备替换当前使用的设备。这种方式虽然能大大缩短中断的时间,但更换设备时还是得中断所有的业务,如果操作不熟练,比更新设备花费的时间还要长。能直接在业务***运行的设备上进行业务加载而不必重启***,是当前业务***用户所渴望解决的问题。
发明内容
有鉴于此,本发明的主要目的在于提供一种业务***中业务动态加载***及方法,能在不停止***业务的情况下实现新增或更新业务的加载,加载完毕后不必重启业务***。
为达到上述目的,本发明的技术方案是这样实现的:
一种业务***中业务动态加载的方法,在所述业务***中指定新增及更新业务存放的文件夹,对配置新增JAVA类文件及更新JAVA类文件的配置文件进行初始化配置,并设置监控所述文件夹中设定的JAVA类文件更新状况的线程;根据用户需求确定所述业务***的新增业务或/和更新业务,在所述业务***的开发环境下编译所述新增业务或/和更新业务的应用,对所述新增业务或/和更新业务的应用进行调试,调试成功后将所述新增业务或/和更新业务的应用对应的JAVA源文件生成JAVA类文件;所述方法包括以下步骤:
A、将所述新增业务或/和更新业务的应用的JAVA类文件存储于所述业务新增及更新指定的文件夹中,参照配置模板编写新增业务或/和更新业务的JAVA类文件的配置指令,从而实现配置文件的编写,并用新编写完成的配置文件直接覆盖旧的配置文件;所述配置文件分为两个,一个是监控新增文件的配置文件,一个是完成更新映射的配置文件;
B、所述线程监控文件夹中设定种类的JAVA类文件的实时新增和更新状况,在有新的JAVA类文件导入时,提取新的JAVA类文件,存储到业务***所在的内存中;
C、接收到用户的业务请求后,业务***获取***的配置文件并自动进行解析,根据所述配置文件调用业务***所在的内存中相应的JAVA类文件,在业务***的执行环境下,JAVA类文件按其自身的逻辑被执行,将JAVA类文件的执行结果提供至用户,使用户获得业务支持;其中,被执行的JAVA类文件包括新增业务或/和更新业务的JAVA类文件。
其中,所述步骤B中提取所述新的JAVA类文件存储到所述业务***所在的内存中,具体为:通过解析监控新增文件的配置文件中配置的路径名自动发现该路径下的新增JAVA类文件,并通过类加载器将其加载到业务***所在的内存中。
其中,所述设置所述JAVA类文件新增到所述业务***中的配置模板,具体为:根据所述JAVA类文件的路径、存储地址的信息建立所述JAVA类文件发现的模板,将新增JAVA类文件所在的路径或存储地址信息替换所述模板中的路径、存储地址信息,即编写所述新增JAVA类文件的配置文件;设置所述JAVA类文件替换所述业务***中原JAVA类文件的配置模板,具体为:根据所述JAVA类文件的名称、存储地址的信息建立欲更新的JAVA类文件的调用及阻止待替换的JAVA类文件调用的应用的模板,将更新JAVA类文件及待更新JAVA类文件的名称或存储地址分别替换所述应用的模板中的更新JAVA类文件及待更新JAVA类文件的名称、存储地址,即编写所述更新JAVA类文件的配置文件。
其中,所述步骤A中用新编写完成的配置文件直接覆盖旧的配置文件,具体为:将编写好的已测试成功的配置文件覆盖掉原先的配置文件,以避免直接进行配置而导致配置中出现异常。
其中,所述业务***为JAVA支持的业务***,所述业务包括各种Web服务业务、电信服务业务、基于各种操作***的服务业务。
其中,所述步骤B中提取所述新的JAVA类文件存储到所述业务***所在的内存中,具体为:查找具有设定名称的类或所述类的接口的二进制表示,构造供JAVA虚拟机的执行引擎引用和解释执行的与所述类或类的接口对应的内存结构。
一种业务***中业务动态加载***,包括:
设置单元,用于在所述业务***中设置新增及更新业务指定的文件夹;
线程监控单元,用于监控配置文件的改变及所述文件夹中JAVA类文件的新增和更新状况;
JAVA类文件生成单元,用于根据用户需求确定所述业务***的新增业务或/和更新业务,在所述业务***的开发环境下编译所述新增业务或/和更新业务的应用,对所述新增业务或/和更新业务的应用进行调试,调试成功后生成所述新增业务或/和更新业务相应JAVA类文件;将所述新增业务或/和更新业务的应用的JAVA类文件存储于所述业务新增及更新指定的文件夹中;
配置模板设置单元,参照配置模板编写新增业务或/和更新业务的JAVA类文件的配置指令完成配置文件的编写,并用新编写完成的配置文件直接覆盖旧的配置文件;
JAVA类文件新增及更新单元,在所述线程监控单元监控到所述文件夹中有设定种类的新的JAVA类文件导入时,提取所述新的JAVA类文件,存储到所述业务***所在的内存中;
执行单元,接收到用户的业务请求后,业务***获取***的配置文件并自动进行解析,根据配置文件调用业务***所在的内存中相应的JAVA类文件,在业务***的执行环境下,JAVA类文件按其自身的逻辑被执行,将JAVA类文件的执行结果提供至用户,使用户获得业务支持;其中,被执行的JAVA类文件包括新增业务或/和更新业务的JAVA类文件。
其中,所述业务***为JAVA支持的业务***,所述业务包括各种Web服务业务、电信服务业务、基于各种操作***的服务业务。
本发明在为业务***加载新业务或进行业务更新时,将所编译的业务应用生成的文件导入到事先指定的文件夹中,同时初始化设置待加载文件的配置文件,将描述所述配置文件的配置文件存放到业务***中,同时设置监控文件夹中设定的文件的变更情况的线程,运行所述业务***时,线程监控所设置文件夹中设定的文件的变更情况,当有新的文件导入时,提取所述文件并存储到业务***所在的内存中,业务***进行业务提供时,根据各业务的配置文件调用业务***所在的内存中的业务文件,解析所述文件并执行之,从而完成业务***中的业务支持。在业务文件导入业务***后,所设置的线程即刻将其导入到业务***所在的内存中,业务***根据所述业务的配置文件查找内存中存储的业务文件,通过对其解析并执行而实现其业务。这样,无论导入多少业务文件,只要该文件的编译没有问题,均可直接获得执行,从而不必重新启动业务***即可实现业务的加载。本发明在不重启***的情况下实现了业务的加载。本发明的技术方案实现简单,加载业务后可以不重启业务***,从而在业务***不中断业务的情况下实现了业务加载,对于如电信运营***而言,大大降低了其业务加载所受的损失,同时也避免了这些业务***的普通用户因业务中断所造成的损失。
附图说明
图1为本发明实施例的业务***中业务动态加载的方法的流程图;
图2为本发明实施例的业务***中业务动态加载***的结构示意图;
图3为本发明实施例的业务***中业务动态加载***中各单元核心模块逻辑结构示意图;
图4为本发明实施例的业务***中业务动态加载***中配置文件监控模块的实现结构示意图;
图5为本发明实施例的业务***中业务动态加载***中新增及更新JAVA类文件监控模块的实现结构示意图;
图6为本发明实施例的业务***中业务动态加载***中新增及更新文件注册加载模块的实现结构示意图;
图7为本发明实施例的业务***中业务动态加载***中配置文件解析模块的实现结构示意图。
具体实施方式
以下结合附图对本发明作进一步详细描述。
图1为本发明实施例的业务***中业务动态加载的方法的流程图,如图1所示,本发明业务***中业务动态加载的方法包括以下步骤:
步骤101:指定新增文件及更新文件所需存放的文件夹,对配置新增JAVA类文件及更新JAVA类文件的配置文件进行初始化配置,在业务***中设置监控文件夹中设定的JAVA类文件新增和更新状况的线程;根据用户需求确定业务***的新增业务或/和更新业务,在业务***的开发环境下编译新增业务或/和更新业务的应用,对新增业务或/和更新业务的应用进行调试,调试成功后新增业务或/和更新业务的应用对应的类生成相应的JAVA类文件。
这里,业务***即是支持各种业务的应用***,如电信运营***、会员管理信息***、Web服务***、各种服务器上装载的服务业务等,这些业务***均是通过JAVA语言开发实现的。由于业务的编译不是本发明的重点,各种语言所执行的逻辑运算及编译理论基本相同,这里不再对业务***作更多描述。
所述的文件夹根据业务***中新增和更新的情况进行设定,以***开发的逻辑结构为主要方向在配置文件中进行相应的配置即可,以JAVA语言的业务***为例,解释一下JAVA类文件。在JAVA业务***的标准实现中,JAVA编译器为每个JAVA类(业务)生成一个JAVA类文件,这种文件采用JAVA虚拟机(JVM)定义的JAVA类文件格式保存,并由JAVA虚拟机加载并解释执行。针对当前的业务***,***维护人员确定要加载或更新的业务,根据业务所需的功能,进行相应的开发即编译支持所述业务的应用,编译调试完毕后,通过JAVA编译器或类似的语言编译器将所述业务的应用生成相应的JAVA类文件。需要说明的是,JAVA类文件是一个格式文件,并不受编译环境的限制,任何JAVA编译环境均可生成相应的JAVA类文件。
设置JAVA类文件新增到业务***中的配置模板:根据所述JAVA类文件的路径、存储地址的信息建立所述JAVA类文件发现的模板,将新增JAVA类文件所在的路径或存储地址信息替换所述模板中的路径、存储地址信息,即编写所述新增JAVA类文件的配置文件;设置所述JAVA类文件替换所述业务***中原JAVA类文件的配置模板,具体为:根据所述JAVA类文件的名称、存储地址的信息建立欲更新的JAVA类文件的调用及阻止待替换的JAVA类文件调用的应用的模板,将更新JAVA类文件及待更新JAVA类文件的名称或存储地址分别替换所述应用的模板中的更新JAVA类文件及待更新JAVA类文件的名称、存储地址,即编写所述更新JAVA类文件的配置文件。
这里所述替换并不是通常的将新文件覆盖旧文件,而是指:在一段时间内,两个文件同时存在,更新时,只是在逻辑上进行替换即程序调用新文件而不调用旧文件,进而完成替换。当功能更新完成后,之后登录的用户访问的是新功能。而更新之前已经进行访问的用户访问的仍然是旧功能,但是在业务中端后的下一次访问的便是新功能,这也正是更新***不影响已登录用户访问旧功能,新登录用户访问新功能的原理所在。所述JAVA类文件替换所述业务***中原JAVA类文件的配置模板如下:
以网页所支持业务为例,在updatedes.xml文件配置如下:
  <update>
    <classdir>
       <unload>cn.bupt.pj.add.Jconn</unload>
       <reload>cn.bupt.pj.add.NewJconn</reload>
    </classdir>
  </update>
其中,cn.bupt.pj.add.Jconn为被更新的类;cn.bupt.pj.add.NewJconn为更新类。
以会员管理***中的投票业务的更新为例,在没有使用本***之前,业务程序初始化一个业务JAVA类文件的对象和进行这个类方法的配置文件(程序一)为:
1.ChartService chartServ=New ChartService();
2.String filename=chartServ.generatorPieChart(″会员满意度投票结果″,session,request,new PrintWriter(out));
上面程序中第一条语句是初始化一个ChartService类的对象,第二条语句是该对象调用ChartService类中的generatorPieChart方法,(″会员满意度投票结果″,session,request,new PrintWriter(out))里的内容为该方法的参数。该方式只使用于对ChartService这个类的使用,故无法实现新旧功能类之间的切换。
本发明的业务程序时初始化一个业务JAVA类文件的对象和进行这个类方法的配置文件(程序二)为:
1.Init init=new Init();//***提供的一个类对象的初始化
2.Object chartServ=init.newObject(″com.jun.service.ChartService″);//使用该函数及类的全名字符串来进行对象的初始化,代替new关键字,该例为使用无参数构造方法,若使用带参数构造方法需在其后追加两个参数,分别为参数对象数组和参数类型数组。
3.String filename=(String)init.InvokeMethod(″generatorPieChart″,chartServ,new Object[]{″会员满意度投票结果″,session,request,new PrintWriter(out)},newClass[]{String.class,HttpSession.class,HttpServletRequest.class,PrintWriter.class});
//使用该函数调用某个方法,参数依次为方法名,调用该方法的对象名,方法的参数对象数组,方法的参数类型数组。
以上三条语句中第一条语句为使用本发明提供的配置模板对一个类对象的初始化,用这个类中的函数来代替原先的方式来初始化一个业务JAVA类文件的对象和进行这个类方法的调用。第二条语句即是使用该类对象初始化一个ChartService类的对象,第三条语句即是使用该类对象调用chartServ对象的generatorPieChart方法。
在配置文件中没有配置对ChartService类的更新时,程序二实现的功能与程序一实现的功能完全相同,在配置文件中配置了对ChartService类的更新时,例如更新后的类为NewChartService,程序二将执行xml配置文件中进行了与ChartService映射的NewChartService类,由此便实现了从执行ChartService类到NewChartService类的切换。
设置配置模板的优点是:业务***的维护人员只需根据模板进行业务配置即可,本发明相当于提供了一个动态的接口,维护人员只需预留一个被更新的位置而无需知道将要被更新成什么样的类,只需要在xml配置文件中进行映射配置,***便自己去解析配置文件而执行相应的新类的功能。
新增JAVA类文件的监测线程可设置为周期性监控实现方式,如每20分钟对待监测的文件夹扫描一次等。
以上只是作为示例的说明,任何种类的JAVA类文件的配置模板均可参照上述示例进行设置。
步骤102:将新增业务或/和更新业务的应用的JAVA类文件存储于业务新增及更新指定的文件夹中,参照配置模板编写新增业务或/和更新业务的JAVA类文件的配置指令完成配置文件的编写,并用新的配置文件覆盖原先的配置文件,以上所述配置文件分为两个,一个是监控新增文件的配置文件,一个是完成更新映射的配置文件。
步骤101生成业务的JAVA类文件之后,将其导入到设定的文件夹中,同时,根据配置模板设置所述JAVA类文件的配置文件。设置完配置文件后,将其覆盖原先业务***中的配置文件。具体地,即将编写完成并通过测试的新的配置文件覆盖掉旧的配置文件即可。由于旧配置文件已被存储于业务***所在的内存中,因此其所支持的旧业务仍可被用户所调用,但在新用户所请求的该业务的新的申请时,由于***中旧配置文件已被覆盖,因此,新的业务申请的用户将被提供更新或新增的业务。
步骤103:线程监控文件夹中设定种类的JAVA类文件的实时新增和更新状况,在有新的JAVA类文件导入时,提取新的JAVA类文件,存储到业务***所在的内存中。
以JAVA业务***为例,说明JAVA类文件更新到***的情况。
每一个JAVA虚拟机都由一个类加载器子***(Class Loader Subsystem),负责加载程序的JAVA类文件。类的装载就是寻找一个具有特定名称的类或接口的二进制表示(即JAVA类文件),并构造与之对应的内存结构,以供JAVA虚拟机的执行引擎引用和解释执行。JAVA虚拟机的动态加载是通过JAVA***类java.lang.ClassLoader及其子类实现的。ClassLoader类是一个抽象类,其实例或其子类的实例被称为类加载器。当指定了一个类名后,类加载器会寻找相对应的JAVA类文件并将其加载到JAVA虚拟机环境中,同时为该类创建一个对应的类对象。一般情况下,JAVA虚拟机从本地文件***中加载JAVA类文件,JAVA虚拟机也允许应用程序通过实现ClassLoader的子类从网络加载JAVA类文件。
线程实时监控待监控的文件夹,当有所设定的JAVA类文件***时,立刻提取其相应信息,存储到业务***所在的内存中。所存储到业务***所在内存中的信息,包括JAVA类文件的名称、存储地址、JAVA类文件生成时间等相关属性信息,以使业务***能调用该JAVA类文件。用于存储JAVA类文件的文件监控线程(JAVA环境下)可按以下设置:
假设待监控的文件夹的路径设置为:
monitor.path=\\com\\jun\\service;\\com\\jun\\struts\\action
monitor.pack=\\com\\jun
说明:
monitor.path为检测新增和更新JAVA类文件所在的目录,多个目录之间用分号分开,目录须严格按照从应用名的下一个目录开始。monitor.pack是为了从文件的路径中截取出类的包名,为了描述文件较好的容错性需为其定义规则如下:JAVA类文件所在的包应建在三层以上,而且被检测的所有JAVA类文件必须至少有两层公共目录。
updatedes.xml配置文件:
<?xml version=”1.0”encoding=“UTF-8”>
<update>
  <classdir>
        <unload>com.jun.service.ChartService</unload>
        <reload>com.jun.service.NewChartService</reload>
  </classdir>
<classdir>
  <unload>com.jun.service.RegisterService</unload>
  <reload>com.jun.service.NewRegisterService</reload>
</classdir>
<classdir>
  <unload>com.jun.service.LogonService</unload>
  <reload>com.jun.service.NewLogonService</reload>
</classdir>
</update>
说明:
<update></update>将整个描述文件的内容包含在里面,它可以包含多个<classdir></classdir>,每个<classdir></classdir>中表示一个更新映射,<unload></unload>用来显示被更新的类,类必须为包含包名在内的完整类名,<reload></reload>用来显示所有的更新后的类,类必须为包含包名在内的完整类名,其必须与同一个<classdir>中的<unload>里的类名一一对应,以得知此类对象为哪个类的更新版本。
本发明中,一个类用其完全匹配类名作为标识,这里指的完全匹配类名包括包名和类名。但在JAVA虚拟机中一个类用其全名和一个加载类ClassLoader的实例作为唯一标识,不同类加载器加载的类将被置于不同的命名空间。
如果用同一加载器加载一个同名的JAVA文件,或者直接用更新后的文件覆盖原有文件,该加载器首先会检查给类是否被加载过,如果被加载过就不再进行加载,也就无法被引用。这使得无法在同一个加载器下进行源文件的更新。如果用不同的加载器来加载更新后的文件,那么因为不同类加载器加载的类将被置于不同的命名空间,这些类之间也无法相互访问。这使得无法在不同加载器下进行源文件的更新。业务动态加载***的加载过程是通过以下方式来实现的:
假定***原有的JAVA类文件为A.class,要对其进行更新,并且把修改后的更新文件命名为B.class(B和A不相同),并将B.class放入监控目录下。事实上B.class和A.class具有相同的类结构,只是名称不同而已。更新时,在配置文件updatedes.xml中描述新旧功能的映射关系,这样在更新过程结束后,当程序调用A.class时,业务动态加载***会到updatedes.xml中查找A.class所对应的更新类,如果没有就直接加载A.class,否则用当前加载器(同一个类加载器)加载其所对应的B.class,这样同一个类加载器加载的类就可以相互调用,程序调用A.class时,实际上调用的是B.class,这些对用户是透明的。***由此便实现了在新旧业务之间的动态切换,便实现了业务***的动态更新功能。
步骤104:接收到用户的业务请求后,业务***获取***的配置文件并自动进行解析,根据配置文件调用业务***所在内存中相应的JAVA类文件,在业务***的执行环境下,JAVA类文件按其自身的逻辑被执行,将JAVA类文件的执行结果提供至用户,使用户获得业务支持。其中,被执行的JAVA类文件包括新增业务或/和更新业务的JAVA类文件。步骤104主要用于说明业务执行的详细过程,以下仍以JAVA业务***为例进行说明。
在JAVA虚拟机规范中,加载和连接被定义为两个相互递归的过程。加载是指JAVA虚拟机根据指定的类文件名或接口名查找相应的JAVA类文件,并将JAVA类文件装载到运行环境中的过程。连接是指JAVA虚拟机对JAVA类文件进行验证和解析符号引用的过程。JAVA虚拟机通过JAVA***的类iava.lang.ClassLoader及其子类实现这一加载过程。ClassLoader类是一个抽象类,其实例或其子类的实例被称为类加载器。当指定了一个类名后,类加载器会寻找相对应的JAVA类文件并将其加载到JAVA虚拟机环境中,同时为该类创建一个对应的类对象。一般情况下,JAVA虚拟机从本地文件***中加载JAVA类文件,JAVA虚拟机也允许应用程序通过实现ClassLoader的子类从网络加载JAVA类文件。在JAVA平台中,所有类都是由类加载器加载的。JAVA中的类加载器可以分为四类:
1.Bootstrp loader
Bootstrp加载器是用C++语言写的,它是在JAVA虚拟机启动后初始化的,它主要负责加载%JAVA_HOME%/jre/lib以及%JAVA_HOME%/jre/classes中的类。
2.ExtClassLoader
Bootstrp loader加载ExtClassLoader,并且将ExtClassLoader的父加载器设置为Bootstrp loader.ExtClassLoader主要加载%JAVA_HOME%/jre/lib/ext中的jar文档,以及此路径下的所有classes目录。
3.AppClassLoader
Bootstrp loader加载完ExtClassLoader后,就会加载AppClassLoader,并且将AppClassLoader的父加载器指定为ExtClassLoader。AppClassLoader主要负责加载classpath所指定的位置的类或者是jar文档。
4.URLClassLoader
URLClassLoader是可以自定义的加载器,可以通过指定一个URL对象来创建此加载器,它所加载路径就是URL所代表的逻辑位置。并且它的父加载器是AppClassLoader。很多时候都是通过类加载器来控制JAVA虚拟机中的类加载行为。
JAVA虚拟机的类加载机制采用委托模型。所谓委托模型就是指:当一个加载器在加载某个类的时候先让父加载器去加载,父加载器再让其父加载器加载,依此类推,如果所有的父加载器都不能加载,再由自己来加载,而如果此时自己也不能加载,则产生java.lang.NoClassDefFoundError错误。委托模型最大的好处就是提高了JAVA的安全性,比如:如果加载器的父加载器已经加载了某个类,那么自己就不能再加载此类了,这样就使得一些与JAVA类库中同名的类不能加载进来。
需要说明的是,业务***实现新业务的更新工作之后,新接入用户访问的是新功能,一直未退出的已接入用户使用的仍然是旧功能。两种用户之间均可获得相应的业务支持,并互不影响,当已接入用户执行的旧功能完成之后,下次接入时将全部执行新功能。当该某业务的在线用户全部退出后,旧功能所占内存将由JAVA虚拟机自动进行回收。JAVA虚拟机的这种垃圾回收机制可以如下表述:
一个对象,可以有一个或多个引用变量指向它。当一个对象不再有任何一个引用变量指向它时,这个对象可以被JAVA虚拟机的垃圾回收机制回收了。JAVA虚拟机的垃圾回收机制对堆空间做实时检测。当发现某对象可以被回收时,就将该对象列入待回收列表中。在合适的时机内,JAVA虚拟机会对回收列表中的垃圾进行回收。
图2为本发明实施例的业务***中业务动态加载***的结构示意图,如图2所示,本发明实施例的业务***中业务动态加载***包括设置单元20、线程监控单元21、JAVA类文件生成单元22、配置模板设置单元23、JAVA类文件新增及更新单元24以及执行单元25,其中,设置单元20用于在所述业务***中设置新增及更新业务专用的文件夹。设置单元20为本发明的***设置指定文件夹,以存储更新或新增业务功能的JAVA类文件。线程监控单元21用于监控所述文件夹中设定的JAVA类文件新增及更新状况。线程监控单元21用于监控配置文件的改变及文件夹中所设定JAVA类文件的变换情况,在有更新JAVA类文件加入到文件夹中时,通知JAVA类文件更新单元24。线程监控单元21实现的主要功能是在***启动时启动监控线程,该监控线程用于不断的监控配置文件及配置文件中指定的文件夹,以发现新增的及更新的JAVA类文件。其配置过程为在web.xml中配置一个servlet,随服务器的启动同时启动,其配置结构如下:
<servlet>
    <servlet-name>StartDaemon</servlet-name>
    <servlet-class>
         cn.edu.bupt.extend.monitor.StartDaemon
    </servlet-class>
    <load-on-startup>0</load-on-startup>
</servlet>
线程监控单元21主要分为两个模块,一个为配置文件监控模块30,一个为新增及更新的JAVA类文件监控模块32。配置文件监控模块30主要负责监控配置文件的改变,配置文件一旦有所变动***便重新加载新的配置文件。新增及更新JAVA类文件监控模块32主要负责监控配置文件中指定的监控文件夹,一旦配置文件中描述的文件夹下面的JAVA类文件有所增加,便通知JAVA类文件新增及更新单元24进行JAVA类文件的加载。JAVA类文件生成单元22用于根据用户需求确定所述业务***的新增业务或/和更新业务,在所述业务***的开发环境下编译所述新增业务或/和更新业务的应用,对所述新增业务或/和更新业务的应用进行调试,调试成功后生成所述新增业务或/和更新业务相应JAVA类文件;将所述新增业务或/和更新业务的应用的JAVA类文件存储于所述业务新增及更新指定的文件夹中。配置模板设置单元23用于参照配置模板编写新增业务或/和更新业务的JAVA类文件的配置指令完成配置文件的编写,并用新编写完成的配置文件直接覆盖旧的配置文件。
更新JAVA类文件的配置文件模板(updatedes.xml)的实现如下:
 <?xml version=”1.0”encoding=“UTF-8”>
<update>
  <classdir>
    <unload>com.jun.service.ChartService</unload>
    <reload>com.jun.service.NewChartService</reload>
</classdir>
<classdir>
  <unload>com.jun.service.RegisterService</unload>
  <reload>com.jun.service.NewRegisterService</reload>
</classdir>
<classdir>
  <unload>com.jun.service.LogonService</unload>
  <reload>com.jun.service.NewLogonService</reload>
</classdir>
  </update>
通过对完成更新映射的配置文件进行类名之间一对一的映射描述,被配置文件监控模块30检测到改变以后加载到***所在内存中并对配置文件进行解析,并提取出配置文件中描述的一对一的映射关系交给JAVA类文件新增及更新模块载入***所在内存中,待执行模块执行程序时在***所在内存中对关系映射表进行查询。JAVA类文件新增及更新单元24在所述线程监控单元21监控到所述文件夹中有设定种类的新的JAVA类文件导入时,提取所述新的JAVA类文件,存储到所述业务***所在的内存中。对于JAVA类的业务***而言,更新到所述业务***所在的内存中具体为:查找具有设定名称的类或所述类的接口的二进制表示,构造供JAVA虚拟机的执行引擎引用和解释执行的与所述类或类的接口对应的内存结构。JAVA类文件新增及更新单元24实现方式为:首先通过线程监控单元21发现的最新监控新增文件的配置文件的描述,交给配置模板设置单元23获取相应的路径,并交回线程监控单元21发现该路径下面增加和更新的相应的JAVA类文件,使用JAVA虚拟机中的动态类加载机制对新增及更新的JAVA类文件进行加载。JAVA语言具有一个重要特性--动态类加载,它使JAVA程序可以在运行的过程中安装程序组件。JAVA的动态加载具有惰性加载、用户自定义加载策略以及动态命名空间的特征。动态加载是JAVA语言平台的一种非常重要的底层实现机制。在标准的实现中,JAVA编译器为每个JAVA类生成一个JAVA类文件,这种文件采用JAVA虚拟机定义的JAVA类文件格式保存,并由JAVA虚拟机加载并解释执行。在JAVA平台中,所有类都是由类加载器加载的。类加载器的实现可参见前述本发明方法中的相关描述,这里不再赘述。JAVA类文件新增及更新单元24利用新增功能的实现将新的业务文件加载至内存,并不断读取配置文件中的内容,将新旧文件的信息存入一个hash表中,键为旧文件,值为新文件。用户在开发程序的时候使用为其提供的代码进行类的初始化和方法的调用,每次初始化一个类时,便会在hash表中寻找键值对。如果初始化的类有更新类,则初始化更新类;否则使用原有旧业务功能类。JAVA类文件新增及更新单元24中包括有新增及更新文件注册加载模块33。执行单元25接收到用户的业务请求后,业务***获取***的配置文件并自动进行解析,根据配置文件调用业务***所在内存中相应的JAVA类文件,在业务***的执行环境下,JAVA类文件按其自身的逻辑被执行,将JAVA类文件的执行结果提供至用户,使用户获得业务支持;其中,被执行的JAVA类文件包括新增业务或/和更新业务的JAVA类文件。执行单元25从配置模板设置单元23获取已载入内存的更新映射表,并从JAVA类文件新增及更新单元24中获取已载入内存的相应JAVA类文件,当***接到用户的请求后,如果请求访问的是新增的业务逻辑,则直接访问已经加载到内存的新增JAVA类文件,如果请求访问的不是新增的业务逻辑,则执行单元25先进入业务***所在内存中的更新映射表进行查询,如果更新映射表中不存在需要访问类的映射关系则直接执行该类的业务逻辑并将执行结果返回给用户,如果更新映射表中存在需要访问的类的映射关系,则通过该映射关系执行更新后的JAVA类文件中的业务逻辑,并将执行结果返回给用户。在JAVA虚拟机规范中,加载和连接被定义为两个相互递归的过程。加载是指JAVA虚拟机根据指定的类名或接口名查找相应的JAVA类文件,并将JAVA类文件装载到运行环境中的过程。连接指JAVA虚拟机对JAVA类文件进行验证和解析符号引用的过程。JAVA虚拟机的动态加载是通过JAVA***类java.lang.ClassLoader及其子类实现的。ClassLoader类是一个抽象类,其实例或其子类的实例被称为类加载器。当指定了一个类名后,类加载器会寻找相对应的JAVA类文件并将其加载到JAVA虚拟机环境中,同时为该类创建一个对应的类对象。一般情况下,JAVA虚拟机从本地文件***中加载JAVA类文件,JAVA虚拟机也允许应用程序通过实现ClassLoader的子类从网络加载JAVA类文件。执行单元25可通过JAVA虚拟机的连接过程而实现,从而实现对JAVA类文件的解析执行,为用户提供新增或更新的业务,提供了相应的业务支持。执行单元25中还包括有配置文件解析模块31。
图3为本发明实施例的业务***中业务动态加载***中各单元核心模块逻辑结构示意图,如图3所示,本发明实施例的业务***中业务动态加载***的核心模块包括配置文件监控模块30、配置文件解析模块31、新增及更新的JAVA类文件监控模块32以及新增及更新文件注册加载模块33,其中,业务动态加载***包含四个包,每个包划分为一个模块,各个包的成分包括:
common包:包含了其它模块用到的公共类,比如常量数据声明类、封装插件类、业务配置改变时的通知接口实现类等。
monitor包:包含了与监控线程相关的类,比如监控线程类、监控器类等。
parse包:包含了解析updatedes.xml文件用到的相关类,以及初始化及反射调用某个对象的方法的相关类。
register包:包含了与注册相关的类,即如果能正常创建实例对象,则将该文件封装为插件类型。最后将该文件封装成可用插件类型,更新已有文件集合。
以下详细说明上述各模块是如何实现的。
图4为本发明实施例的业务***中业务动态加载***中配置文件监控模块的实现结构示意图,如图4所示,StartDaemon类为***入口,触发监视目录程序的执行。FileMonitor类负责不断的检测监视目录是否发生改变,并唤醒对新增业务和更新业务的发现和注册的操作。Notifier类负责从监视目录中获取新增业务文件和更新业务文件,进行合法性检验并将文件路径转换为类名,并调用注册模块。图5为本发明实施例的业务***中业务动态加载***中新增及更新的JAVA类文件监控模块的实现结构示意图,如图5所示,ClassObjectInterface接口负责加载类的接口,由register包中ClassObjectFactory类实现。ConfigWrapper类负责读取配置文件,从配置文件中获取监控目录。Records类负责保存新增业务和更新业务的发现记录。PlugIn类负责保存新增业务和更新业务的相关信息。AvailPlugIn类负责保存合法的新增业务和更新业务的相关信息。FilePool类负责发现新增业务和更新业务,并保存其文件信息和合法业务文件的信息,更新内存中新增业务和更新业务的列表。图6为本发明实施例的业务***中业务动态加载***中新增及更新文件注册加载模块的实现结构示意图,如图6所示,ClassObjectFactory类实现common包中的ClassObjectInterface接口,加载新增业务文件和更新业务文件。register类负责提取内存中新增业务和更新业务,并调用ClassObiectFactory类对新增业务文件和更新业务文件进行注册加载。图7为本发明实施例的业务***中业务动态加载***中配置文件解析模块的实现结构示意图,如图7所示,ClassSet类负责存储被更新业务的列表和新旧业务更新的映射表。ParseDescriptionInterface接口负责获取被更新业务的列表和新旧业务更新的映射表的接口。ParseDescription类实现ParseDescriptionInterface接口,负责获取被更新业务的列表和新旧业务更新的映射列表。ParseResult类负责解析更新业务功能的配置文件,获取新旧业务更新的配置信息,并将其信息存储到ClassSet类中。Init类提供为程序员开发使用的对象初始化的方法和方法调用的方法,程序员通过使用这些方法对对象进行初始化和方法调用可通过配置文件实现新旧业务的自动切换。
本发明业务动态加载***就是为了实现不影响用户对现有业务的使用的前提下对新业务进行动态的加载以及对升级更新业务进行实时替换的***,其主要功能包括:
实现***集成:业务动态加载***包含一个入口供业务***调用,能够被任何业务***调用执行以使得该***能够正常运行在服务器上,从而可以通过该***发现新的业务或发现更新过的业务。
向运行的业务***中添加新的业务:在原有业务平台上添加新的业务,可以采用插件的实现方法,发现的每个新业务都作为一个新的插件来使用,通过对插件的发现,合法性检查,注册添加后,可以对新业务进行调用。
对插件的发现:业务动态加载***能够检测到指定的新业务所在目录,对新业务所在目录中的所有JAVA类文件进行扫描,主动发现业务***中新添加的业务,并提取出所有JAVA类文件的文件名,将所有文件的文件名保存在一张列表里,并输出对新插件的发现记录。对新业务进行合法性检查:***对列表中的新插件进行合法性检查,检查扫描列表中的文件名是否为合法的JAVA类文件,如果不是则不进行加载操作,避免出现无法进行动态加载的文件加入到列表中而在对新业务注册添加时出现加载错误。
新业务注册添加:业务动态加载***对通过合法性检查的JAVA类文件进行注册添加,通过JAVA的反射机制及类加载机制,从列表中将所有的JAVA类文件名取出,并查找到相应的文件目录,启动类加载器,对列表中的JAVA类文件逐一加载,并输出对文件的注册信息。
在运行的业务***中更新业务:在原有业务平台上更新业务,也可以采用插件的实现方法,发现的每个经过更新的业务都作为一个新的插件来使用,通过对插件的发现,合法性检查,注册添加后,通过与旧业务对比与旧业务进行切换,对旧业务反注册,使新业务上线,旧业务下线。
更新业务的插件发现:业务动态加载***能够检测到指定的存放更新业务所在的目录,对更新业务所在目录中的所有JAVA类文件进行扫描,通过描述文件中配置的新旧业务文件的映射主动发现更新后的文件,并提取出所有更新后的JAVA类文件的文件名,并将所有更新后的文件的文件名保存在一张列表里,并输出对新插件的发现记录。
对更新业务的合法性检查:***对列表中的插件进行合法性检查,扫描列表中的文件名是否为合法的JAVA类文件,如果不是则不进行加载操作,避免出现无法进行动态加载的文件加入到列表中而在对新业务注册添加时出现加载错误。
新旧业务的替换:业务动态加载***对通过合法性检查的JAVA类文件进行注册添加,通过JAVA的反射机制及类加载机制,从列表中将所有的JAVA类文件名取出,并查找到相应的文件目录,启动类加载器,对列表中的JAVA类文件逐一加载,并输出对文件的注册信息,新业务注册加载完毕后,若有新的访问者访问业务则直接转入到更新后的业务中执行,已经连接到旧业务的将旧业务执行完毕,直到旧业务已经无人使用时对旧业务进行反注册,即将旧业务废除,使旧业务下线。上述所述JAVA的反射机制是JAVA被视为动态语言的关键,它允许程序于执行期取得任何已知名称的类的内部信息,包括包名、参数、超类、执行接口、内部类、外部类、域名、构造器、方法及修饰符,并可于执行期生成实例、变更域的内容或唤起方法。根据JAVA的反射机制可以在执行过程中决定某个对象所属的类,取得类的修饰符、域名、方法、构造器和超类的相关信息,找出接口中的约束和方法声明,为一个执行期才得知名称的类产生对象,以及唤起执行期才能获得的对象的方法。
本发明业务动态加载***中,在新业务的注册添加以及新旧业务的替换中都使用到了JAVA的反射机制,在新业务的注册添加过程中通过JAVA的反射机制在加载过程中获取类的包名及其类名并将其存储在业务***所在的内存中,在新旧业务的替换中,***通过解析配置文件updates.xml,将该配置文件中被更新的类以及更新的类的类名映射关系载入业务***所在内存中,在新旧业务进行替换时从内存中取出映射关系中存储的新业务的类名并获取该类名对应类的构造器,用获取的构造器以及构造器中使用的参数及参数类型动态地初始化类的对象,从而实现了在运行期中旧类和新类之间的切换,并通过在运行期中获取的类的对象及类中的方法名和方法中使用的参数及参数类型来动态调用某个对象中的方法,从而实现了在运行期对某个对象中方法的动态调用,从而实现了业务之间的切换,即新旧业务之间的替换。
本发明业务动态加载***中,JAVA类文件生成单元22以及执行单元25是现有的处理单元,其中,执行单元25是JAVA应用***的基本功能单元;JAVA类文件生成单元22由业务维护人员根据业务需要来生成,并不是本发明业务动态加载***改进所涉及的。
以下简单介绍本发明业务动态加载***是如何被用户使用的,具体是通过向用户提供接口来实现的,以支持用户的业务动态加载。
***为用户提供了一个名为Init的类,该类有三个方法,分别为:
1.public Object newObject(String classname);
2.public Object newObject(String classname,Object[]Obpara,Class[]Clpara);
3.public Object InvokeMethod(String methodName,Object obj,Object[]Obpara,Class[]Clpara)。
第一个方法的作用是通过无参数的构造器初始化一个类对象,第二个方法的作用是初始化一个带参数构造器类的对象,第三个方法的作用是调用某个对象的类方法。***在启动后会不断的检测解析updatedes.xml配置文件,并把进行过更新配置的所有旧功能类保存在内存的一个列表unloadList里,把所有新旧类的映射关系保存在内存的一个映射表reLoadTable里,在用户通过前两个方法来初始化一个对象时会首先去判断在unloadList里是否存在要初始化的类,如果unloadList里没有该类则直接对该类进行初始化,如果unloadList里存在该类,则从reLoadTable里获取对应该类的新类,并对新类进行初始化。在使用上述的第三个方法进行方法调用时第二个参数Object obj会将初始化的类对象传递进来,以确定是调用旧类的某个方法还是新类的某个方法。前两个方法与第三个方法搭配使用,实现了由旧业务向新业务之间的切换。
本发明的业务***为JAVA支持的业务***,所述业务包括各种Web服务业务、电信服务业务、基于各种操作***的服务业务等。
本发明的业务***中业务动态加载***是实现图1所示方法的***,其各单元的功能及实现方式可参照图1所示方法加以理解。本领域技术人员应当理解,图2所示的各单元可通过编写程序而实现。
目前,对于用JAVA开发的已经上线运行的业务***,如果对其增加新功能或者对原有功能进行更新,必须停止服务器的运行,并对新业务或更新业务进行重新编译或发布,这必然导致业务服务在一定时间内处于停滞状态,从而影响用户对***的使用,并会造成一部分经济损失。本发明业务动态加载***能够在不停机的情况下动态的对新增功能进行加载投入使用,动态的加载更新业务并进行旧业务向新业务的切换,将旧业务逐渐抛弃使新业务投入使用,这个过程不会影响已经在使用旧业务的用户,新来的用户请求也可以直接执行新的业务,该***对于访问业务***的用户来说是透明的,克服了对JAVA开发的业务***新增业务或更新业务时必须停机的缺陷。本发明向用户提供业务支持的接口,用户可以根据自身业务的特点,自己设计新增业务或更新业务,所支持业务的灵活度相当大,并提供标准的配置文件,大大方便了用户新增及更新业务。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。

Claims (8)

1.一种业务***中业务动态加载方法,其特征在于,在所述业务***中指定新增及更新业务存放的文件夹,对配置新增JAVA类文件及更新JAVA类文件的配置文件进行初始化配置,并设置监控所述文件夹中设定的JAVA类文件更新状况的线程;根据用户需求确定所述业务***的新增业务或/和更新业务,在所述业务***的开发环境下编译所述新增业务或/和更新业务的应用,对所述新增业务或/和更新业务的应用进行调试,调试成功后将所述新增业务或/和更新业务的应用对应的JAVA源文件生成JAVA类文件;所述方法包括以下步骤:
A、将所述新增业务或/和更新业务的应用的JAVA类文件存储于所述业务新增及更新指定的文件夹中,参照配置模板编写新增业务或/和更新业务的JAVA类文件的配置指令,从而实现配置文件的编写,并用新编写完成的配置文件直接覆盖旧的配置文件;所述配置文件分为两个,一个是监控新增文件的配置文件,一个是完成更新映射的配置文件;
B、所述线程监控文件夹中设定种类的JAVA类文件的实时新增和更新状况,在有新的JAVA类文件导入时,提取新的JAVA类文件,存储到业务***所在的内存中;
C、接收到用户的业务请求后,业务***获取***的配置文件并自动进行解析,根据所述配置文件调用业务***所在的内存中相应的JAVA类文件,在业务***的执行环境下,JAVA类文件按其自身的逻辑被执行,将JAVA类文件的执行结果提供至用户,使用户获得业务支持;其中,被执行的JAVA类文件包括新增业务或/和更新业务的JAVA类文件。
2.根据权利要求1所述的方法,其特征在于,所述步骤B中提取所述新的JAVA类文件存储到所述业务***所在的内存中,具体为:通过解析监控新增文件的配置文件中配置的路径名自动发现该路径下的新增JAVA类文件,并通过类加载器将其加载到业务***所在的内存中。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:设置所述JAVA类文件新增到所述业务***中的配置模板;具体为:根据所述JAVA类文件的路径、存储地址的信息建立所述JAVA类文件发现的模板,将新增JAVA类文件所在的路径或存储地址信息替换所述模板中的路径、存储地址信息,即编写所述新增JAVA类文件的配置文件;
所述方法还包括:设置所述JAVA类文件替换所述业务***中原JAVA类文件的配置模板;具体为:根据所述JAVA类文件的名称、存储地址的信息建立欲更新的JAVA类文件的调用及阻止待替换的JAVA类文件调用的应用的模板,将更新JAVA类文件及待更新JAVA类文件的名称或存储地址分别替换所述应用的模板中的更新JAVA类文件及待更新JAVA类文件的名称、存储地址,即编写所述更新JAVA类文件的配置文件。
4.根据权利要求1所述的方法,其特征在于,所述步骤A中用新编写完成的配置文件直接覆盖旧的配置文件,具体为:将编写好的已测试成功的配置文件覆盖掉原先的配置文件,以避免直接进行配置而导致配置中出现异常。
5.根据权利要求1所述的方法,其特征在于,所述业务***为JAVA支持的业务***,所述业务包括各种Web服务业务、电信服务业务。
6.根据权利要求5所述的方法,其特征在于,所述步骤B中提取所述新的JAVA类文件存储到所述业务***所在的内存中,具体为:查找具有设定名称的类或所述类的接口的二进制表示,构造供JAVA虚拟机的执行引擎引用和解释执行的与所述类或类的接口对应的内存结构。
7.一种业务***中业务动态加载***,其特征在于,包括:
设置单元,用于在所述业务***中设置新增及更新业务指定的文件夹;
线程监控单元,用于监控配置文件的改变及所述文件夹中JAVA类文件的新增和更新状况;
JAVA类文件生成单元,用于根据用户需求确定所述业务***的新增业务或/和更新业务,在所述业务***的开发环境下编译所述新增业务或/和更新业务的应用,对所述新增业务或/和更新业务的应用进行调试,调试成功后生成所述新增业务或/和更新业务相应JAVA类文件;将所述新增业务或/和更新业务的应用的JAVA类文件存储于所述业务新增及更新指定的文件夹中;
配置模板设置单元,参照配置模板编写新增业务或/和更新业务的JAVA类文件的配置指令完成配置文件的编写,并用新编写完成的配置文件直接覆盖旧的配置文件;
JAVA类文件新增及更新单元,在所述线程监控单元监控到所述文件夹中有设定种类的新的JAVA类文件导入时,提取所述新的JAVA类文件,存储到所述业务***所在的内存中;
执行单元,接收到用户的业务请求后,业务***获取***的配置文件并自动进行解析,根据配置文件调用业务***所在的内存中相应的JAVA类文件,在业务***的执行环境下,JAVA类文件按其自身的逻辑被执行,将JAVA类文件的执行结果提供至用户,使用户获得业务支持;其中,被执行的JAVA类文件包括新增业务或/和更新业务的JAVA类文件。
8.根据权利要求7所述的***,其特征在于,所述业务***为JAVA支持的业务***,所述业务包括各种Web服务业务、电信服务业务。
CN200910076217XA 2009-01-06 2009-01-06 业务***中业务动态加载***及方法 Expired - Fee Related CN101771762B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN200910076217XA CN101771762B (zh) 2009-01-06 2009-01-06 业务***中业务动态加载***及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200910076217XA CN101771762B (zh) 2009-01-06 2009-01-06 业务***中业务动态加载***及方法

Publications (2)

Publication Number Publication Date
CN101771762A CN101771762A (zh) 2010-07-07
CN101771762B true CN101771762B (zh) 2012-03-21

Family

ID=42504341

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200910076217XA Expired - Fee Related CN101771762B (zh) 2009-01-06 2009-01-06 业务***中业务动态加载***及方法

Country Status (1)

Country Link
CN (1) CN101771762B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115291850A (zh) * 2022-08-11 2022-11-04 广州芯德通信科技股份有限公司 基于java语言的自定义交互数据的管理方法、***、存储介质

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102012807A (zh) * 2010-08-19 2011-04-13 上海酷吧信息技术有限公司 一种程序开发过程中的配置文件控制方法及装置
CN102026233A (zh) * 2010-12-03 2011-04-20 中兴通讯股份有限公司 电信设备版本兼容方法及装置
CN102880490B (zh) * 2012-09-19 2016-03-02 南京大学 一种基于Java虚拟机的延时动态对象更新方法
CN103902265B (zh) * 2012-12-26 2018-01-09 腾讯科技(深圳)有限公司 一种应用实现方法及相关装置
CN103455342B (zh) * 2013-06-06 2016-08-10 广州市久邦数码科技有限公司 一种主题调用的方法及装置
EP3007064A4 (en) * 2014-01-16 2016-09-28 Huawei Tech Co Ltd METHOD FOR LOADING A CODE AND NETWORK DEVICE
CN105319480B (zh) * 2014-07-21 2019-11-12 南京中兴新软件有限责任公司 线路诊断方法及装置
CN104216749A (zh) * 2014-09-10 2014-12-17 广州金山网络科技有限公司 一种应用程序的更新方法及装置
CN104407904B (zh) * 2014-12-15 2018-01-02 深圳市科漫达智能管理科技有限公司 一种模块信息配置的方法及***
CN104657177A (zh) * 2015-02-12 2015-05-27 北京深思数盾科技有限公司 程序自动更新方法
CN106406828A (zh) * 2015-07-28 2017-02-15 阿里巴巴集团控股有限公司 一种修改java***业务工具功能的方法及装置
CN106547576A (zh) * 2015-09-16 2017-03-29 腾讯科技(深圳)有限公司 配置文件的获取方法及装置
CN106648564A (zh) * 2015-10-30 2017-05-10 阿里巴巴集团控股有限公司 一种用于采集业务数据的方法和装置
CN105718289B (zh) * 2016-01-21 2020-12-29 腾讯科技(深圳)有限公司 一种组件关系建立方法及其设备
CN107508846B (zh) * 2016-06-14 2021-02-26 北京京东尚科信息技术有限公司 应用客户端的更新方法和***及终端设备
CN108228208A (zh) * 2016-12-22 2018-06-29 北京神州泰岳软件股份有限公司 一种java应用程序的动态更新方法和装置
CN106959870B (zh) * 2017-02-20 2020-09-29 北京数字联盟网络科技有限公司 Nginx动态模块加载方法和装置
CN107153536B (zh) * 2017-03-31 2021-05-07 北京三快在线科技有限公司 一种应用处理方法及装置
CN108920144B (zh) * 2017-04-11 2022-02-01 北京京东尚科信息技术有限公司 一种消息处理方法和装置
CN107958071A (zh) * 2017-12-06 2018-04-24 北京锐安科技有限公司 业务***数据更新的方法、装置、设备和存储介质
CN108304213A (zh) * 2018-01-11 2018-07-20 口碑(上海)信息技术有限公司 运行程序的热修复方法及装置
CN110119274A (zh) * 2018-02-05 2019-08-13 北京智明星通科技股份有限公司 一种数据编译的方法、装置以及电子终端、计算机可读存储介质
CN108536429B (zh) * 2018-03-28 2022-01-28 海尔优家智能科技(北京)有限公司 一种开发软件的方法、装置、存储介质及电子设备
CN110365724B (zh) * 2018-04-08 2021-11-02 腾讯科技(深圳)有限公司 任务处理方法、装置及电子设备
CN108921712A (zh) * 2018-06-13 2018-11-30 泰康保险集团股份有限公司 数据处理方法、装置、介质及电子设备
CN109033436A (zh) * 2018-08-14 2018-12-18 武汉达梦数据库有限公司 一种同一数据库多个版本jdbc驱动共存方法和***
CN109375921A (zh) * 2018-08-15 2019-02-22 中国平安人寿保险股份有限公司 页面文件快速编译方法、装置及存储设备、计算机设备
CN109445878B (zh) * 2018-10-12 2023-05-23 北京宝兰德软件股份有限公司 在运行时对Java类进行注入的方法及装置
CN109933587B (zh) * 2019-02-26 2023-04-11 厦门市美亚柏科信息股份有限公司 基于目录注册的数据处理方法、装置、***及存储介质
CN110795357B (zh) * 2019-11-04 2023-04-07 中国工商银行股份有限公司 程序监控方法及装置
CN111475193B (zh) * 2020-06-04 2021-03-30 成都安易迅科技有限公司 一种插件的动态更新方法、装置,电子设备及存储介质
CN112181839B (zh) * 2020-09-30 2023-10-10 深圳市元征科技股份有限公司 一种信息处理方法、信息处理装置及终端设备
CN113821522B (zh) * 2021-09-22 2023-05-12 盐城工学院 基于大数据技术的企业业务智能化管理方法及***
CN114025407A (zh) * 2021-10-29 2022-02-08 深圳市康必达控制技术有限公司 设备通讯方法、装置、计算机设备和存储介质
CN113886774B (zh) * 2021-12-07 2022-02-11 北京微步在线科技有限公司 一种反调试方法及装置
CN114422358B (zh) * 2022-01-26 2024-01-30 中国农业银行股份有限公司 Api网关配置更新方法及设备
CN115002190B (zh) * 2022-05-27 2024-06-21 努比亚技术有限公司 一种功能配置文件调控方法、设备及计算机可读存储介质
CN115580662A (zh) * 2022-09-26 2023-01-06 四川九洲空管科技有限责任公司 一种不跌机状态下的接口动态适配方法和装置
CN115686676B (zh) * 2022-11-04 2023-07-28 北京远舢智能科技有限公司 一种对象的动态调用方法、装置及电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006074826A1 (en) * 2005-01-12 2006-07-20 Telefonaktiebolaget Lm Ericsson (Publ) Configuration of network's nodes in a telecommunication system
CN101008901A (zh) * 2007-01-31 2007-08-01 华为技术有限公司 实现应用***动态升级的方法及***
CN101118497A (zh) * 2007-09-20 2008-02-06 金蝶软件(中国)有限公司 一种类装载处理的方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006074826A1 (en) * 2005-01-12 2006-07-20 Telefonaktiebolaget Lm Ericsson (Publ) Configuration of network's nodes in a telecommunication system
CN101008901A (zh) * 2007-01-31 2007-08-01 华为技术有限公司 实现应用***动态升级的方法及***
CN101118497A (zh) * 2007-09-20 2008-02-06 金蝶软件(中国)有限公司 一种类装载处理的方法及装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115291850A (zh) * 2022-08-11 2022-11-04 广州芯德通信科技股份有限公司 基于java语言的自定义交互数据的管理方法、***、存储介质
CN115291850B (zh) * 2022-08-11 2023-03-07 广州芯德通信科技股份有限公司 基于java语言的自定义交互数据的管理方法、***、存储介质

Also Published As

Publication number Publication date
CN101771762A (zh) 2010-07-07

Similar Documents

Publication Publication Date Title
CN101771762B (zh) 业务***中业务动态加载***及方法
CN102541598B (zh) 一种动态加载组件的方法及***
CN108647265B (zh) 基于多平台数据交互式***
CN102413022B (zh) 一种应用调试方法和***
CN100489778C (zh) Java程序可动态更新化实现方法
CN100395707C (zh) 升级程序的方法
CN109491695A (zh) 一种集成安卓应用的增量更新方法
CN102929597B (zh) 一种基于Java平台的Web业务支持方法和装置
CN110569035A (zh) 软件开发项目的代码编译方法、装置、设备和存储介质
CN105607935A (zh) 应用程序更新方法及其终端、服务器
CN105512044B (zh) 用于关键字驱动测试的对象库的更新方法及***
US8776020B2 (en) Software configuration control wherein containers are associated with physical storage of software application versions in a software production landscape
CN110874315B (zh) 测试方法、装置、电子设备和存储介质
CN101393528A (zh) 软件动态更新中确定实例对象转换次序的方法及***
CN107239313A (zh) Spring应用服务的升级方法和存储介质
CN112241370B (zh) 一种api接口类的校验方法、***及装置
CN107220074A (zh) 对支撑层软件功能的访问、升级方法及装置
CN112099880B (zh) 场景驱动的应用程序约减方法和***
US20070174697A1 (en) Generic, WSRF-compliant checkpointing for WS-Resources
CN115421765A (zh) 一种应用于国产化操作***的大数据管理部署方法
CN112613288B (zh) 结算单生成方法、装置、计算机设备和存储介质
CN108228266A (zh) 一种Android插件框架下不同插件间启动Fragment组件的方法和装置
CN117056115A (zh) 应用程序的修复方法和装置、存储介质及电子设备
CN115760391A (zh) 区块链中智能合约更改方法、装置、电子设备及存储介质
CN105610908B (zh) 一种基于安卓设备的samba服务实现方法及***

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120321

Termination date: 20130106