CN102147734A - 运行时类提取的方法和系统 - Google Patents

运行时类提取的方法和系统 Download PDF

Info

Publication number
CN102147734A
CN102147734A CN2010101105784A CN201010110578A CN102147734A CN 102147734 A CN102147734 A CN 102147734A CN 2010101105784 A CN2010101105784 A CN 2010101105784A CN 201010110578 A CN201010110578 A CN 201010110578A CN 102147734 A CN102147734 A CN 102147734A
Authority
CN
China
Prior art keywords
class
during
virtual machine
loading bin
module
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.)
Granted
Application number
CN2010101105784A
Other languages
English (en)
Other versions
CN102147734B (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.)
Oracle International Corp
Original Assignee
Oracle International Corp
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 Oracle International Corp filed Critical Oracle International Corp
Priority to CN201010110578.4A priority Critical patent/CN102147734B/zh
Priority to US12/752,412 priority patent/US8473936B2/en
Publication of CN102147734A publication Critical patent/CN102147734A/zh
Application granted granted Critical
Publication of CN102147734B publication Critical patent/CN102147734B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating

Abstract

一种提取运行时类的方法和系统,包括:在虚拟机中建立系统类装载器;支持对在所述虚拟机上运行的应用执行的操作,其中所述应用与多个运行时类关联,并且所述操作与所述多个运行时类中的一个或多个运行时类关联;确定所述一个或多个运行时类中的每个运行时类的类路径信息,其中上下文信息使系统类装载器能够定位所述运行时类,以便将所述运行时类装载到所述虚拟机中;借助所述系统类装载器,记录所述一个或多个运行时类的类路径信息;和根据记录的类路径信息,提取所述一个或多个运行时类。

Description

