云函数 SCF 在 Java 运行时环境中提供了 Java8 的运行环境。
Java 语言由于需要编译后才可以在 JVM 虚拟机中运行。因此在 SCF 中的使用方式,和 Python、Node.js 这类脚本型语言不同,有如下限制:
Java 开发的 SCF 云函数的代码形态一般如下所示:
package example;
public class Hello {
public String mainHandler(KeyValueClass kv) {
System.out.println("Hello world!");
System.out.println(String.format("key1 = %s", kv.getKey1()));
System.out.println(String.format("key2 = %s", kv.getKey2()));
return String.format("Hello World");
}
}
建立参数 KeyValueClass 类:
package example;
public class KeyValueClass {
String key1;
String key2;
public String getKey1() {
return this.key1;
}
public void setKey1(String key1) {
this.key1 = key1;
}
public String getKey2() {
return this.key2;
}
public void setKey2(String key2) {
this.key2 = key2;
}
public KeyValueClass() {
}
}
由于 Java 包含有包的概念,因此执行方法和其他语言有所不同,需要带有包信息。代码例子中对应的执行方法为 example.Hello::mainHandler
,此处 example
标识为 Java package,Hello
标识为类,mainHandler
标识为类方法。
可以通过 使用 Gradle 创建 zip 部署包 和 使用 Maven 创建 jar 部署包 这两种方式来创建 zip 或 jar 包。创建完成后,可通过控制台页面直接上传包(小于10M),或通过把部署包上传至 COS Bucket 后,在 SCF 控制台上通过指定部署包的 Bucket 和 Object 信息,完成部署包提交。
代码例子中,mainHandler 所使用的入参包含了两个类型,String 和 Context,返回使用了 String 类型。其中入参的前一类型标识事件入参,后一类型标识函数运行时信息。事件入参和函数返回目前支持的类型包括 Java 基础类型和 POJO 类型;函数运行时目前为 com.qcloud.scf.runtime.Context
类型,其相关库文件可从 此处 下载。
com.qcloud.scf.runtime.Context;
引入包,并在打包时带入 jar 包。public String mainHandler(String name)
。注意:部分触发器传递的入参事件结构目前已有一部分已定义,可直接使用。您可通过 cloud event 定义 获取 Java 的库并使用。如果使用过程中发现问题,可以通过 提交 issue 或提交工单说明。
您可以在程序中使用如下语句来完成日志输出:
System.out.println("Hello world!");
也可以使用 java.util.logging.Logger
作为日志输出:
Logger logger = Logger.getLogger("AnyLoggerName");
logger.setLevel(Level.INFO);
logger.info("logging message here!");
输出内容可以在函数日志中的 log
位置查看。
通过控制台界面的测试按钮,可以打开测试界面,实时触发云函数并查看运行结果。针对代码例子,由于入参是 String name
字符串类型,因此在使用调试界面进行触发运行时,需要输入的为字符串内容,例如 "Tencent Cloud"
。
如果修改了示例代码,期望接收较复杂格式的 JSON 入参,可使用 POJO 类型参数,在代码中定义对应的数据结构。SCF 平台在传递对应 JSON 参数到入口函数时,会转换为对象实例,可由代码直接使用。
您可参考以下文档,使用相关功能:
-更多关于数智化转型、数据中台内容请加入 阿里云数据中台交流群—数智俱乐部 和...
前言 在那个通讯落后的年代,人们只能依靠马匹骑行数千里,不仅落后,而且信息不...
体验简介 本场景将提供一台基础环境的 CentOS 7.2 64 位的 ECS(云服务器)实例...
TOP云(zuntop.com)科技最近推出一款电信 主机租用 DELL特惠服务器A型,其699元...
ALIYUN::ROCKETMQ::Instance类型用于创建标准版实例。 语法 { "Type": "ALIYUN::...
9月11日,第六届 CSS互联网安全领袖峰会-产业专场正式在线上举行。本届CSS与腾讯...
作者 天穆 ? 一、基础 数据分布 一 扩展性 scale up scale out 分布式系统里常见...
眼见马上就要五一小长假了,估计不少人都在计划出游的计划,然而老李看了看今年...
本文转载自公众号读芯术(ID:AI_Discovery)。 数字化将DataOps这一概念引入人们...
公共参数是用于标识用户和接口签名的参数,如非必要,在每个接口单独的接口文档...