用于将Web应用自动转换成无服务器函数的方法和系统技术方案

技术编号:39595173 阅读:19 留言:0更新日期:2023-12-03 19:53
本公开涉及用于将Web应用自动转换成无服务器函数的方法和系统。提供了一种用于将Web应用自动转换成无服务器函数的方法,包括:响应于与用户的Web应用相关联的JAR包的加载,对JAR包进行扫描以获得JAR包中的控制器类的集合;确定控制器类的集合中的每个控制器类的方法中的请求处理方法,并将与所确定的请求处理方法相关联的信息存储在特定数据结构中;修改JAR包以使它包含的类符合函数计算平台的规范并将修改后的JAR包和所述特定数据结构上传到函数计算平台;在函数计算平台的入口函数中基于所述入口函数的输入参数以及所述特定数据结构,确定要调用的第一请求处理方法;以及利用所述入口函数的输入参数并且通过反射调用来执行第一请求处理方法。来执行第一请求处理方法。来执行第一请求处理方法。

【技术实现步骤摘要】
用于将Web应用自动转换成无服务器函数的方法和系统


[0001]本公开涉及代码自动转换领域,更具体地,涉及一种用于将Web应用自动转换成无服务器函数的方法、计算机系统和存储介质。

技术介绍

[0002]Spring Boot是一种广泛使用的开源的基于Java的框架。它提供了建立鲁棒的产品级应用的快速且高效的方式。Spring Boot建立在流行的Spring框架之上并且提供使得更容易开发和部署企业应用的若干特征和能力。Spring Boot带有能够简化开发过程的各种内建特征。例如,它提供自动配置,其基于依赖性自动地配置应用的各种组件。它还提供各种起步模板,其允许开发者针对不同的用例快速地创建新应用。此外,Spring Boot还支持广泛的技术和协议,包括HTTP、JDBC、MongoDB、Redis等等。
[0003]无服务器函数(Serverless Function)是一种被设计成在不需要专用服务器或基础设施的情况下在云计算平台上运行的函数。这意味着云提供商管理运行函数所需的基础设施和资源,而开发者仅需提供函数的代码即可。无服务器函数通常在事件驱动型架构中使用,其中该函数被特定事件(诸如新文件被上传到云存储服务、或者在消息队列中接收到新消息等等)触发。当事件发生时,函数被自动调用并且它处理该事件并返回响应。
[0004]无服务器函数的益处之一是它能帮助降低基础设施成本,因为开发者仅需为在函数运行时使用的资源量付费。这能帮助企业或组织省钱,尤其是当处理可能不会总是要求专门服务器的可变工作负载时。无服务器函数的另一个益处是它能够被容易地缩放以满足改变的需求,而不需要手动干预。这使得它对于具有不可预测或突发的工作负载的应用特别有用。云提供商所述提供的流行的无服务器函数平台例如包括Amazon Web Service(AWS)的Lambda服务、阿里云函数、微软Azure函数等。

技术实现思路