运行时类提取的方法和系统
技术领域
本发明涉及Java运行时环境,尤其涉及提取各种应用的运行时类的装置。
背景技术
软件库是相关目标代码的集合,比如Java语言中的Java类的使用。软件库一般封装在比如Java存档(Jar)文件的模块中。在Java环境中,在运行时,类装载器负责定位库,读取其内容,和把包含在库中的类装载到Java虚拟机(JVM)中。通常类是在程序实际使用这些类中的每个类时按需装载的。类装载器使运行时系统不需要了解底层文件系统及其中文件的准确结构。
企业级软件应用,比如应用服务器,能够包括许多模块或者Jar。每个独立模块或Jar只包含更大应用中的功能的子集。类装载器能够把企业级软件应用的不同模块或Jar装载到虚拟机中,从而提供某些功能。在一些情况下,不是每个模块或Jar都被装载到虚拟机中,因为仅仅使用企业级软件应用的功能的子集。这正是本发明的实施例意图应用于的一般领域。
发明内容
按照一个实施例,在虚拟机上运行的应用包括多个运行时类。类装载器能够把多个运行时类中的一个或多个运行时类装载到虚拟机中,以支持对应用的操作。另外,类装载器能够记录所述一个或多个运行时类中的每个运行时类的上下文信息。根据记录的每个运行时类的上下文信息,能够提取所述一个或多个运行时类。
在一个方面中,一种提取运行时类的方法包括:在虚拟机中建立系统类装载器;支持对在所述虚拟机上运行的应用执行的操作,其中所述应用与多个运行时类关联,并且所述操作与所述多个运行时类中的一个或多个运行时类关联;确定所述一个或多个运行时类中的每个运行时类的类路径信息,其中上下文信息使系统类装载器能够定位所述运行时类,以便将所述运行时类装载到所述虚拟机中;借助所述系统类装载器,记录所述一个或多个运行时类的类路径信息;和根据记录的类路径信息,提取所述一个或多个运行时类。
在另一个方面中,一种提取运行时类的系统包括:系统类装载器;在虚拟机上运行的应用,其中所述应用包括多个运行时类,其中所述多个运行时类中的每一个适于由所述系统类装载器装载到虚拟机中;其中所述系统类装载器与所述虚拟机相关联,并且所述系统类装载器操作以:支持对在所述虚拟机上运行的所述应用执行的操作,其中所述应用与多个运行时类相关联,并且所述操作与所述多个运行时类中的一个或多个运行时类相关联;确定所述一个或多个运行时类中的每个运行时类的类路径信息,其中上下文信息使系统类装载器能够定位所述运行时类,以便将所述运行时类装载到所述虚拟机中;借助所述系统类装载器,记录所述一个或多个运行时类的类路径信息。
在另一个方面中,一种提取运行时类的系统包括:用于在虚拟机中建立系统类装载器的装置;用于支持对在所述虚拟机上运行的应用执行的操作的装置,其中所述应用与多个运行时类相关联,并且所述操作与所述多个运行时类中的一个或多个运行时类相关联;用于确定所述一个或多个运行时类中的每个运行时类的类路径信息的装置,其中上下文信息使系统类装载器能够定位所述运行时类,以便将所述运行时类装载到虚拟机中;用于借助所述系统类装载器,记录所述一个或多个运行时类的类路径信息的装置;和用于根据所记录的类路径信息,提取所述一个或多个运行时类的装置。
附图说明
图1是表示按照一个实施例,虚拟机中的运行时类提取器的一个例子的示图。
图2是表示按照一个实施例,在JVM类装载器层次和委托模型中的运行时类提取器的一个例子的示图。
图3是按照一个实施例的在虚拟机中提取运行时类的方法的流程图。
具体实施方式
附图中举例图解说明了本发明,但不是对本发明的限制,附图中相似的附图标记表示相似的元件。应注意本公开中对“一个”或“一些”实施例的引用不一定指的是相同的实施例,这种引用意味至少一个。
下面的本发明的实施例的描述使用应用服务器功能或库作为应用服务器功能或库的例子。对本领域的技术人员来说,显然可以使用其它种类的应用服务器功能或库,而不受限制。
按照一个实施例,企业级应用服务器可包括许多模块或Jar。可以创建独立的模块或Jar,以包含较大应用中的特定功能子集。创建独立的模块或Jar以只包含特定功能子集的优点在于当仅需要一个功能子集时,通过不包括不必要功能的类或源文件,减小系统和/或应用的整个占用空间(footprint)。
例如,可在web服务客户端侧的独立环境中提供web服务客户端Jar,而不安装应用服务器。可以选择类的最小集合来满足运行时的所有客户端特征的需要,并且仍然使占用空间保持尽可能地小。
按照一个实施例,选择类的最小集合的一种方法是分析实现企业级应用服务器的源代码,并选择客户端应用在运行时所需要的相关类和文件。不过,逐类地分析源代码(包括考虑每个类的依存关系)通常需要相当大量的时间。
按照一个实施例,选择类的最小集合的一种备选方法是使用运行时类提取器,所述运行时类提取器能够记录当对应用执行一个或多个特定功能时所有装载的运行时类。
图1是表示按照一个实施例,虚拟机中的运行时类提取器的例子的示图。如图1中所示,应用101在包括多个运行时类110、111、112、113和114的虚拟机100上运行。这些运行时类可包含在几个不同的模块或Jar 107和108中。按照一个实施例,相同的运行时类A.Class 110和113可被包含在不同的Jar 107和108中。另外,虚拟机100与类装载器102关联,类装载器102能够把运行时类110、111、112、113和114中的每一个装载到虚拟机100中。
应用101提供能够由用户执行的一种或多种操作。每种操作是基于由类装载器102载入的一个或多个运行时类110、111、112、113或114执行的。按照一个实施例,类装载器102被修改为记录当执行所述一种或多种操作时使用的一个或多个运行时类。
按照一个实施例,在运行时,虚拟机,比如Java虚拟机(JVM),使用动态类装载装置把需要的类从类路径定义装载到JVM中。运行时类提取器使用负责装载类并把选择的运行时类记录到文件中的记录类装载器。系统类装载器被配置成保证所有需要的类都由该记录类装载器装载。
图2是表示按照一个实施例,JVM类装载器层次和委托模型中的运行时类提取器的一个例子的示图。如图2中所示,所有的Java运行时类装载器直接或间接地委托给引导类装载器201(通常称为基本类装载器)。在应用的正常执行期间,使用应用类装载器203通过扩展类装载器202把各种运行时类装载到虚拟机中。
系统类装载器204可被用于提取运行时类。系统类装载器204是一种自定义的类装载器,它能够被设置成使用其它子级类装载器205,并且通过定义类装载器的类名和虚拟机能够定位系统装载器的路径,能够在虚拟机中被启动。
例如,可利用选项:Djava.system.class.loader和Xbootclasspath在JVM内规定Java类装载器。Djava.system.class.loader选项定义类装载器的类名;Xbootclasspath选项定义系统装载器所位于的路径。
按照一个实施例,系统类装载器204能够把其功能内部委托给另一个类装载器207,以接收类路径URL定义。受委托的类装载器207可以是扩展自URL类装载器206的记录类装载器。当受系统类装载器委托时,受委托的类装载器或者记录类装载器207能够工作,从而代替应用类装载器203装载运行时类。
按照一个实施例,记录类装载器207能够根据预定的目标类路径208定位类。例如,由类装载器用于定位运行时类或Jar的实际CLASSPATH定义可以采取“pre_URLs;ce_URLs;post_URLs”的形式。
按照一个实施例,可以分多个部分地定义目标类路径,比如pre_classpath,ce_classpath和post_classpath。如果在运行时装载特定模块或者jar内的一个或多个类,那么目标类路径的ce_classpath部分定义需要被记录的模块或Jar。pre_classpath部分定义包括Java平台中的API Jar或库,比如JDK库(tools.jar)的模块或Jar。按照一个实施例,在运行时不需要记录这些Jar或者出自这些Jar的类。类似地,不需要记录出自目标类路径的post_classpath部分的模块或Jar中的类。在post_classpath部分中定义的模块或Jar包括还在另一个jar中定义的一个或多个类,所述另一个jar在目标类路径的ce-classpath部分中被定义。
例如,A1.jar包括A.class,B.class和C.class;A2.jar包括A.clsaa和D.class;A1.jar定义在ce-classpath中,并且A1.jar中的所有类都需要被记录。从而,需要在post_classpath中定义A2.jar,因为A2.jar包括A.class(它是在ce-classpath中定义的A1.jar的一部分),和不需要被记录的D.class。
按照一个实施例,可把运行时类的上下文信息记录到记录文件中。这种上下文信息包括类的全限定名称(full-qualified name)和实际位置。另外,记录文件可使用如表1中所示的格式。
  class-full-name@location-of-the-classe.g.sample.package.HelloWorld@d:/sample_dir/lib/sample.jar
