j9九游会登录/ 函数工作流 functiongraph/ 开发指南/ / / java函数开发指南(使用idea工具创建maven工程)
更新时间:2025-09-17 gmt 08:00

java函数开发指南(使用idea工具创建maven工程)-j9九游会登录

本章节介绍使用idea工具创建maven工程开发java函数。关于java函数接口定义、initializer入口介绍以及sdk接口说明请参考java函数开发概述

操作流程

您可以跟随本文以下步骤从头开始创建java工程和java函数,也可以直接下载java的maven样例工程包并从步骤三:创建java函数并测试开始操作。

步骤一:使用idea创建maven工程

  1. 创建函数工程
    图1所示配置idea,创建maven工程。
    图1 创建工程
  2. 添加工程依赖

    根据提供的sdk地址,下载javaruntime sdk到本地开发环境解压,如图2所示。

    图2 下载sdk解压
    1. 将zip中的“runtime-2.0.5.jar”拷贝到本地目录,例如d:\\runtime中,在命令行窗口执行如下命令安装到本地的maven仓库中。
      mvn install:install-file -dfile=d:\runtime\runtime-2.0.5.jar -dgroupid=runtime -dartifactid=runtime -dversion=2.0.5 -dpackaging=jar
    2. 在pom.xml中配置dependency,如下所示。
      
      runtime
      runtime
      2.0.5
      
    3. 配置其他的依赖包,以obs依赖包为例,如下所示。
      
      com.huaweicloud
      esdk-obs-java
      3.21.4
      
    4. 在pom.xml中添加插件用来将代码和依赖包打包到一起。请把mainclass替换为真实的类。
      
        
          
            maven-assembly-plugin
            
              
                jar-with-dependencies
              
              
                
                  com.huawei.demo.triggertests
                
              
              ${project.name}
            
            
              
                make-assembly
                package
                single
                
              
            
          
        
      
  3. 配置函数资源
    创建包com.huawei.demo,并在包下创建triggertests类,如图3所示。
    图3 创建triggertests类
  4. 配置函数代码
    在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
    51
    52
    53
    54
    55
    56
    packagecom.huawei.demo;
    importjava.io.unsupportedencodingexception;
    importjava.util.hashmap;
    importjava.util.map;
    importcom.huawei.services.runtime.context;
    importcom.huawei.services.runtime.entity.apig.apigtriggerevent;
    importcom.huawei.services.runtime.entity.apig.apigtriggerresponse;
    importcom.huawei.services.runtime.entity.dis.distriggerevent;
    importcom.huawei.services.runtime.entity.dms.dmstriggerevent;
    importcom.huawei.services.runtime.entity.lts.ltstriggerevent;
    importcom.huawei.services.runtime.entity.smn.smntriggerevent;
    importcom.huawei.services.runtime.entity.timer.timertriggerevent;
    importcom.huawei.services.runtime.entity.eventgrid.eventgridtriggerevent;
    publicclass triggertests{
    publicapigtriggerresponseapigtest(apigtriggereventevent,contextcontext){
    system.out.println(event);
    map<string,string>headers=newhashmap<string,string>();
    headers.put("content-type","application/json");
    returnnewapigtriggerresponse(200,headers,event.tostring());
    }
    publicstringsmntest(smntriggereventevent,contextcontext){
    system.out.println(event);
    return"ok";
    }
    publicstringdmstest(dmstriggereventevent,contextcontext){
    system.out.println(event);
    return"ok";
    }
    publicstringtimertest(timertriggereventevent,contextcontext){
    system.out.println(event);
    return"ok";
    }
    publicstringdistest(distriggereventevent,contextcontext)throwsunsupportedencodingexception{
    system.out.println(event);
    system.out.println(event.getmessage().getrecords()[0].getrawdata());
    return"ok";
    }
    publicstringltstest(ltstriggereventevent,contextcontext)throwsunsupportedencodingexception{
    system.out.println(event);
    event.getlts().getdata();
    system.out.println("raw data: "event.getlts().getrawdata());
    return"ok";
    }
    publicstringeventgridtest(eventgridtriggereventevent,contextcontext){
    system.out.println(event);return"ok";
    }
    }
    

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

    修改函数执行入口:

    在functiongraph控制台左侧导航栏选择“函数 > 函数列表”,单击需要设置的“函数名称”进入函数详情页,选择“设置 > 常规设置”,配置“函数执行入口”参数,如图4所示。
    图4 函数执行入口
  5. 工程编译打包

    在命令行窗口执行如下命令进行编译打包。编译完成后在target目录会生成一个“xx-jar-with-dependencies.jar”文件。

    mvn package assembly:single

步骤二:创建java函数并测试

  1. 登录,左侧导航栏选择函数 > 函数列表,单击右上角“创建函数”进入创建函数页面,选择“创建空白函数”。
  2. 图5所示,配置函数基本信息,配置完成后单击右下角“创建函数”完成创建。
    图5 创建java函数
  3. 进入函数详情页,在“代码”页签下,单击右侧上传代码 > jar文件 ,添加步骤一:使用idea创建maven工程的jar文件上传。
  4. 上传成功后,选择“设置 > 常规设置”,修改需要测试的函数执行入口参数,单击保存
  5. 回到“代码”页签,单击代码编辑区的“测试”,选择“创建新的测试事件”,在云事件模板列表中选择需要测试的事件模板,单击“创建”
  6. 单击“测试”,查看函数执行结果。

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

    表1 执行结果说明

    参数项

    执行成功

    执行失败

    函数返回

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

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

    {
      "errormessage": "",
      "stacktrace": []
    }

    errormessage:runtime返回的错误信息

    stacktrace:runtime返回的堆栈异常报错信息

    执行摘要

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

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

    日志

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

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

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

相关文档

网站地图