首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

为 OpenWhisk 编写可运行和部署的代码(3)

为 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) 方法。 就这么简单。
返回列表