为 OpenWhisk 编写可运行和部署的代码(3)
- UID
- 1066743
|
为 OpenWhisk 编写可运行和部署的代码(3)
一个可运行和部署的 Java 示例现在继续看看 Java。下面是一个可运行和部署的简单示例:
以运行、更改和部署此代码。
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
public class SimpleSample {
private static String data = "{'name': 'Susan'}";
public static void main(String[] args) {
JsonObject jsonArgs = new JsonParser().parse(data).getAsJsonObject();
main(jsonArgs);
}
public static JsonObject main(JsonObject params) {
String greeting =
"{'greeting': 'Hello, " + params.get("name").getAsString() + "'}";
System.out.println(greeting);
return new JsonParser().parse(greeting).getAsJsonObject();
}
}
显示结果
测试代码与我们处理上面的 JavaScript 示例的方式一样,在谈论如何使代码可运行和部署之前,让我们先测试它。单击上面的 Run 按钮。根据针对 name 字段传入的值,您会看到类似这样的结果:
{'greeting': 'Hello, Susan'}
|
现在单击 Deploy 按钮。沙箱将代码作为新操作部署到 OpenWhisk,并显示它的 URL:
https://openwhisk.ng.bluemix.net/api/v1/web/devworkssandbox_pub/270003KAD5/0-1003.json
|
(同样地,您将看到的 URL 对您是唯一的。)
现在我们将调用刚部署到 OpenWhisk 的代码。 在下面的沙箱中,将 [URL] 替换为上面的 Deploy 按钮所生成的 URL。 按下 Run 按钮时,此代码会调用您在上面的 Java 沙箱中部署代码时创建的 OpenWhisk 操作。
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class OpenWhiskClient {
public static void main(String[] args) {
try {
URL url = new URL("[URL]");
HttpURLConnection hConn = (HttpURLConnection) url.openConnection();
hConn.setRequestProperty("Content-Type", "application/json");
hConn.setRequestMethod("POST");
hConn.setDoOutput(true);
String input = "{\"name\": \"Susan\"}";
OutputStream os = hConn.getOutputStream();
os.write(input.getBytes());
os.flush();
os.close();
if (hConn.getResponseCode() == HttpURLConnection.HTTP_OK) {
BufferedReader br =
new BufferedReader(new InputStreamReader((hConn.getInputStream())));
String output;
while ((output = br.readLine()) != null) {
System.out.println(output);
显示结果
此沙箱的输出应看起来很熟悉:
{
"greeting": "Hello, Susan"
}
|
编写可部署的 Java 代码OpenWhisk 要求 Java 类拥有以下基本结构:
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
// Other imports here
public class MyClass {
public static JsonObject main(JsonObject args) {
// Parse the args JsonObject so we can work with it
// Use the Google gson library to create a JsonObject with the
// appropriate output
JsonObject returnObject = ...;
return returnObject;
}
}
|
备注:请注意,developerWorks 沙箱不支持 Java package 语句。
main() 方法的签名与您过去使用的签名不同。因为 OpenWhisk 需要一个 JsonObject 作为输入和输出,所以您需要使用这个签名。OpenWhisk 环境安装了著名的 Google gson 库,所以这里使用它来处理 JSON 数据。在 JavaScript 中处理 JSON 更容易,因为 JSON 已内置于该语言中。对于 Java,您需要通过 gson 来处理输入和输出数据。
让 Java 代码可运行上面第一个沙箱中的示例既可部署,又可运行。让此代码可运行的代码行创建了一些默认数据,并通过创建一个包含传统签名的新方法来重载 main() 方法:
private static String data = "{'name': 'Susan'}";
public static void main(String[] args) {
JsonObject jsonArgs = new JsonParser().parse(data).getAsJsonObject();
main(jsonArgs);
}
|
main(String[]) 方法根据默认数据创建一个 JsonObject,并调用 main(JsonObject) 方法。 就这么简单。 |
|
|
|
|
|