CN111443901B - 一种基于Java反射的业务扩展方法及装置 - Google Patents
一种基于Java反射的业务扩展方法及装置 Download PDFInfo
- Publication number
- CN111443901B CN111443901B CN201811614165.2A CN201811614165A CN111443901B CN 111443901 B CN111443901 B CN 111443901B CN 201811614165 A CN201811614165 A CN 201811614165A CN 111443901 B CN111443901 B CN 111443901B
- Authority
- CN
- China
- Prior art keywords
- service
- party
- log
- class
- processing task
- 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
- 238000000034 method Methods 0.000 title claims abstract description 77
- 238000004590 computer program Methods 0.000 claims description 9
- 238000004364 calculation method Methods 0.000 claims description 8
- 230000008569 process Effects 0.000 claims description 2
- 230000000875 corresponding effect Effects 0.000 description 31
- 238000010276 construction Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 239000003638 chemical reducing agent Substances 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明提供了一种基于Java反射的业务扩展方法及装置,所述方法包括:基于大数据平台获取任一应用程序的业务扩展的基础包名;扫描所述基础包下的多个第三方类信息,为各第三方类信息对应创建所述大数据平台的计算服务器执行的业务处理任务;其中,所述业务处理任务配置有所述第三方类信息的日志路径;利用所述计算服务器根据所述业务处理任务中的日志路径获取对应第三方类信息,基于所述第三方类信息通过Java反射创建实例对象;基于所述实例对象调用业务处理逻辑执行所述业务处理任务。基于本发明实施例提供的方法,可以在大数据平台下,实现新的业务类的扩展,进而在保证系统代码稳定性的同时,提升系统的可扩展性。
Description
技术领域
本发明涉及数据处理技术领域,特别是涉及一种基于Java反射的业务扩展方法及装置。
背景技术
对于目前使用的系统来说,当需要基于系统新增功能业务时,通常会新增更多的业务类相关自定义文件,对于新增自定义文件的各种类的类名以及实例对象名是千奇百怪的,需要有各自专有的构造函数、属性名或个性化方法名进行刻意进行调用,导致代码无法通用化,并且,先前构造好的系统无法感知后来扩展出来的业务。最终使得业务系统的代码违背了软件的设计的开闭原则,从而导致代码过于臃肿,无法维护。
发明内容
本发明提供了一种基于Java反射的业务扩展方法及装置以克服上述问题或者至少部分地解决上述问题。
根据本发明的一个方面,提供了一种基于Java反射的业务扩展方法,应用于大数据平台,所述方法包括:
基于大数据平台获取任一应用程序的业务扩展的基础包名;
扫描所述基础包下的多个第三方类信息,为各第三方类信息对应创建所述大数据平台的计算服务器执行的业务处理任务;其中,所述业务处理任务配置有所述第三方类信息的日志路径;
利用所述计算服务器根据所述业务处理任务中的日志路径获取对应第三方类信息,基于所述第三方类信息通过Java反射创建实例对象;
基于所述实例对象调用业务处理逻辑执行所述业务处理任务。
可选地,所述扫描所述基础包下的多个第三方类信息,为各第三方类信息对应创建所述大数据平台的计算服务器执行的业务处理任务,包括:
扫描所述基础包下的多个第三方类信息,将所述各第三方类信息转换为字节码列表;
基于所述字节码列表创建所述大数据平台的计算服务器执行的业务处理任务。
可选地,所述利用所述计算服务器根据所述业务处理任务中的日志路径获取对应第三方类信息,基于所述第三方类信息通过Java反射创建实例对象,包括:
利用所述计算服务器根据所述业务处理任务获取各第三方类信息的字节码以及业务日志;
基于所述字节码通过Java反射创建所述业务日志对应业务类名的实例对象。
可选地,所述利用所述计算服务器根据所述业务处理任务获取各第三方类信息的字节码以及业务日志之后,还包括:
初始化所述计算服务器的业务处理任务列表,生成包括日志路径和业务全类名字符串的元组数据;
获取所述业务日志中各行数据的日志存储路径,并从所述元组数据中获取各日志存储路径对应的业务全类名。
可选地,所述基于所述字节码通过Java反射创建所述业务日志对应业务类名的实例对象,包括:
基于所述业务全类名通过反射创建对应不同类名的实例对象。
可选地,所述基于所述实例对象调用业务处理逻辑执行所述业务处理任务,包括:
基于所述实例对象调用日志处理的业务逻辑,通过所述业务逻辑对所述业务日志进行处理。
可选地,所述大数据平台为Hadoop计算框架。
根据本发明的另一方面,还提供了一种基于Java反射的业务扩展装置,应用于大数据平台,所述装置包括:
获取模块,配置为基于大数据平台获取任一应用程序的业务扩展的基础包名;
扫描模块,配置为扫描所述基础包下的多个第三方类信息,为各第三方类信息对应创建所述大数据平台的计算服务器执行的业务处理任务;其中,所述业务处理任务配置有所述第三方类信息的日志路径;
反射模块,配置为利用所述计算服务器根据所述业务处理任务中的日志路径获取对应第三方类信息,基于所述第三方类信息通过Java反射创建实例对象;
处理模块,配置为基于所述实例对象调用业务处理逻辑执行所述业务处理任务。
可选地,所述扫描模块还配置为:
扫描所述基础包下的多个第三方类信息,将所述各第三方类信息转换为字节码列表;
基于所述字节码列表创建所述大数据平台的计算服务器执行的业务处理任务。
可选地,所述反射模块还配置为:
利用所述计算服务器根据所述业务处理任务获取各第三方类信息的字节码以及业务日志;
基于所述字节码通过Java反射创建所述业务日志对应业务类名的实例对象。
可选地,所述反射模块还配置为:
在利用所述计算服务器根据所述业务处理任务获取各第三方类信息的字节码以及业务日志之后,初始化所述计算服务器的业务处理任务列表,生成包括日志路径和业务全类名字符串的元组数据;
获取所述业务日志中各行数据的日志存储路径,并从所述元组数据中获取各日志存储路径对应的业务全类名。
可选地,所述反射模块还配置为:基于所述业务全类名通过反射创建对应不同类名的实例对象。
可选地,所述处理模块还配置为:基于所述实例对象调用日志处理的业务逻辑,通过所述业务逻辑对所述业务日志进行处理。
可选地,所述大数据平台为Hadoop计算框架。
根据本发明的另一方面,还提供了一种计算机存储介质,所述计算机存储介质存储有计算机程序代码,当所述计算机程序代码在计算设备上运行时,导致所述计算设备执行上述任一项所述的基于Java反射的业务扩展方法。
根据本发明的另一方面,还提供了一种一种计算设备,包括:
处理器;
存储有计算机程序代码的存储器;
当所述计算机程序代码被所述处理器运行时,导致所述计算设备执行上述任一项所述的基于Java反射的业务扩展方法
本发明提供了一种基于Java反射的业务扩展方法及装置,在本发明提供的方法中,通过获取业务扩展的基础包名下扫描第三方类信息,生成大数据平台的计算服务器可执行的业务处理任务,由该计算服务器通过Java反射创建第三方类信息对应的实例对象,进而基于实例对象调用对应的业务逻辑执行业务处理任务。基于本发明提供的方法,通过Java反射感知新增加的第三方类信息,可以在以构建的系统级别的代码不被修改的情况下,扩展新的业务类,进而在保证系统代码稳定性的同时,实现对业务类的任意扩展,提高了系统的可扩展性。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1是根据本发明实施例的基于Java反射的业务扩展方法流程示意图;
图2是根据本发明实施例的Java反射原理示意图;
图3根据本发明优选实施例的基于Java反射的业务扩展方法流程示意图;
图4根据本发明实施例的基于Java反射的业务扩展装置结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1是根据本发明实施例的基于Java反射的业务扩展方法流程示意图,参见图1可知,本发明实施例提供的基于Java反射的业务扩展方法可以包括:
步骤S102,基于大数据平台获取任一应用程序的业务扩展的基础包名;
步骤S104,扫描基础包下的多个第三方类信息,为各第三方类信息对应创建大数据平台的计算服务器执行的业务处理任务;其中,业务处理任务配置有第三方类信息的日志路径;
步骤S106,利用计算服务器根据业务处理任务中的日志路径获取对应第三方类信息,基于第三方类信息通过Java反射创建实例对象;
步骤S108,基于实例对象调用业务处理逻辑执行业务处理任务。
本发明实施例提供了一种基于Java反射的业务扩展方法,在本发明实施例提供的方法中,通过获取业务扩展的基础包名下扫描第三方类信息,生成大数据平台的计算服务器可执行的业务处理任务,由该计算服务器通过Java反射创建第三方类信息对应的实例对象,进而基于实例对象调用对应的业务逻辑执行业务处理任务。基于本发明实施例提供的方法,通过Java反射感知新增加的第三方类信息,可以在以构建的系统级别的代码不被修改的情况下,扩展新的业务类,进而在保证系统代码稳定性的同时,实现对业务类的任意扩展,提高了系统的可扩展性。其中,本发明实施例中的大数据平台优选为Hadoop计算框架,除此之外,还可以为Flink计算框架或是Spark计算框架,本发明不做限定。
反射,就是JVM(Java Virtual Machine,Java虚拟机)对Java字节码进行结构解析,可以以一种通用的方式对任意对象进行实例化或属性值获取,以及设置和方法调用的Java技术。
进行业务扩展时,传统的方案如下:
特定类引用名=new特定类构造(参数)
引用名set字段名(xxxx)
引用名get字段名()
引用名方法()
Java反射所采用的方式如下:
引用名=Constructor.newInstance()
Field.set(引用名,xxxx)
Field.get(引用名)
Method.invoke(引用名)
由此可知,对于传统方案来讲,引用是中心,构造、字段以及方法均为被动,如果要使用一个类,则必须导入类所在的包,明确使用类名称或者接口名称定义对象,通过关键字new进行类对象实例化,产生对象可以使用"对象.属性"进行类中属性的调用,以及通过"对象.方法()"调用类的中方法。而对于Java反射来讲,则是以构造、字段和方法为中心,引用作为被动,其不需要有明确类型的对象,所有的对象使用Object表示,即可以直接利用Object与反射机制的混合调用类中的方法。
图2示出了Java反射原理示意图,参见图2可知,Class绑定实例对象Obj,Java反射包括以下四大核心:
1、Class类
Class类是整个反射操作的源头,用最多的是forName()方法,将Class对象和全类名关联,其中,全类名为String(字符串)形式。
2、Constructor,类的构造器对象
Class类如果使用了forName()方法之后,就可以使用Class类定义的newInstance()方法默认去调用类之中的无参构造方法。
在Class类中定义了可以取得一个类中构造方法的操作:
Class:getConstructor(Class<?>[])
Constructor对象和构造形参
Constructor:newInstance(Object[])
Class相关类实例对象对象和构造实参
3、Method,类的方法对象
取得一个类中的实例对象之后,就可以调用类中可以使用的操作方法。
Class:getMethod(String,Class<?>[])
Method对象和String方法名+方法形参
Method:invoke(Object,Object[])
为指定对象的指定方法的形参传入实参
4、Field,类的属性对象
Class:getField(String)
Field对象和String字段名
Field:set(Object,Object)或get(Object)
为指定对象的指定字段传入的字段值
由上述介绍可知,原本的个性化的操作都可以通过字符串的配置来通用化,保证了原有系统对新增业务类的识别。
在上述步骤S104中提及,在获取到大数据平台任一应用程序的业务扩展的基础包名之后,会扫描该基础包名下的第三方类信息。在本发明实施例中,第三方类信息即指针对终端设备中任一应用程序如手机卫士、清理大师等应用程序进行业务或功能进行扩展时需要新加入的类信息。可选地,基于第三方类信息创建计算服务器执行的业务处理任务时,可以先扫描基础包下的多个第三方类信息,将各第三方类信息转换为字节码列表;基于字节码列表创建大数据平台的计算服务器执行的业务处理任务。
字节码是一种包含执行程序,由一序列op代码/数据对组成的二进制文件。在获取到多个第三方类信息之后,可先将其转换为字节码列表,也就是.Class文件,以有效辅助后续在计算机服务器中基于Java反射实现实例对象,即上述步骤S106可以包括:利用计算服务器根据业务处理任务获取各第三方类信息的字节码以及业务日志;基于字节码通过Java反射创建业务日志对应业务类名的实例对象。
可选地,利用计算服务器根据业务处理任务获取各第三方类信息的字节码以及业务日志之后,还可以初始化计算服务器的业务处理任务列表,生成包括日志路径和业务全类名字符串的元组数据,获取业务日志中各行数据的日志存储路径,并从元组数据中获取各日志存储路径对应的业务全类名。元组(tuple)是关系数据库中的基本概念,关系是一张表,表中的每行(即数据库中的每条记录)就是一个元组,每列就是一个属性。在二维表里,元组也称为行。元组是不可以改变的序列,同list一样,元组可以存放任意类型的值。因此,生成包括日志路径和业务全类名字符串的元组数据之后,在对业务日志进行处理时,就可以基于元组数据的日志路径获取对应的业务全类名字符串,进而基于上述字符串形式的业务全类名通过反射创建对应不同类名的实例对象,最终基于实例对象调用日志处理的业务逻辑,通过业务逻辑对业务日志进行处理。
也就是说,先有了新增业务的.java文件,通过java的编译器,把这个.java文件变成了.class文件,当.class文件加载到虚拟机中之后即有了class对象,进而新增业务的全类名、类名等信息均可获得。全类名是某个文件在项目中的位置,格式为包名.类名,当获取到全类名字符串后,就可以从中分析出对应业务的类名,进而基于反射快速创建出对应不同类名的实例对象。
假设,有一个类class A,有一个方法a1、a2,A a=new A()
传统方案调用方法的时候是:a.a1();a.a2();当有新增业务类C的时候,会重新生成new C,实现该业务时,调用的方法与已有方法不一致,因此,系统无法对新业务进行感知。
基于本发明实施例提供的方法,可以获取到新增业务程序的字节码,通过字节码可以生成自己的Method,同时获取Constructor,进而通过反射的方式识别出来,再通过字节码再生成它自己的Method。例如,新增的业务类C,字符串为com.xxxxx.c,反射过程可如下:
Class class=class.forName(com.xxxxx.c)
class.getConstructor()
newInstance()
假设为C类,则做强制类型转换后即可得到C.c;
class.getMethod(“c1”),填入需要调用的Method c1,即可得到Method c1,此时,就可以将c和c1关联起来,c1.invoke(c)。对于大数据的处理流程来讲,最终目的为实现统一的接口,肯定会有同一方法需要被调用,只要获取类名,全参配置即可实现业务的添加。也就是说,只要查不同的包名,就能生成不同的实例,然后不同的实例能调用不同的方法,用invoke执行。后续新增业务类时,只需要传入新增业务类的class参数即可实现业务的扩展。
图3是根据本发明优选实施例的基于Java反射的业务扩展方法流程示意图,本优选实施例以Hadoop计算框架为例进行说明。
Hadoop计算框架主要包括并行计算模型Map/Reduce,分布式文件系统HDFS,以及分布式数据库Hbase。因此,本实施例中基于Java反射的业务扩展方法主要包括以下步骤:
S1、为MapperReducer添加HDFS日志所在输入路径;首先获取基于任一应用程序的业务扩展的基础包名;其次,扫描基础包名下的所有的第三方类信息,并转换成字节码类别;最后,为MapperReducer配置相关的HDFS日志路径;
S2、设置MapperReducer自身属性;由于Hadoop计算框架是基于MapperReducer组件进行计算处理;因此,还需要配置MapperReducer的的输入输出key类型,并设置MapperReducer输出路径等属性;
S3、向MapperReducer计算服务器提交Job进行计算处理,具体可通过Submit方法来提交Job;在MapperReducer计算服务器中,根据提交的Job的配置来初始化生成对应的Mapper和Reducer Task;
生成<HDFS,业务全类名字符串>元组;对日志文件中每一行数据获取对应的所在HDFS路径;本实施例可基于不同的业务服务器从终端设备收集到数据,收集到数据之后,每一个日志最后形成一个大的日志文件,这里面每一行数据就指的是这个大的日志文件中的需要被MR清洗的每一行数据;
从初始化的元组中通过当前日志的HDFS路径拿出对应的业务字符串全类名,然后使用Java反射创建出对应的不同的业务类名的对象;通过Java反射创建出来的调用日志处理的业务逻辑,对当前的业务日志进行处理,当前的业务日志是指针对不同业务存储在HDFS的业务路径中日志文件中的日志。
在本实施例中,当需要添加业务类时,不需要修改整个流程,直接把需要新扩展的业务类添加到业务扩展的基础包名即可实现新业务的扩展。
基于同一发明构思,本发明实施例还提供了一种基于Java反射的业务扩展装置,应用于大数据平台,如图4所示,本发明实施例提供的基于Java反射的业务扩展装置可以包括:
获取模块410,配置为基于大数据平台获取任一应用程序的业务扩展的基础包名;
扫描模块420,配置为扫描所述基础包下的多个第三方类信息,为各第三方类信息对应创建所述大数据平台的计算服务器执行的业务处理任务;其中,所述业务处理任务配置有所述第三方类信息的日志路径;
反射模块430,配置为利用所述计算服务器根据所述业务处理任务中的日志路径获取对应第三方类信息,基于所述第三方类信息通过Java反射创建实例对象;
处理模块440,配置为基于所述实例对象调用业务处理逻辑执行所述业务处理任务。
在本发明一优选实施例中,扫描模块420还可以配置为:
扫描所述基础包下的多个第三方类信息,将所述各第三方类信息转换为字节码列表;
基于所述字节码列表创建所述大数据平台的计算服务器执行的业务处理任务。
在本发明一优选实施例中,反射模块430还可以配置为:
利用所述计算服务器根据所述业务处理任务获取各第三方类信息的字节码以及业务日志;
基于所述字节码通过Java反射创建所述业务日志对应业务类名的实例对象。
在本发明一优选实施例中,所述反射模块430还可以配置为:
在利用所述计算服务器根据所述业务处理任务获取各第三方类信息的字节码以及业务日志之后,初始化所述计算服务器的业务处理任务列表,生成包括日志路径和业务全类名字符串的元组数据;
获取所述业务日志中各行数据的日志存储路径,并从所述元组数据中获取各日志存储路径对应的业务全类名。
在本发明一优选实施例中,反射模块430还可以配置为:基于所述业务全类名通过反射创建对应不同类名的实例对象。
在本发明一优选实施例中,处理模块430还可以配置为:基于所述实例对象调用日志处理的业务逻辑,通过所述业务逻辑对所述业务日志进行处理。
在本发明一优选实施例中,所述大数据平台为Hadoop计算框架。
基于同一发明构思,本发明实施例还提供了一种计算机存储介质,所述计算机存储介质存储有计算机程序代码,当所述计算机程序代码在计算设备上运行时,导致所述计算设备执行上述任一实施例所述的基于Java反射的业务扩展方法。
基于同一发明构思,本发明实施例还提供了一种计算设备,包括:
处理器;
存储有计算机程序代码的存储器;
当所述计算机程序代码被所述处理器运行时,导致所述计算设备执行上述任一实施例所述的基于Java反射的业务扩展方法。
本发明实施例提供了一种基于Java反射的业务扩展方法及装置,基于本发明实施例提供的方法,通过Java反射感知新增加的第三方类信息,可以在以构建的系统级别的代码不被修改的情况下,扩展新的业务类,进而在保证系统代码稳定性的同时,实现对业务类的任意扩展。也就是说,新增业务类时,只需要传入新增业务类的class参数,从而获取业务对应的全类名、类名等信息即可实现业务的扩展,不仅节省程序,以在大数据的平台下提高了系统的可扩展性。
所属领域的技术人员可以清楚地了解到,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,为简洁起见,在此不另赘述。
另外,在本发明各个实施例中的各功能单元可以物理上相互独立,也可以两个或两个以上功能单元集成在一起,还可以全部功能单元都集成在一个处理单元中。上述集成的功能单元既可以采用硬件的形式实现,也可以采用软件或者固件的形式实现。
本领域普通技术人员可以理解:所述集成的功能单元如果以软件的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,其包括若干指令,用以使得一台计算设备(例如个人计算机,服务器,或者网络设备等)在运行所述指令时执行本发明各实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM)、随机存取存储器(RAM),磁碟或者光盘等各种可以存储程序代码的介质。
或者,实现前述方法实施例的全部或部分步骤可以通过程序指令相关的硬件(诸如个人计算机,服务器,或者网络设备等的计算设备)来完成,所述程序指令可以存储于一计算机可读取存储介质中,当所述程序指令被计算设备的处理器执行时,所述计算设备执行本发明各实施例所述方法的全部或部分步骤。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:在本发明的精神和原则之内,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案脱离本发明的保护范围。
Claims (14)
1.一种基于Java反射的业务扩展方法,应用于大数据平台,所述方法包括:
基于大数据平台获取任一应用程序的业务扩展的基础包名;
扫描所述基础包下的多个第三方类信息,为各第三方类信息对应创建所述大数据平台的计算服务器执行的业务处理任务;其中,所述业务处理任务配置有所述第三方类信息的日志路径;
利用所述计算服务器根据所述业务处理任务中的日志路径获取对应第三方类信息,基于所述第三方类信息通过Java反射创建实例对象;
基于所述实例对象调用业务处理逻辑执行所述业务处理任务;
其中,所述扫描所述基础包下的多个第三方类信息,为各第三方类信息对应创建所述大数据平台的计算服务器执行的业务处理任务,包括:
扫描所述基础包下的多个第三方类信息,将所述各第三方类信息转换为字节码列表;
基于所述字节码列表创建所述大数据平台的计算服务器执行的业务处理任务。
2.根据权利要求1所述的方法,其中,所述利用所述计算服务器根据所述业务处理任务中的日志路径获取对应第三方类信息,基于所述第三方类信息通过Java反射创建实例对象,包括:
利用所述计算服务器根据所述业务处理任务获取各第三方类信息的字节码以及业务日志;
基于所述字节码通过Java反射创建所述业务日志对应业务类名的实例对象。
3.根据权利要求2所述的方法,其中,所述利用所述计算服务器根据所述业务处理任务获取各第三方类信息的字节码以及业务日志之后,还包括:
初始化所述计算服务器的业务处理任务列表,生成包括日志路径和业务全类名字符串的元组数据;
获取所述业务日志中各行数据的日志存储路径,并从所述元组数据中获取各日志存储路径对应的业务全类名。
4.根据权利要求3所述的方法,其中,所述基于所述字节码通过Java反射创建所述业务日志对应业务类名的实例对象,包括:
基于所述业务全类名通过反射创建对应不同类名的实例对象。
5.根据权利要求2-4任一项所述的方法,其中,所述基于所述实例对象调用业务处理逻辑执行所述业务处理任务,包括:
基于所述实例对象调用日志处理的业务逻辑,通过所述业务逻辑对所述业务日志进行处理。
6.根据权利要求1-4任一项所述的方法,其中,所述大数据平台为Hadoop计算框架。
7.一种基于Java反射的业务扩展装置,应用于大数据平台,所述装置包括:
获取模块,配置为基于大数据平台获取任一应用程序的业务扩展的基础包名;
扫描模块,配置为扫描所述基础包下的多个第三方类信息,为各第三方类信息对应创建所述大数据平台的计算服务器执行的业务处理任务;其中,所述业务处理任务配置有所述第三方类信息的日志路径;
反射模块,配置为利用所述计算服务器根据所述业务处理任务中的日志路径获取对应第三方类信息,基于所述第三方类信息通过Java反射创建实例对象;
处理模块,配置为基于所述实例对象调用业务处理逻辑执行所述业务处理任务;
所述扫描模块还配置为:扫描所述基础包下的多个第三方类信息,将所述各第三方类信息转换为字节码列表;基于所述字节码列表创建所述大数据平台的计算服务器执行的业务处理任务。
8.根据权利要求7所述的装置,其中,所述反射模块还配置为:
利用所述计算服务器根据所述业务处理任务获取各第三方类信息的字节码以及业务日志;
基于所述字节码通过Java反射创建所述业务日志对应业务类名的实例对象。
9.根据权利要求7所述的装置,其中,所述反射模块还配置为:
在利用所述计算服务器根据所述业务处理任务获取各第三方类信息的字节码以及业务日志之后,初始化所述计算服务器的业务处理任务列表,生成包括日志路径和业务全类名字符串的元组数据;
获取所述业务日志中各行数据的日志存储路径,并从所述元组数据中获取各日志存储路径对应的业务全类名。
10.根据权利要求9所述的装置,其中,所述反射模块还配置为:基于所述业务全类名通过反射创建对应不同类名的实例对象。
11.根据权利要求8-10任一项所述的装置,其中,所述处理模块还配置为:基于所述实例对象调用日志处理的业务逻辑,通过所述业务逻辑对所述业务日志进行处理。
12.根据权利要求7-10任一项所述的装置,其中,所述大数据平台为Hadoop计算框架。
13.一种计算机存储介质,所述计算机存储介质存储有计算机程序代码,当所述计算机程序代码在计算设备上运行时,导致所述计算设备执行权利要求1-6任一项所述的基于Java反射的业务扩展方法。
14.一种计算设备,包括:
处理器;
存储有计算机程序代码的存储器;
当所述计算机程序代码被所述处理器运行时,导致所述计算设备执行权利要求1-6任一项所述的基于Java反射的业务扩展方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811614165.2A CN111443901B (zh) | 2018-12-27 | 2018-12-27 | 一种基于Java反射的业务扩展方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811614165.2A CN111443901B (zh) | 2018-12-27 | 2018-12-27 | 一种基于Java反射的业务扩展方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111443901A CN111443901A (zh) | 2020-07-24 |
CN111443901B true CN111443901B (zh) | 2024-02-09 |
Family
ID=71653855
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811614165.2A Active CN111443901B (zh) | 2018-12-27 | 2018-12-27 | 一种基于Java反射的业务扩展方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111443901B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112148299A (zh) * | 2020-09-16 | 2020-12-29 | 上海中通吉网络技术有限公司 | 字节码对象拷贝方法、装置、设备和存储介质 |
CN112417020B (zh) * | 2020-11-25 | 2023-08-18 | 武汉联影医疗科技有限公司 | 业务扩展的实现方法、装置、计算机设备和存储介质 |
CN113986338B (zh) * | 2021-12-28 | 2022-04-15 | 深圳市明源云科技有限公司 | 项目扫包方法、系统、设备及计算机可读存储介质 |
CN115185712B (zh) * | 2022-09-08 | 2022-12-27 | 中化现代农业有限公司 | 数据交互方法、装置、电子设备和存储介质 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102411506A (zh) * | 2011-07-07 | 2012-04-11 | 杭州典能科技有限公司 | Java系统业务单元插件式管理系统及业务功能动态变更方法 |
CN102508639A (zh) * | 2011-10-10 | 2012-06-20 | 北京邮电大学 | 一种基于卫星遥感数据特征的分布式并行处理方法 |
CN103150494A (zh) * | 2013-03-05 | 2013-06-12 | 华为技术有限公司 | Java类对象的解扰运行方法、加扰形成方法及其装置 |
CN103677825A (zh) * | 2013-12-10 | 2014-03-26 | 国家电网公司 | 基于Java多线程通用数据处理框架及其构建方法 |
CN104360903A (zh) * | 2014-11-18 | 2015-02-18 | 北京美琦华悦通讯科技有限公司 | Spark作业调度系统中实现任务数据解耦的方法 |
CN105260179A (zh) * | 2015-09-24 | 2016-01-20 | 浪潮(北京)电子信息产业有限公司 | 一种实现flex与servlet交互的方法 |
CN105278996A (zh) * | 2015-11-03 | 2016-01-27 | 亚信科技(南京)有限公司 | 一种日志采集方法、装置及日志服务系统 |
CN106250178A (zh) * | 2016-07-26 | 2016-12-21 | 北京北森云计算股份有限公司 | 通过多语言云编译实现系统动态功能在线拦截扩展的方法 |
CN106293863A (zh) * | 2016-07-26 | 2017-01-04 | 北京北森云计算股份有限公司 | 多语言云编译实现系统功能动态扩展替换的方法及系统 |
CN106293808A (zh) * | 2016-07-26 | 2017-01-04 | 北京北森云计算股份有限公司 | 多语言云编译实现系统功能动态拦截扩展的方法及系统 |
CN108228147A (zh) * | 2016-12-15 | 2018-06-29 | 中国移动通信集团公司 | 一种性能数据日志获取方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7363482B2 (en) * | 2004-03-03 | 2008-04-22 | Intel Corporation | Method and apparatus to support remote configuration code |
US20110321009A1 (en) * | 2010-06-28 | 2011-12-29 | Verizon Patent And Licensing Inc. | Implementing encryption via aspect oriented programming |
-
2018
- 2018-12-27 CN CN201811614165.2A patent/CN111443901B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102411506A (zh) * | 2011-07-07 | 2012-04-11 | 杭州典能科技有限公司 | Java系统业务单元插件式管理系统及业务功能动态变更方法 |
CN102508639A (zh) * | 2011-10-10 | 2012-06-20 | 北京邮电大学 | 一种基于卫星遥感数据特征的分布式并行处理方法 |
CN103150494A (zh) * | 2013-03-05 | 2013-06-12 | 华为技术有限公司 | Java类对象的解扰运行方法、加扰形成方法及其装置 |
CN103677825A (zh) * | 2013-12-10 | 2014-03-26 | 国家电网公司 | 基于Java多线程通用数据处理框架及其构建方法 |
CN104360903A (zh) * | 2014-11-18 | 2015-02-18 | 北京美琦华悦通讯科技有限公司 | Spark作业调度系统中实现任务数据解耦的方法 |
CN105260179A (zh) * | 2015-09-24 | 2016-01-20 | 浪潮(北京)电子信息产业有限公司 | 一种实现flex与servlet交互的方法 |
CN105278996A (zh) * | 2015-11-03 | 2016-01-27 | 亚信科技(南京)有限公司 | 一种日志采集方法、装置及日志服务系统 |
CN106250178A (zh) * | 2016-07-26 | 2016-12-21 | 北京北森云计算股份有限公司 | 通过多语言云编译实现系统动态功能在线拦截扩展的方法 |
CN106293863A (zh) * | 2016-07-26 | 2017-01-04 | 北京北森云计算股份有限公司 | 多语言云编译实现系统功能动态扩展替换的方法及系统 |
CN106293808A (zh) * | 2016-07-26 | 2017-01-04 | 北京北森云计算股份有限公司 | 多语言云编译实现系统功能动态拦截扩展的方法及系统 |
CN108228147A (zh) * | 2016-12-15 | 2018-06-29 | 中国移动通信集团公司 | 一种性能数据日志获取方法及装置 |
Non-Patent Citations (2)
Title |
---|
tgp: A Task-Granularity Profiler for the Java Virtual Machine;E. Rosales 等;《2017 24th Asia-Pacific Software Engineering Conference (APSEC)》;570-575 * |
一种Java字节码优化框架;张昱 等;《计算机工程》;第34卷(第02期);69-71 * |
Also Published As
Publication number | Publication date |
---|---|
CN111443901A (zh) | 2020-07-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111443901B (zh) | 一种基于Java反射的业务扩展方法及装置 | |
US20220035600A1 (en) | API Specification Generation | |
JP5052568B2 (ja) | ネットワーク内の装置を管理するための方法、システム、およびプログラム | |
US8392465B2 (en) | Dependency graphs for multiple domains | |
CN106778351B (zh) | 数据脱敏方法及装置 | |
CN110019080B (zh) | 数据访问方法和装置 | |
CN106649630A (zh) | 数据查询方法及装置 | |
US10754628B2 (en) | Extracting web API endpoint data from source code to identify potential security threats | |
CN101382893B (zh) | 一种基于Web服务的构件在线组装方法 | |
CN111338604A (zh) | 服务生成方法、装置、设备及计算机可读存储介质 | |
CN113515564B (zh) | 基于j2ee的数据访问方法、装置、设备及存储介质 | |
US9146717B2 (en) | Optimizing source code | |
CN111274263A (zh) | 可视化数据库变更语句生成方法、装置及存储介质 | |
CN110888672B (zh) | 一种基于元数据架构的表达式引擎实现方法及系统 | |
CN110109983B (zh) | 一种操作Redis数据库的方法和装置 | |
CN108959294B (zh) | 一种访问搜索引擎的方法和装置 | |
CN112559606A (zh) | 用于json格式数据的转换方法及转换装置 | |
CN112733510A (zh) | 一种财务凭证生成方法、装置、设备及计算机可读存储介质 | |
CN109408577B (zh) | Oracle数据库json解析方法、系统、装置及可存储介质 | |
CN110297843B (zh) | 用于b/s系统的数据查询方法及系统、终端 | |
CN114448702B (zh) | 一种基于隐私集合求交的数据加密方法及装置 | |
CN114385145A (zh) | 一种Web系统后端架构设计方法及计算机设备 | |
CN112346672B (zh) | 日志染色方法、装置、设备及存储介质 | |
CN108076067B (zh) | 一种授权爬虫配置化模拟登录的方法及系统 | |
CN113778348A (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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20240116 Address after: Room 03, 2nd Floor, Building A, No. 20 Haitai Avenue, Huayuan Industrial Zone (Huanwai), Binhai New Area, Tianjin, 300450 Applicant after: 3600 Technology Group Co.,Ltd. Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park) Applicant before: BEIJING QIHOO TECHNOLOGY Co.,Ltd. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |