CN111522545B - 基于Java的动态构建模型的方法、装置、系统和可读介质 - Google Patents

基于Java的动态构建模型的方法、装置、系统和可读介质 Download PDF

Info

Publication number
CN111522545B
CN111522545B CN202010638368.6A CN202010638368A CN111522545B CN 111522545 B CN111522545 B CN 111522545B CN 202010638368 A CN202010638368 A CN 202010638368A CN 111522545 B CN111522545 B CN 111522545B
Authority
CN
China
Prior art keywords
model class
model
class
loaded
syntax tree
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
CN202010638368.6A
Other languages
English (en)
Other versions
CN111522545A (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.)
Mobilemd System Jiaxing Co ltd
Original Assignee
Mobilemd System Jiaxing Co 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 Mobilemd System Jiaxing Co ltd filed Critical Mobilemd System Jiaxing Co ltd
Priority to CN202010638368.6A priority Critical patent/CN111522545B/zh
Publication of CN111522545A publication Critical patent/CN111522545A/zh
Application granted granted Critical
Publication of CN111522545B publication Critical patent/CN111522545B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/35Creation or generation of source code model driven
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/37Compiler construction; Parser generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • 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
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

本申请提供了一种基于Java的动态构建模型的方法,包括:接收终端传入的基于应用/JSON格式的RESTful调用请求,其中RESTful调用请求包含基于JSON格式的模型类的字符串;判断与字符串对应的模型类是否被加载过;当模型类未被加载过时,根据字符串构建相应的基于JSON格式的抽象语法树,使用JSON语法解析器对抽象语法树进行广度遍历,根据抽象语法树的节点创建模型类,根据模型类编译相应的字节码文件;以及通过与模型类相对应的类加载器将字节码文件加载进Java虚拟机并返回相应的模型类对象。该方法能够在终端的调用请求中包含的模型类未被加载过时,根据终端的调用请求自动动态构建相应的模型,无需人工介入。

Description