表1:记录文件的样本格式
按照一个实施例,在记录类之后,可以产生一个或多个模块或Jar以包含选择的类和相关的资源。可在新的类路径,比如regenerated_jars类路径中定义所有产生的模块或Jar。也可更新目标类路径以包含用户环境中的pre_classpath,regenerated_jars和post_classpath。通过利用与应用相关联的初始应用类装载器203,根据更新的目标类路径,能够把记录的运行时类装载到虚拟机中。不需要修改初始应用类装载器203。
按照一个实施例,记录类装载器207能够使用loadClass()方法。这种方法负责根据上述三种类路径定义装载类,并且如果所述类位于在目标路径的ce_classpath部分中定义的模块或jar内,那么记录每个类一次。
按照一个实施例,可根据一个Java类的保护域中的代码源确定该Java类的实际位置。代码源是能够从其获得Java类的位置的封装,而保护域是特定代码源和授予该代码源的许可的封装。如果未找到保护域,或者在保护域中未找到Java类的实际位置,那么可根据该Java类的类装载器,或者根据系统类装载器(如果该Java类的类装载器不可用的话)确定该Java类的位置。
图3是按照一个实施例的虚拟机中的提取运行时类的方法的流程图。如图3中所示,在步骤301,在与类装载器相关联的虚拟机中提供应用。该应用包括多个运行时类,所述多个运行时类中的每一个都能够由类装载器装载到虚拟机中。随后在步骤302,能够执行由该应用提供的一个或多个操作。所述一个或多个操作与一个或多个运行时类相关联,并且类装载器能够把所述一个或多个运行时类装载到虚拟机中。为了提取有关的运行时类,在步骤303,类装载器能够记录所述一个或多个运行时类的名称和位置。最后在步骤304,通过为每个记录的运行时类创建新的副本,并重新封装到独立的模块或jar中,或者通过去除未被记录的所有运行时类,能够提取所述一个或多个运行时类。
按照一个实施例中,可以在Java虚拟机(JVM)中设立运行时类提取器。表2是能够用java命令实现所述提取器的java选项的例子。
  export JAVA_OPTS=″-Djava.system.class.loader=myce.CESystemCL\-Xbootclasspath=myce.jar\-Dce.pre.class.path=′some pre jars...′\-Dce.class.path=′some product jars...′\-Dce.post.class.path=′some post jars...′″
