Developing Functions in Java (Using an IDEA Maven Project)
Perform the following procedure to develop a Java function:
- Create a function project.
- Configure the IDEA and create a Maven project, as shown in Figure 1.
- Add dependencies to the project.
Download the Java SDK to a local development environment, and decompress the SDK package, as shown in Figure 2.
- Copy Runtime-2.0.5.jar in the package to a local directory, for example, d:\\runtime. Then, run the following command in the CLI to install the runtime to the local Maven repository:
mvn install:install-file -Dfile=d:\runtime\RunTime-2.0.5.jar -DgroupId=RunTime -DartifactId=RunTime -Dversion=2.0.5 -Dpackaging=jar
- Configure the dependency in the pom.xml file.
<dependency> <groupId>Runtime</groupId> <artifactId>Runtime</artifactId> <version>2.0.5</version> </dependency>
- Configure other dependencies. The following uses the OBS dependency as an example.
<dependency> <groupId>com.huaweicloud</groupId> <artifactId>esdk-obs-java</artifactId> <version>3.21.4</version> </dependency>
- Add a plug-in to pom.xml to pack the code and dependencies together.
<build> <plugins> <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> </plugins> </build>
Replace mainClass with the actual class.
- Create a function.
- Create a package named com.huawei.demo, and then create a class named TriggerTests under the package, as shown in Figure 3.
- Define the function handler in 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"; } }
For details about the constraints for the APIG event source, see Base64 Decoding and Response Structure.
- Compile and pack the project file.
Run the following command to compile and pack the project file:
mvn package assembly:single
After compilation is complete, the demo-jar-with-dependencies.jar file is generated in the target directory.
- Log in to the FunctionGraph console, create a Java function, and upload the JAR file.
- Test the function.
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.