[0005]本公开旨在提供一种用于将Web应用自动转换成无服务器函数的方法、计算机系统和介质。
[0006]根据本公开的一些实施例,提供了一种用于将Web应用自动转换成无服务器函数的方法,包括:响应于与用户的Web应用相关联的JAR包的加载,对所述JAR包进行扫描以获得所述JAR包中的控制器类的集合;确定所述控制器类的集合中的每个控制器类的方法中的请求处理方法,并将与所确定的请求处理方法相关联的信息存储在特定数据结构中;修改所述JAR包以使它包含的类符合函数计算平台的规范并将修改后的JAR包和所述特定数据结构上传到所述函数计算平台;在所述函数计算平台的入口函数中基于所述入口函数的输入参数以及所述特定数据结构,确定要调用的第一请求处理方法;以及利用所述入口函数的输入参数并且通过反射调用来执行第一请求处理方法。
[0007]根据本公开的一些实施例,所述Web应用是Spring Boot框架下的Web应用。
[0008]根据本公开的一些实施例,对所述JAR包进行扫描以获得所述JAR包中的控制器类
的集合包括:通过对所述JAR包进行扫描获得所述JAR包中的类的列表;扫描所述类的列表中包括的每个类,并且响应于类包含特定注解,将该类确定为控制器类;以及将所确定的控制器类添加到所述控制器类的集合。
[0009]根据本公开的一些实施例,所述特定注解包括以下的至少一者:(i)org.springframework.web.bind.annotation.Rest Controller;和(ii)org.springframework.stereotype.Controller。
[0010]根据本公开的一些实施例,确定所述控制器类的集合中的每个控制器类的方法中的请求处理方法包括:对于所述控制器类的集合中的每个控制器类,扫描该控制器类的方法;以及响应于方法包含特定注解,将该方法确定为请求处理方法。
[0011]根据本公开的一些实施例,所述特定注解包括以下的一者:RequestMapping、GetMapping、PostMapping、DeleteMapping、PutMapping、或PatchMapping。
[0012]根据本公开的一些实施例,与所确定的请求处理方法相关联的信息至少包括:方法名、方法所属于的类的类名、方法对应的HTTP方法的类型、方法对应的URL路径、以及方法的参数列表。
[0013]根据本公开的一些实施例,方法的所述参数列表包括至少一个参数中的每个参数的名称和类型。
[0014]根据本公开的一些实施例,修改所述JAR包以使它包含的类符合函数计算平台的规范包括:创建符合所述函数计算平台的规范的处理类;动态地修改所述控制器类的集合中的每个控制器类使其继承所述处理类;以及生成新的JAR包以代替所述JAR包。
[0015]根据本公开的一些实施例,动态地修改所述控制器类的集合中的每个控制器类使其继承所述处理类是利用Javassist提供的方法执行的。
[0016]根据本公开的一些实施例,在所述函数计算平台的入口函数中基于所述入口函数的输入参数以及所述特定数据结构,确定要调用的第一请求处理方法包括:从所述入口函数的输入参数中获得所述函数计算平台接收的用户请求的URL路径和HTTP方法;以及基于所述URL路径和HTTP方法在所述特定数据结构中匹配对应的方法名,从而将与所述方法名对应的请求处理方法确定为第一请求处理方法。
[0017]根据本公开的一些实施例,利用所述入口函数的输入参数还包括:基于所述特定数据结构中的第一请求处理方法的参数列表,将所述入口函数的输入参数转换为适合于第一请求处理方法的参数类型。
[0018]根据本公开的一些实施例,通过反射调用来调用第一请求处理方法包括:利用Java提供的反射调用机制,使用第一请求处理方法的类的实例和经转换的参数作为方法参数来调用第一请求处理方法。
[0019]根据本公开的一些实施例,所述函数计算平台包括至少两个函数计算平台,并且利用所述入口函数的输入参数还包括:响应于所述函数计算平台是第一函数计算平台,执行将第一函数计算平台的入口函数的输入参数转换为适合于第一请求处理方法的参数类型的第一转换;以及响应于所述函数计算平台是第二函数计算平台,执行将第二函数计算平台的入口函数的输入参数转换为适合于第一请求处理方法的参数类型的第二转换,其中第一转换不同于第二转换。
[0020]根据本公开一些实施例,提供了一种计算机系统,包括:一个或多个处理器,和与
所述一个或多个处理器耦接的存储器,所述存储器存储计算机可读程序指令,所述指令在被所述一个或多个处理器执行时执行如上所述的方法。
[0021]根据本公开一些实施例,提供了一种计算机可读存储介质,其上存储计算机可读程序指令,所述指令在被所述处理器执行时执行如上所述的方法。
[0022]根据本公开一些实施例,提供了一种用于将Web应用自动转换成无服务器函数的设备,包括用于实现如上所述的方法的步骤的装置。
附图本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种用于将Web应用自动转换成无服务器函数的方法,包括:响应于与用户的Web应用相关联的JAR包的加载,对所述JAR包进行扫描以获得所述JAR包中的控制器类的集合;确定所述控制器类的集合中的每个控制器类的方法中的请求处理方法,并将与所确定的请求处理方法相关联的信息存储在特定数据结构中;修改所述JAR包以使它包含的类符合函数计算平台的规范并将修改后的JAR包和所述特定数据结构上传到所述函数计算平台;在所述函数计算平台的入口函数中基于所述入口函数的输入参数以及所述特定数据结构,确定要调用的第一请求处理方法;以及利用所述入口函数的输入参数并且通过反射调用来执行第一请求处理方法。2.根据权利要求1所述的方法,其中所述Web应用是Spring Boot框架下的Web应用。3.根据权利要求1所述的方法,其中对所述JAR包进行扫描以获得所述JAR包中的控制器类的集合包括:通过对所述JAR包进行扫描获得所述JAR包中的类的列表;扫描所述类的列表中包括的每个类,并且响应于类包含特定注解,将该类确定为控制器类;以及将所确定的控制器类添加到所述控制器类的集合。4.根据权利要求3所述的方法,其中所述特定注解包括以下的至少一者:(i)org.springframework.web.bind.annotation.Rest Controller;和(ii)org.springframework.stereotype.Controller。5.根据权利要求1所述的方法,其中确定所述控制器类的集合中的每个控制器类的方法中的请求处理方法包括:对于所述控制器类的集合中的每个控制器类,扫描该控制器类的方法;以及响应于方法包含特定注解,将该方法确定为请求处理方法。6.根据权利要求5所述的方法,其中所述特定注解包括以下的一者:RequestMapping、GetMapping、PostMapping、DeleteMapping、PutMapping、或PatchMapping。7.根据权利要求1所述的方法,其中与所确定的请求处理方法相关联的信息至少包括:方法名、方法所属于的类的类名、方法对应的HTTP方法的类型、方法对应的URL路径、以及方法的参数列表。8.根据权利要求7所述的方法,其中方法的所述参数列表包括至少一个参数中的每个参数的名称和类型。9.根据权利要求1所述的方法,其中修改所述JAR包以使它包含的类符合函数计算...

【专利技术属性】
技术研发人员:杨帆金杰韩松江魏永恋
申请(专利权)人:领悦数字信息技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1