基于Java的动态构建模型的方法、装置、系统和可读介质
技术领域
本申请主要涉及数据处理技术领域,尤其涉及一种基于Java的动态构建模型的方法、装置、系统和计算机可读介质。
背景技术
目前的规则引擎的表达式执行依赖静态模型,而静态模型需要开发人员提前构建,不能由业务人员直接构建。现有技术中的热加载是由开发人员基于调用请求的报文结构,人工建立模型、编译模型并加载至容器内的类加载器,仍需要开发人员的介入。因此,如何能够基于调用请求来动态构建相应的模型且无需人工介入是本领域技术人员亟需解决的问题。
发明内容
本申请要解决的技术问题是提供一种基于Java的动态构建模型的方法、装置、系统和计算机可读介质,能够基于调用请求来动态构建相应的模型且无需人工介入。
为解决上述技术问题,本申请提供了一种基于Java的动态构建模型的方法,包括:接收终端传入的基于应用/JSON格式的RESTful调用请求,其中所述RESTful调用请求包含基于JSON格式的模型类的字符串;判断与所述字符串对应的模型类是否被加载过;当所述模型类未被加载过时,根据所述字符串构建相应的基于JSON格式的抽象语法树,使用JSON语法解析器对所述抽象语法树进行广度遍历,根据所述抽象语法树的节点创建所述模型类,根据所述模型类编译相应的字节码文件;以及通过与所述模型类相对应的类加载器将所述字节码文件加载进Java虚拟机并返回相应的模型类对象。
可选地,该方法还包括:当所述模型类被加载过时,判断是否需要覆盖所述模型类;当需要覆盖所述模型类时,根据所述字符串构建相应的基于JSON格式的抽象语法树,使用JSON语法解析器对所述抽象语法树进行广度遍历,根据所述抽象语法树的节点创建所述模型类,并且根据所述模型类编译相应的字节码文件;以及当不需要覆盖所述模型类时,根据所述模型类编译相应的字节码文件。
可选地,所述判断与所述字符串对应的模型类是否被加载过是基于双亲委派机制进行判断。
可选地,所述通过与所述模型类相对应的类加载器将所述字节码文件加载进Java虚拟机为同步机制。
可选地,所述判断与所述字符串对应的模型类是否被加载过包括:判断所述模型类的名称是否存在;当所述名称存在时,则确定所述模型类被加载过;以及当所述名称不存在时,则确定所述模型类未被加载过。
可选地,该方法还包括:将所述字节码文件转化为相应的字符串并保存至数据库和/或缓存。
可选地,所述根据所述抽象语法树的节点创建所述模型类是使用Commons-lang包和Jackson包进行创建。
为解决上述技术问题,本申请还提供了一种基于Java的动态构建模型的装置,包括:接收模块,用于接收终端传入的基于应用/JSON格式的RESTful调用请求,其中所述RESTful调用请求包含基于JSON格式的模型类的字符串;加载判断模块,用于判断与所述字符串对应的模型类是否被加载过;第一模型构建模块,用于当所述模型类未被加载过时,根据所述字符串构建相应的基于JSON格式的抽象语法树,使用JSON语法解析器对所述抽象语法树进行广度遍历,根据所述抽象语法树的节点创建所述模型类,根据所述模型类编译相应的字节码文件;以及加载模块,用于通过与所述模型类相对应的类加载器将所述字节码文件加载进Java虚拟机并返回相应的模型类对象。
为解决上述技术问题,本申请还提供了一种基于Java的动态构建模型的系统,包括:存储器,用于存储可由处理器执行的指令;以及处理器,用于执行所述指令以实现如上所述的方法。
为解决上述技术问题,本申请还提供了一种存储有计算机程序代码的计算机可读介质,所述计算机程序代码在由处理器执行时实现如上所述的方法。
与现有技术相比,本申请的基于Java的动态构建模型的方法、装置、系统和计算机可读介质能够在终端的调用请求中包含的模型类未被加载过时,根据终端的调用请求自动动态构建相应的模型,无需人工介入。
附图说明
包括附图是为提供对本申请进一步的理解,它们被收录并构成本申请的一部分,附图示出了本申请的实施例,并与本说明书一起起到解释本申请原理的作用。附图中:
图1是根据本申请一实施例示出的基于Java的动态构建模型的方法的流程示意图。
图2是根据本申请一实施例示出的基于Java的动态构建模型的装置示出的框图。
图3是根据本申请一实施例示出的基于Java的动态构建模型的系统的系统框图。
具体实施方式
为了更清楚地说明本申请的实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本申请的一些示例或实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图将本申请应用于其他类似情景。除非从语言环境中显而易见或另做说明,图中相同标号代表相同结构或操作。
如本申请和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,方法或者设备也可能包含其他的步骤或元素。
除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本申请的范围。同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
本申请中使用了流程图用来说明根据本申请的实施例的系统所执行的操作。应当理解的是,前面或下面操作不一定按照顺序来精确地执行。相反,可以按照倒序或同时处理各种步骤。同时,或将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。
本申请提供了一种基于Java的动态构建模型的方法。图1是根据本申请一实施例示出的基于Java的动态构建模型的方法的流程示意图。如图1所示,本实施例的基于Java的动态构建模型的方法包括以下步骤:
步骤101,接收终端传入的基于应用/JSON格式的RESTful调用请求,其中RESTful调用请求包含基于JSON格式的模型类的字符串;
步骤102,判断与字符串对应的模型类是否被加载过,当模型类未被加载过时,进入步骤103;
步骤103,根据字符串构建相应的基于JSON格式的抽象语法树,使用JSON语法解析器对抽象语法树进行广度遍历,根据抽象语法树的节点创建模型类;
步骤104,根据模型类编译相应的字节码文件;以及
步骤105,通过与模型类相对应的类加载器将字节码文件加载进Java虚拟机并返回相应的模型类对象。
在步骤101中,系统接收终端传入的RESTful调用请求。RESTful是一种符合REST(Representational State Transfer,表述性状态转移)原则的基于HTTP的网络应用程序的设计风格和开发方式,可以使用XML格式定义或JSON格式定义。系统所接收的RESTful调用请求基于应用/JSON(Application/JSON)格式,并包含基于JSON格式的模型类的字符串。模型对象可以为存在于RequestBody的外部结构体Params的objVal对象,即objVal定义了模型对象的真实结构。
在步骤102中,系统判断与字符串对应的模型类是否被加载过。若模型类未被加载过,则认为该模型类尚未被构建。可选地,系统可以通过判断模型类的名称是否存在来判断与字符串对应的模型类是否被加载过。当模型类的名称存在时,则认为该模型类被加载过;当模型类的名称不存在时,则认为该模型类未被加载过。在一个示例中,模型类的名称可以由RequestBody的外部结构体Params中的strKey来定义。
可选地,系统可以基于双亲委派机制来判断与字符串对应的模型类是否被加载过。双亲委派机制是一种类加载器的方式,双亲委派的意思是如果一个类加载器需要加载类,那么首先它会把这个类请求委派给它的父类加载器去完成,每一层都是如此,一直递归到顶层的类加载器。当父类加载器无法完成加载时,子类才会尝试去加载。通过使用双亲委派机制,可以防止重复加载同一个类,从而保证了数据安全。即使发生了篡改类的行为,双亲委派的类加载机制会使得篡改行为失效,从而保证了执行安全。
在步骤103中,系统使用JSON语法解析器对JSON格式的流文件(即模型类的字符串)进行节点(Token)分解,数据类型可以为基本数据类型或包装类型,参与至基于JSON格式的抽象语法树(Abstract Syntax Tree,AST)的每一个节点。其中,节点包括枝干节点和叶子节点;基本数据类型支持如下格式:String、Integer、Double、Long、Date和Boolean;包装类支持如下格式:List和Map。然后,系统使用JSON语法解析器对所构建的AST进行广度遍历。广度遍历能收集AST在同一个高度的节点上的所有节点,AST的搜索深度抽象为模型的嵌套深度。系统根据收集到的抽象语法树的节点创建相应的模型类文件,其中模型类文件为.java文件。可选地,系统可以使用Commons-lang包和Jackson包来根据抽象语法树的节点创建模型类。Commons-lang包提供了一些基础的、通用的操作和处理,如自动生成toString()的结果、自动实现hashCode()和equals()方法、数组操作、枚举、日期和时间的处理等。Jackson包是基于Java平台的一套数据处理工具。
在步骤104中,系统根据模型类文件编译相应的字节码文件,其中字节码文件即为.class文件。
在步骤105中,系统通过与模型类相对应的类加载器将字节码文件加载进Java虚拟机(Java Virtual Machine,JVM)并返回相应的模型类对象。在JVM中,类加载器包括引导(Bootstrap)类加载器、扩展(Extension)类加载器、系统(System)类加载器(也称应用类加载器)和自定义(Custom)类加载器。可选地,系统可以基于双亲委派机制来加载模型类。通过上述强制加载能够确保模型为当前请求中的模型。
可选地,系统可以将当次请求的字节码文件转化为相应的字符串并保存至数据库和/或本地缓存,其中数据库可以为关系型数据库。可选地,系统可以异步执行该保存步骤。当下一次调用该模型类时,系统不需要重新构建模型,能够提高后续请求在复用该模型对象时的处理效率。可选地,系统可以使用基于64个可打印字符来表示二进制数据的编码方式(Base64编码)来将字节码文件转化为相应的字符串。
可选地,类加载过程,即通过与模型类相对应的类加载器将字节码文件加载进Java虚拟机,可以为同步机制,从而确保线程安全。
综上所述,本实施例的基于Java的动态构建模型的方法能够在终端的调用请求中包含的模型类未被加载过时,自动根据请求来动态构建相应的模型,无需人工介入,从而实现了能够根据业务人员的请求自动构建相应的模型,使得整个系统流程能够完全摆脱开发人员的介入。
在本申请的另一个实施例中,与前述实施例有以下不同之处,其余部分可参考前述实施例中的说明:
如图1所示,在本实施例的基于Java的动态构建模型的方法中,步骤102还可以包括:当模型类被加载过时,进入步骤106;以及该方法还可以包括步骤106:判断是否需要覆盖模型类,当需要覆盖模型类时进入步骤103,当不需要覆盖模型类时进入步骤104。
在步骤102中,系统判断与字符串对应的模型类是否被加载过。当模型类被加载过时,则确定该模型类已存在。但当系统通过模型类的名称来判断与字符串对应的模型类是否被加载过时,已加载的模型类和当次请求中的模型类的模型内部字段名、字段类型、结构、内部方法有可能不同,例如发生了新增或者改变。
在步骤106中,系统判断是否需要覆盖模型类。例如,当已加载的模型类和当次请求中的模型类有不同时,系统需要对模型类进行更新。在一个示例中,系统可以通过根据请求中的pathVariable的defineModel参数决定。例如,defineModel参数为0代表不进入建模逻辑(即不覆盖模型类);defineModel参数为1代表进入新建模型逻辑,并且若模型类已加载过则不重建模型;defineModel参数为2代表进入新建模型逻辑,并且无论模型类是否已加载过均强制重建模型。
综上所述,本实施例的基于Java的动态构建模型的方法还能够在模型类被加载过时,根据情况确定是否需要重建模型,从而实现了在不需要重建模型时节省资源和提高效率,以及在需要重建模型时确保模型为当前请求的模型。
本申请还提供了一种基于Java的动态构建模型的装置。图2是根据本申请一实施例示出的基于Java的动态构建模型的装置示出的框图。如图2所示,该基于Java的动态构建模型的装置200包括接收模块201、加载判断模块202、第一模型构建模块203、以及加载模块204。
其中,接收模块201用于接收终端传入的基于应用/JSON格式的RESTful调用请求,其中所述RESTful调用请求包含基于JSON格式的模型类的字符串。加载判断模块202用于判断与所述字符串对应的模型类是否被加载过。第一模型构建模块203用于当所述模型类未被加载过时,根据所述字符串构建相应的基于JSON格式的抽象语法树,使用JSON语法解析器对所述抽象语法树进行广度遍历,根据所述抽象语法树的节点创建所述模型类,根据所述模型类编译相应的字节码文件。加载模块204用于通过与模型类相对应的类加载器将所述字节码文件加载进Java虚拟机并返回相应的模型类对象。
可选地,该基于Java的动态构建模型的装置200还可以包括覆盖判断模块205、第二模型构建模块206以及第三模型构建模块207。
其中,覆盖判断模块205用于当所述模型类被加载过时,判断是否需要覆盖所述模型类。第二模型构建模块206用于当需要覆盖所述模型类时,根据所述字符串构建相应的基于JSON格式的抽象语法树,使用JSON语法解析器对所述抽象语法树进行广度遍历,根据所述抽象语法树的节点创建所述模型类,并且根据所述模型类编译相应的字节码文件。第三模型构建模块207用于当不需要覆盖所述模型类时,根据所述模型类编译相应的字节码文件。
可选地,该基于Java的动态构建模型的装置200还可以包括保存模块208,用于将字节码文件转化为相应的字符串并保存至数据库和/或缓存。
上述模块201-208所执行的步骤可以参考前述图1实施例的步骤101-106,在此不再展开描述。
本申请还提供了一种基于Java的动态构建模型的系统,包括:存储器,用于存储可由处理器执行的指令;以及处理器,用于执行所述指令以实现如上任一实施例所述的方法。
图3是根据本申请一实施例示出的基于Java的动态构建模型的系统的系统框图。基于Java的动态构建模型的系统300可包括内部通信总线301、处理器(Processor)302、只读存储器(ROM)303、随机存取存储器(RAM)304、以及通信端口305。当应用在个人计算机上时,基于Java的动态构建模型的系统还可以包括硬盘307。内部通信总线301可以实现基于Java的动态构建模型的系统300组件间的数据通信。处理器302可以进行判断和发出提示。在一些实施例中,处理器302可以由一个或多个处理器组成。通信端口305可以实现基于Java的动态构建模型的系统300与外部的数据通信。在一些实施例中,基于Java的动态构建模型的系统300可以通过通信端口305从网络发送和接受信息及数据。基于Java的动态构建模型的系统300还可以包括不同形式的程序储存单元以及数据储存单元,例如硬盘307,只读存储器(ROM)303和随机存取存储器(RAM)304,能够存储计算机处理和/或通信使用的各种数据文件,以及处理器302所执行的可能的程序指令。处理器执行这些指令以实现方法的主要部分。处理器处理的结果通过通信端口传给用户设备,在用户界面上显示。
上述的基于Java的动态构建模型的方法可以实施为计算机程序,保存在硬盘307中,并可记载到处理器302中执行,以实施本申请中的基于Java的动态构建模型的方法。
本申请还提供了一种存储有计算机程序代码的计算机可读介质,所述计算机程序代码在由处理器执行时实现如上任一实施例所述的方法。
基于Java的动态构建模型的方法实施为计算机程序时,也可以存储在计算机可读存储介质中作为制品。例如,计算机可读存储介质可以包括但不限于磁存储设备(例如,硬盘、软盘、磁条)、光盘(例如,压缩盘(CD)、数字多功能盘(DVD))、智能卡和闪存设备(例如,电可擦除可编程只读存储器(EPROM)、卡、棒、键驱动)。此外,本文描述的各种存储介质能代表用于存储信息的一个或多个设备和/或其它机器可读介质。术语“机器可读介质”可以包括但不限于能存储、包含和/或承载代码和/或指令和/或数据的无线信道和各种其它介质(和/或存储介质)。
应该理解,上文所描述的实施例仅是示意。本文描述的实施例可在硬件、软件、固件、中间件、微码或者其任意组合中实现。对于硬件实现,处理单元可以在一个或者多个特定用途集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、处理器、控制器、微控制器、微处理器和/或设计为执行本文所述功能的其它电子单元或者其结合内实现。
上文已对基本概念做了描述,显然,对于本领域技术人员来说,上述申请披露仅仅作为示例,而并不构成对本申请的限定。虽然此处并没有明确说明,本领域技术人员可能会对本申请进行各种修改、改进和修正。该类修改、改进和修正在本申请中被建议,所以该类修改、改进、修正仍属于本申请示例性实施例的精神和范围。
同时,本申请使用了特定词语来描述本申请的实施例。如“一个实施例”、“一实施例”、和/或“一些实施例”意指与本申请至少一个实施例相关的某一特征、结构或特点。因此,应强调并注意的是,本说明书中在不同位置两次或多次提及的“一实施例”或“一个实施例”或“一替代性实施例”并不一定是指同一实施例。此外,本申请的一个或多个实施例中的某些特征、结构或特点可以进行适当的组合。
本申请的一些方面可以完全由硬件执行、可以完全由软件(包括固件、常驻软件、微码等)执行、也可以由硬件和软件组合执行。以上硬件或软件均可被称为“数据块”、“模块”、“引擎”、“单元”、“组件”或“系统”。处理器可以是一个或多个专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理器件(DAPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、处理器、控制器、微控制器、微处理器或者其组合。此外,本申请的各方面可能表现为位于一个或多个计算机可读介质中的计算机产品,该产品包括计算机可读程序编码。例如,计算机可读介质可包括,但不限于,磁性存储设备(例如,硬盘、软盘、磁带……)、光盘(例如,压缩盘CD、数字多功能盘DVD……)、智能卡以及闪存设备(例如,卡、棒、键驱动器……)。
同理,应当注意的是,为了简化本申请披露的表述,从而帮助对一个或多个申请实施例的理解,前文对本申请实施例的描述中,有时会将多种特征归并至一个实施例、附图或对其的描述中。但是,这种披露方法并不意味着本申请对象所需要的特征比权利要求中提及的特征多。实际上,实施例的特征要少于上述披露的单个实施例的全部特征。
虽然本申请已参照当前的具体实施例来描述,但是本技术领域中的普通技术人员应当认识到,以上的实施例仅是用来说明本申请,在没有脱离本申请精神的情况下还可作出各种等效的变化或替换,因此,只要在本申请的实质精神范围内对上述实施例的变化、变型都将落在本申请的权利要求书的范围内。

Claims (9)

1.一种基于Java的动态构建模型的方法,包括:
接收终端传入的基于应用/JSON格式的RESTful调用请求,其中所述RESTful调用请求包含基于JSON格式的模型类的字符串;
判断所述模型类的名称是否存在,当所述名称存在时,则确定所述模型类被加载过,当所述名称不存在时,则确定所述模型类未被加载过;
当所述模型类未被加载过时,根据所述字符串构建相应的基于JSON格式的抽象语法树,使用JSON语法解析器对所述抽象语法树进行广度遍历,根据所述抽象语法树的节点创建所述模型类,根据所述模型类编译相应的字节码文件;以及
通过与所述模型类相对应的类加载器将所述字节码文件加载进Java虚拟机并返回相应的模型类对象。
2.如权利要求1所述的方法,其特征在于,还包括:
当所述模型类被加载过时,判断是否需要覆盖所述模型类;
当需要覆盖所述模型类时,根据所述字符串构建相应的基于JSON格式的抽象语法树,使用JSON语法解析器对所述抽象语法树进行广度遍历,根据所述抽象语法树的节点创建所述模型类,并且根据所述模型类编译相应的字节码文件;以及
当不需要覆盖所述模型类时,根据所述模型类编译相应的字节码文件。
3.如权利要求1所述的方法,其特征在于,所述判断与所述字符串对应的模型类是否被加载过是基于双亲委派机制进行判断。
4.如权利要求1或2所述的方法,其特征在于,所述通过与所述模型类相对应的类加载器将所述字节码文件加载进Java虚拟机为同步机制。
5.如权利要求1所述的方法,其特征在于,还包括:
将所述字节码文件转化为相应的字符串并保存至数据库和/或缓存。
6.如权利要求5所述的方法,其特征在于,所述根据所述抽象语法树的节点创建所述模型类是使用Commons-lang包和Jackson包进行创建。
7.一种基于Java的动态构建模型的装置,包括:
接收模块,用于接收终端传入的基于应用/JSON格式的RESTful调用请求,其中所述RESTful调用请求包含基于JSON格式的模型类的字符串;
加载判断模块,用于判断所述模型类的名称是否存在,当所述名称存在时,则确定所述模型类被加载过,当所述名称不存在时,则确定所述模型类未被加载过;
第一模型构建模块,用于当所述模型类未被加载过时,根据所述字符串构建相应的基于JSON格式的抽象语法树,使用JSON语法解析器对所述抽象语法树进行广度遍历,根据所述抽象语法树的节点创建所述模型类,根据所述模型类编译相应的字节码文件;以及
加载模块,用于通过与所述模型类相对应的类加载器将所述字节码文件加载进Java虚拟机并返回相应的模型类对象。
8.一种动态构建模型类系统,包括:
存储器,用于存储可由处理器执行的指令;以及处理器,用于执行所述指令以实现如权利要求1-6任一项所述的方法。
9.一种存储有计算机程序代码的计算机可读介质,所述计算机程序代码在由处理器执行时实现如权利要求1-6任一项所述的方法。
CN202010638368.6A 2020-07-06 2020-07-06 基于Java的动态构建模型的方法、装置、系统和可读介质 Active CN111522545B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010638368.6A CN111522545B (zh) 2020-07-06 2020-07-06 基于Java的动态构建模型的方法、装置、系统和可读介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010638368.6A CN111522545B (zh) 2020-07-06 2020-07-06 基于Java的动态构建模型的方法、装置、系统和可读介质

Publications (2)

Publication Number Publication Date
CN111522545A CN111522545A (zh) 2020-08-11
CN111522545B true CN111522545B (zh) 2020-10-20

Family

ID=71909996

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010638368.6A Active CN111522545B (zh) 2020-07-06 2020-07-06 基于Java的动态构建模型的方法、装置、系统和可读介质

Country Status (1)

Country Link
CN (1) CN111522545B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113641414A (zh) * 2021-08-30 2021-11-12 平安国际融资租赁有限公司 物联网设备接入方法、装置、计算机设备及存储介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106603592B (zh) * 2015-10-15 2019-10-01 中国电信股份有限公司 一种用于基于服务模型的应用集群迁移的方法和迁移装置
CN106022483B (zh) * 2016-05-11 2019-06-14 星环信息科技(上海)有限公司 机器学习模型之间进行转换的方法与设备
EP3534594B1 (de) * 2018-02-28 2020-11-25 Kistler Holding AG Kommunikationssystem zur datenübermittlung zwischen datenerzeugereinheiten und datenauswerteeinheiten
CN111309293B (zh) * 2020-02-27 2023-09-05 北京奇艺世纪科技有限公司 一种界面框架构建方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN111522545A (zh) 2020-08-11

Similar Documents

Publication Publication Date Title
CN110716748B (zh) 业务处理方法、装置、计算机可读介质及电子设备
US8997070B2 (en) Extension mechanism for scripting language compiler
US9465590B2 (en) Code generation framework for application program interface for model
US9471345B2 (en) Runtime generation and injection of java annotations
US8701087B2 (en) System and method of annotating class models
US9524323B2 (en) Delegation of expression tree evaluation
US20140143762A1 (en) Symbolic execution of dynamic programming languages
US20070074156A1 (en) Componentization of software computer programs
US10089084B2 (en) System and method for reusing JavaScript code available in a SOA middleware environment from a process defined by a process execution language
CN113094028B (zh) 一种Windows桌面程序开发系统、方法及相关组件
CN110941655B (zh) 一种数据格式转换方法及装置
US10223108B2 (en) System and method of reconstructing complex custom objects
EP3462330A1 (en) Fault tolerant adapter system to consume database as a service
CN105630489B (zh) 数据处理方法和数据处理装置
US8606766B2 (en) Method and system to handle java class versioning
CN111522545B (zh) 基于Java的动态构建模型的方法、装置、系统和可读介质
US10268496B2 (en) System and method for supporting object notation variables in a process defined by a process execution language for execution in a SOA middleware environment
CN112506943B (zh) 一种异构数据服务提供方法、装置、设备和介质
CN114706582A (zh) 程序运行时的图标处理方法及装置、电子设备、存储介质
CN113031940A (zh) 前端框架开发方法、装置及终端设备
CN113342399A (zh) 应用项目的结构配置方法、装置及可读存储介质
US10223142B2 (en) System and method for supporting javascript activities in a process defined by a process execution language for execution in a SOA middleware environment
Shen et al. Using Abstract State Machines to Support UML Model Instantiation Checking.
CN115373665A (zh) 一种软件设计模型自动生成方法和系统
CN118331660A (zh) 接口调用方法、装置、设备和存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP03 "change of name, title or address"
CP03 "change of name, title or address"

Address after: 314000 3 storeys, Building 9, Intelligent Industry Innovation Park, 36 Changshengnan Road, Jiaxing Economic and Technological Development Zone, Zhejiang Province

Patentee after: Zhejiang Taimei Medical Technology Co., Ltd

Address before: 314001 3rd floor, building 9, smart industry innovation park, 36 Changsheng South Road, Jiaxing City, Zhejiang Province

Patentee before: MOBILEMD SYSTEM (JIAXING) Co.,Ltd.