文档首页/ 函数工作流 FunctionGraph/ 开发指南/ Java/ 开发事件函数/ Java函数开发指南(使用Eclipse工具)
更新时间:2025-06-28 GMT+08:00
分享

Java函数开发指南(使用Eclipse工具)

本章节介绍使用Eclipse工具开发Java函数。关于Java函数接口定义、Initializer入口介绍以及SDK接口说明请参考Java函数开发概述

步骤一:使用Eclipse创建Java工程

  1. 配置Eclipse
    图1所示,创建Java工程,工程命名为JavaTest。
    图1 创建工程
  2. 添加工程依赖

    图2所示,根据Java SDK下载提供的SDK地址,下载JavaRuntime SDK到本地开发环境解压。

    图2 下载SDK解压
  3. 配置依赖

    图3所示,在工程目录下创建lib目录,将zip中的Runtime-2.0.5.jar拷贝到该目录中,并把该jar添加为工程依赖。

    图3 配置依赖
  4. 配置函数资源
    图4所示,创建包com.huawei.demo,并在包下创建TriggerTests类。
    图4 创建com.huawei.demo
  5. 配置函数代码
    图5所示,在TriggerTests.java中定义函数执行入口,示例代码如下。
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    package com.huawei.demo;
    
    import java.io.UnsupportedEncodingException;
    import java.util.HashMap;
    import java.util.Map;
    
    import com.huawei.services.runtime.Context;
    import com.huawei.services.runtime.entity.apig.APIGTriggerEvent;
    import com.huawei.services.runtime.entity.apig.APIGTriggerResponse;
    import com.huawei.services.runtime.entity.dis.DISTriggerEvent;
    import com.huawei.services.runtime.entity.dms.DMSTriggerEvent;
    import com.huawei.services.runtime.entity.lts.LTSTriggerEvent;
    import com.huawei.services.runtime.entity.smn.SMNTriggerEvent;
    import com.huawei.services.runtime.entity.timer.TimerTriggerEvent;
    
    public class TriggerTests {
        public APIGTriggerResponse apigTest(APIGTriggerEvent event, Context context){
            System.out.println(event);
            Map<String, String> headers = new HashMap<String, String>();
            headers.put("Content-Type", "application/json");
            return new APIGTriggerResponse(200, headers, event.toString());
        }
    
        public String smnTest(SMNTriggerEvent event, Context context){
            System.out.println(event);
            return "ok";
        }
    
        public String dmsTest(DMSTriggerEvent event, Context context){
            System.out.println(event);
            return "ok";
        }
    
        public String timerTest(TimerTriggerEvent event, Context context){
            System.out.println(event);
            return "ok";
        }
    
        public String disTest(DISTriggerEvent event, Context context) throws UnsupportedEncodingException{
            System.out.println(event);
            System.out.println(event.getMessage().getRecords()[0].getRawData());
            return "ok";
        }
    
        public String ltsTest(LTSTriggerEvent event, Context context) throws UnsupportedEncodingException {
            System.out.println(event);
            System.out.println("raw data: " + event.getLts().getRawData());
            return "ok";
        }
    }
    
    图5 定义函数运行入口

    示例代码中添加了多个入口函数,分别使用了不同的触发器事件类型,可通过FunctionGraph控制台修改函数执行入口测试不同的入口函数。当函数的事件源是APIG时,相关约束条件请参考Base64解码和返回结构体的说明

    修改函数执行入口:

    在FunctionGraph控制台左侧导航栏选择“函数 > 函数列表”,单击需要设置的“函数名称”进入函数详情页,选择“设置 > 常规设置”,配置“函数执行入口”参数,如图6所示。
    图6 函数执行入口

步骤二:打包Java工程

  1. 图7所示,右击工程,选择“Export”。
    图7 打包
  2. 图8图9所示,选择导出为jar文件,设置导出目录。
    图8 选择
    图9 导出

步骤三:创建Java函数并测试

  1. 登录函数工作流控制台,左侧导航栏选择函数 > 函数列表,单击右上角“创建函数”进入创建函数页面,选择“创建空白函数”。
  2. 图10所示,配置函数基本信息,配置完成后单击右下角“创建函数”完成创建。
    图10 创建Java函数
  3. 进入函数详情页,在“代码”页签下,单击右侧上传代码 > JAR文件 ,如图11所示,添加步骤二:打包Java工程的JAR文件上传。
    图11 上传JAR文件
  4. 上传成功后,单击代码编辑区的“测试”,选择“创建新的测试事件”,在云事件模板列表中选择“API 网关服务”,单击“创建”
  5. 单击“测试”,查看函数执行结果。

    函数执行结果分为三部分,分别为函数返回(由callback返回)、执行摘要、日志输出(由console.log或getLogger()方法获取的日志方法输出),参考表1查看结果说明。

    表1 执行结果说明

    参数项

    执行成功

    执行失败

    函数返回

    返回函数中定义的返回信息。

    返回包含错误信息和堆栈异常报错信息的JSON文件。格式如下:

    {
      "errorMessage": "",
      "stackTrace": []
    }

    errorMessage:Runtime返回的错误信息

    stackTrace:Runtime返回的堆栈异常报错信息

    执行摘要

    显示请求ID、配置内存、执行时长、实际使用内存和收费时长。

    显示请求ID、配置内存、执行时长、实际使用内存和收费时长。

    日志

    打印函数日志,最多显示4KB的日志。

    打印报错信息,最多显示4KB的日志。

  6. 进入设置 > 触发器页签,单击“创建触发器”,参考创建APIG触发器创建一个APIG触发器,并访问调用URL,调用结果如图12所示。
    图12 访问调用URL

    如需测试示例代码中的其他事件源触发器,例如SMN事件源,可在函数的常规设置中,将函数执行入口修改为com.huawei.demo.TriggerTests.smnTest,并参考以上步骤,创建新的消息通知服务SMN测试事件和SMN触发器进行函数测试。

使用自定义参数类型示例

以下介绍在Java中使用自定义参数类型,可参考该示例自定义创建Java函数。

  1. 图13所示,在工程中新建Person类。
    图13 新建Person类
  2. 图14所示,新建PersonTest.java,并在其中写入函数执行入口。
    图14 新建PersonTest.java
  3. 参见步骤二:打包Java工程打包工程,并在函数详情界面上传新的JAR包,再修改函数执行入口为“com.huawei.demo.PersonTest.personTest”并保存。
  4. 上传成功后,在“代码”页签下配置新的测试事件,选择“空白模板”,自定义输入测试事件的内容,单击“创建”后执行测试。

相关文档