表2:能够用java命令实现提取器的样本java选项
按照一个实施例,系统类装载器能够把类装载和记录功能委托给记录类装载器。表3表示用于系统类装载器的伪代码摘录。
public class CESystemCL extends ClassLoader {private RecordCL rloader=null;public CESystemCL(ClassLoader parent){super(parent);//make extClassLoader as parentwhile(parent.getParent()!=null)parent=parent.getParent();//get ce.pre.class.path,ce.class.path,ce.post.class.path from system//properties with sun.misc.URLClassPath.pathToURLs()...//construct all jars from above 3 urls...allJars=...rloader=new RecordCL(allJars,parent);}@Overrideprotected synchronized Class<?>loadClass(String name,boolean resolve)throwsclassNotFoundException{//delegate to RecordCLreturn rloader.loadClass(name,resolve);}
  @Overridepublic URL getResource(String name){return rloader.getResource(name);}@Overridepublic Enumeration<URL>getResources(String name)throws  IOException{return rloader.getResources(name);}
表3:用于系统类装载器的伪代码摘录
按照一个实施例,记录类装载器能够根据预定的类路径信息确定运行时类的位置,从而把运行时类装载到虚拟机中。表4表示用于记录类装载器的伪代码摘录。
public class RecordCL extends URLClassLoader{public RecordCL(URL[]alljars,ClassLoader parent){super(alljars,parent);this.parent=parent;}public Class<?>loadClass(String name,boolean resolve)throws ClassNotFoundException {//load class and get the location of the class......//if the location is in ce.classpath,record it......}public URL findResource(final String name){URL ret=super.findResource(name);//record it if the url is not null and requiredreturn ret;}public Enumeration<URL>findResources(final String name)throws IOException{
      Enumeration<URL>ret  =super.findResources(name);//record it if required.return ret;}
表4:用于记录类装载器的伪代码摘录
按照一个实施例,运行时类提取器专注于记录类装载器的实现,避免修改不同应用类装载器的实现。按照惯例,运行时类提取器能够找出在运行时,为支持较大应用中的特定一组功能所必需的类。另外,不需要显著地修改应用的代码。
按照一个实施例,如果不能实现在运行时的完全代码覆盖,那么需要确定某些类依赖性,并且因此,这些类可能无法被记录和提取。
利用按照本公开的教导编程的常规通用或专用数字计算机或微处理器,可便利地实现本发明。对软件领域的技术人员来说,显然根据本公开的教导,熟练的编程人员能够容易地准备适当的软件编码。
在一些实施例中,本发明包括一种计算机程序产品,所述计算机程序产品是一种保存有指令的存储介质,所述指令可被用于对计算机编程,以实现本发明的任意处理。所述存储介质可包括,但不限于任意种类的磁盘,包括软盘、光盘、DVD、CD-ROM、微型硬盘和磁光盘;ROM、RAM、EPROM、EEPROM、DRAM、VRAM、闪速存储装置、磁卡或光卡、纳米系统(包括分子存储器IC)、或者适合于保存指令和/或数据的任意种类的介质或装置。
出于举例说明的目的提供了本发明的上述说明。不过上述说明并不详尽,也并不意图把本发明局限于所公开的具体形式。对本领域的技术人员来说,许多修改和变化都是显而易见的。显然可利用其它代码语言,以及以不同的代码应用这里描述的技术。
为了最好地解释本发明的原理及其实际应用,从而使本领域的其它技术人员能够在适合于预期的特殊应用的各种实施例及各种修改方面理解本发明,选择和描述了多个实施例。本发明的范围由下面的权利要求及其等同物限定。
根据一个实施例,一种机器可读介质具有存储在其上的指令,当执行该指令时,使得系统:在虚拟机中建立系统类装载器;支持对在所述虚拟机上运行的应用执行的操作,其中所述应用与多个运行时类相关联,并且所述操作与所述多个运行时类中的一个或多个运行时类相关联;确定所述一个或多个运行时类中的每个运行时类的类路径信息,其中上下文信息使系统类装载器能够定位所述运行时类,以便将所述运行时类装载到虚拟机中;借助所述系统类装载器,记录所述一个或多个运行时类的类路径信息;和根据所记录的类路径信息,提取所述一个或多个运行时类。

Claims (29)

1.一种提取运行时类的方法,包括:
在虚拟机中建立系统类装载器;
支持对在所述虚拟机上运行的应用执行的操作,其中所述应用与多个运行时类关联,并且所述操作与所述多个运行时类中的一个或多个运行时类关联;
确定所述一个或多个运行时类中的每个运行时类的类路径信息,其中上下文信息使系统类装载器能够定位所述运行时类,以便将所述运行时类装载到所述虚拟机中;
借助所述系统类装载器,记录所述一个或多个运行时类的类路径信息;和
根据记录的类路径信息,提取所述一个或多个运行时类。
2.按照权利要求1所述的方法,还包括:
把所述多个运行时类包含在一个或多个模块中。
3.按照权利要求2所述的方法,还包括:
如果记录了包含在所述一个或多个模块中的至少一个模块中的至少一个运行时类,则将所述至少一个模块记录在文件中。
4.按照权利要求1所述的方法,还包括:
将所述一个或多个运行时类拷贝到新产生的模块中。
5.按照权利要求4所述的方法,还包括:
把新产生的模块添加到能够被应用类装载器使用的目标类路径中。
6.按照权利要求1所述的方法,还包括:
选择类的最小集合,所述类的最小集合能够支持一个或多个操作的执行。
7.按照权利要求1所述的方法,还包括:
从预定的目标类路径装载所述一个或多个运行时类。
8.按照权利要求7所述的方法,还包括:
在预定的目标类路径的一个部分中定义所述一个或多个运行时类。
9.按照权利要求1所述的方法,还包括:
删除除了所述一个或多个运行时类之外的所述多个运行时类。
10.按照权利要求1所述的方法,还包括:
通过所述系统类装载器,将类装载和记录处理委托给受委托类装载器。
11.一种提取运行时类的系统,包括:
系统类装载器;
在虚拟机上运行的应用,其中所述应用包括多个运行时类,其中所述多个运行时类中的每一个适于由所述系统类装载器装载到虚拟机中;
其中所述系统类装载器与所述虚拟机相关联,并且所述系统类装载器操作以:
支持对在所述虚拟机上运行的所述应用执行的操作,其中所述应用与多个运行时类相关联,并且所述操作与所述多个运行时类中的一个或多个运行时类相关联;
确定所述一个或多个运行时类中的每个运行时类的类路径信息,其中上下文信息使系统类装载器能够定位所述运行时类,以便将所述运行时类装载到所述虚拟机中;以及
借助所述系统类装载器,记录所述一个或多个运行时类的类路径信息。
12.按照权利要求11所述的系统,其中:
所述多个运行时类包含在一个或多个模块中。
13.按照权利要求12所述的系统,其中:
如果记录了包含在所述一个或多个模块中至少一个模块中的至少一个运行时类,则将所述至少一个模块记录在文件中。
14.按照权利要求11所述的系统,还包括:
包含所提取的一个或多个运行时类的新产生的模块。
15.按照权利要求14所述的系统,其中:
所述新产生的模块被添加到与所述应用相关联的应用类装载器能够使用的目标类路径中。
16.按照权利要求11所述的系统,还包括:
定义将被装载到虚拟机中的一个或多个运行时类的目标类路径。
17.按照权利要求16所述的系统,其中:
在预定目标类路径的一个部分中定义所述一个或多个运行时类。
18.按照权利要求11所述的系统,还包括:
被所述系统类装载器委托执行类装载处理的受委托类装载器。
19.按照权利要求11所述的系统,还包括:
根据所记录的类路径信息产生包含所述一个或多个运行时类的新产生模块的提取器。
20.一种提取运行时类的系统,包括:
用于在虚拟机中建立系统类装载器的装置;
用于支持对在所述虚拟机上运行的应用执行的操作的装置,其中所述应用与多个运行时类相关联,并且所述操作与所述多个运行时类中的一个或多个运行时类相关联;
用于确定所述一个或多个运行时类中的每个运行时类的类路径信息的装置,其中上下文信息使系统类装载器能够定位所述运行时类,以便将所述运行时类装载到虚拟机中;
用于借助所述系统类装载器,记录所述一个或多个运行时类的类路径信息的装置;和
用于根据所记录的类路径信息,提取所述一个或多个运行时类的装置。
21.按照权利要求20所述的系统,还包括:
用于把所述多个运行时类包含在一个或多个模块中的装置。
22.按照权利要求21所述的系统,还包括:
用于如果记录了包含在所述一个或多个模块中的至少一个模块中的至少一个运行时类,则将所述至少一个模块记录在文件中的装置。
23.按照权利要求20所述的系统,还包括:
用于将所述一个或多个运行时类拷贝到新产生的模块中的装置。
24.按照权利要求23所述的系统,还包括:
用于把新产生的模块添加到能够被应用类装载器使用的目标类路径中的装置。
25.按照权利要求20所述的系统,还包括:
用于选择类的最小集合的装置,所述类的最小集合能够支持一个或多个操作的执行。
26.按照权利要求20所述的系统,还包括:
用于从预定的目标类路径装载所述一个或多个运行时类的装置。
27.按照权利要求26所述的系统,还包括:
用于在预定的目标类路径的一个部分中定义所述一个或多个运行时类的装置。
28.按照权利要求20所述的系统,还包括:
用于删除除了所述一个或多个运行时类之外的所述多个运行时类的装置。
29.按照权利要求20所述的系统,还包括:
用于通过所述系统类装载器,将类装载和记录处理委托给受委托类装载器的装置。
CN201010110578.4A 2010-02-10 2010-02-10 运行时类提取的方法和系统 Active CN102147734B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201010110578.4A CN102147734B (zh) 2010-02-10 2010-02-10 运行时类提取的方法和系统
US12/752,412 US8473936B2 (en) 2010-02-10 2010-04-01 System and method for runtime class extracting

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201010110578.4A CN102147734B (zh) 2010-02-10 2010-02-10 运行时类提取的方法和系统

Publications (2)

Publication Number Publication Date
CN102147734A true CN102147734A (zh) 2011-08-10
CN102147734B CN102147734B (zh) 2016-01-13

Family

ID=44354658

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201010110578.4A Active CN102147734B (zh) 2010-02-10 2010-02-10 运行时类提取的方法和系统

Country Status (2)

Country Link
US (1) US8473936B2 (zh)
CN (1) CN102147734B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111931185A (zh) * 2020-08-11 2020-11-13 深信服科技股份有限公司 一种Java反序列化漏洞检测方法及组件

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9841982B2 (en) * 2011-02-24 2017-12-12 Red Hat, Inc. Locating import class files at alternate locations than specified in classpath information
US8739147B2 (en) * 2011-04-15 2014-05-27 International Business Machines Corporation Class isolation to minimize memory usage in a device
US9507613B2 (en) * 2012-03-30 2016-11-29 Oracle International Corporation Methods and apparatus for dynamically preloading classes
US9251026B2 (en) * 2012-03-31 2016-02-02 Bmc Software, Inc. Application instrumentation code extension
US10394528B2 (en) 2016-03-30 2019-08-27 Oracle International Corporation Returning a runtime type loaded from an archive in a module system
US10191753B2 (en) 2016-03-30 2019-01-29 Oracle International Corporation Generating verification metadata and verifying a runtime type based on verification metadata

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040015936A1 (en) * 2001-05-22 2004-01-22 Sun Microsystems, Inc. Dynamic class reloading mechanism
US20050060698A1 (en) * 2003-09-11 2005-03-17 International Business Machines Corporation Mechanism for loading plugin classes at an appropriate location in the class loader hierarchy
US20080222624A1 (en) * 2005-09-13 2008-09-11 International Business Machines Corporation Method and Apparatus for Classpath Optimization in a Java Runtime Environment
US7647336B2 (en) * 2006-02-09 2010-01-12 International Business Machines Corporation Creating a real-time class package to class archive file mapping index

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6072953A (en) * 1997-09-30 2000-06-06 International Business Machines Corporation Apparatus and method for dynamically modifying class files during loading for execution
US5966702A (en) * 1997-10-31 1999-10-12 Sun Microsystems, Inc. Method and apparatus for pre-processing and packaging class files
GB9825102D0 (en) * 1998-11-16 1999-01-13 Insignia Solutions Plc Computer system
US6429860B1 (en) * 1999-06-15 2002-08-06 Visicomp, Inc. Method and system for run-time visualization of the function and operation of a computer program
US7069550B2 (en) * 2001-12-21 2006-06-27 International Business Machines Corporation Delegation-based class loading of cyclically dependent components
US7039923B2 (en) * 2002-04-19 2006-05-02 Sun Microsystems, Inc. Class dependency graph-based class loading and reloading
US7665080B2 (en) * 2003-02-12 2010-02-16 Bea Systems, Inc. System and method for using a classloader hierarchy to load software applications
US7337434B2 (en) * 2003-04-29 2008-02-26 Sony Ericsson Mobile Communications Ab Off-device class/resource loading methods, systems and computer program products for debugging a Java application in a Java micro device
US7721277B1 (en) * 2004-06-08 2010-05-18 Oracle America, Inc. Hot deployment of shared modules in an application server
US7398523B2 (en) * 2004-08-19 2008-07-08 International Business Machines Corporation Adaptive class loading
US7941402B2 (en) * 2004-09-24 2011-05-10 Sap Ag Storing and using classes in databases
US7685589B2 (en) * 2004-10-14 2010-03-23 Microsoft Corporation File loading synchronization
GB0427670D0 (en) * 2004-12-16 2005-01-19 Ibm Methods, systems and computer program products for loading a resource
US7814472B2 (en) * 2005-09-12 2010-10-12 Oracle International Corporation System and method for shared code-sourcing in a Java Virtual Machine environment
US7784043B2 (en) * 2005-09-12 2010-08-24 Oracle International Corporation Method and system for automated code-source indexing in Java Virtual Machine environment
US7954096B2 (en) * 2005-09-12 2011-05-31 Oracle International Corporation Shared loader system and method
GB0522939D0 (en) * 2005-11-10 2005-12-21 Ibm Shared classes cache computer system and method therefor
US8250559B2 (en) * 2006-04-12 2012-08-21 Oracle America, Inc. Supporting per-program classpaths with class sharing in a multi-tasking virtual machine
US20070276901A1 (en) * 2006-05-23 2007-11-29 Bhp Billiton Innovation Pty Ltd. Method and system for providing a graphical workbench environment with intelligent plug-ins
GB2459681B (en) * 2008-04-30 2012-04-25 Vmware Inc a computer system and a method of deploying an application in a computer system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040015936A1 (en) * 2001-05-22 2004-01-22 Sun Microsystems, Inc. Dynamic class reloading mechanism
US20050060698A1 (en) * 2003-09-11 2005-03-17 International Business Machines Corporation Mechanism for loading plugin classes at an appropriate location in the class loader hierarchy
US20080222624A1 (en) * 2005-09-13 2008-09-11 International Business Machines Corporation Method and Apparatus for Classpath Optimization in a Java Runtime Environment
US7647336B2 (en) * 2006-02-09 2010-01-12 International Business Machines Corporation Creating a real-time class package to class archive file mapping index

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111931185A (zh) * 2020-08-11 2020-11-13 深信服科技股份有限公司 一种Java反序列化漏洞检测方法及组件

Also Published As

Publication number Publication date
US20110197183A1 (en) 2011-08-11
CN102147734B (zh) 2016-01-13
US8473936B2 (en) 2013-06-25

Similar Documents

Publication Publication Date Title
CN102147734A (zh) 运行时类提取的方法和系统
CN101002174B (zh) 在便携式装置中加载具有面向对象的中间语言的软件的方法
CN1230744C (zh) 一种嵌入式系统软件补丁的实现和控制方法
CN101719077B (zh) 在.Net程序中注入代码的方法和装置
CN104102506B (zh) 一种基于ARM平台的Android启动加速方法
CN105224370A (zh) 一种加载elf文件的方法和装置
CN101110055B (zh) 在单元测试中实现通用桩函数的装置及其实现方法
CN102236750A (zh) 在云存储系统中进行权限控制的方法和装置
US20110023007A1 (en) Associating Workflows With Code Sections In A Document Control System
CN102799461A (zh) 一种应用的执行方法、装置及电子设备
CN103631712B (zh) 一种基于内存管理的模式化软件关键行为跟踪方法
CN101650663A (zh) 一种数据库系统及其升级的方法
US8141042B2 (en) Extending portability of java code through the use of AOP
WO2021092502A1 (en) Just-in-time containers
CN101719074A (zh) 补丁实现方法及装置
CN104375858A (zh) 多浏览器平台执行javascript脚本的方法及装置
CN108647061A (zh) 系统隐藏方法的调用方法、装置和计算设备
US9477496B2 (en) Method and apparatus for loading classes and re-organizing class archives
WO2018032653A1 (zh) 一种Java卡应用的功能实现方法及装置
CN102968323B (zh) 计算机终端和实现计算机系统开机加速的方法
US20150347745A1 (en) Method for extracting executable code of application using memory dump
CN111984595B (zh) 一种文件处理方法及装置、存储介质
CN107220342A (zh) 一种分布式数据库的控制方法及系统
CN106778270B (zh) 一种恶意应用程序的检测方法及系统
CN1828596A (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
C14 Grant of patent or utility model
GR01 Patent grant