文档首页> 函数工作流 FunctionGraph> 开发指南> 如何开发函数> Java函数开发指南> Java函数开发指南(使用IDEA工具maven项目)
更新时间:2022-03-21 GMT+08:00
分享

Java函数开发指南(使用IDEA工具maven项目)

开发Java函数,以下给出Demo实例步骤:

  1. 创建函数工程

    1. 配置idea,创建maven工程,如图1所示。
      图1 创建工程
    2. 添加工程依赖。
      根据Java SDK下载提供的SDK地址,下载JavaRuntime SDK到本地开发环境解压,如图2所示。
      图2 下载SDK解压
    3. 将zip中的Runtime-1.1.3.jar拷贝到本地目录,例如d:\\runtime中,在命令行窗口执行如下命令安装到本地的maven仓库中。

      mvn install:install-file -Dfile=d:\RunTime-1.1.3.jar -DgroupId=RunTime -DartifactId=RunTime -Dversion=1.1.3 -Dpackaging=jar

    4. 在pom.xml中配置dependency,如下所示。
      <dependency>
      <groupId>Runtime</groupId>
      <artifactId>Runtime</artifactId>
      <version>1.1.3</version>
      </dependency>
    5. 配置其他的依赖包,以obs依赖包为例,如下所示。
      <dependency>
      <groupId>com.huaweicloud</groupId>
      <artifactId>esdk-obs-java</artifactId>
      <version>3.21.4</version>
      </dependency>
    6. 在pom.xml中添加插件用来将代码和依赖包打包到一起。
      <plugin>
      <artifactId> maven-assembly-plugin </artifactId>
      <configuration>
      <descriptorRefs>
      <descriptorRef>jar-with-dependencies</descriptorRef>
      </descriptorRefs>
      <archive>
      <manifest>
      <mainClass>com.huawei.demo.TriggerTests</mainClass>
      </manifest>
      </archive>
      <finalName>${project.name}</finalName>
      </configuration>
      <executions>
      <execution>
      <id>make-assembly</id>
      <phase>package</phase>
      <goals><goal>single</goal>
      </goals>
      </execution>
      </executions>
      </plugin>

    请把mainClass替换为真实的类。

  2. 创建本地函数

    1. 创建包com.huawei.demo,并在包下创建TriggerTests类,如图图3所示。
      图3 创建TriggerTests类
    2. 在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
      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);
              event.getLts().getData();
              System.out.println("raw data: " + event.getLts().getRawData());
              return "ok";
          }
      }
      

  3. 工程编译打包。

    在命令行窗口执行如下命令进行编译打包。

    mvn package assembly:single

    编译完成后在target目录会生成一个javaTest-jar-with-dependencies.jar。

  4. 创建java函数,上传jar包,如图4所示。

    图4 创建函数

  5. 测试函数

    1. 创建测试事件。

      在事件模板中选择“timer-event-template”,并保存,如图5所示。

      图5 配置测试事件
    2. 单击“测试”并执行。

      函数执行结果分为三部分,分别为函数返回、执行摘要、日志输出(由System.out.println()方法获取的日志方法输出),如图6所示。

      图6 执行结果

分享:

    相关文档

    相关产品

close