ibm-mobilefirst - 如何从 MFP 8.0 中的 java 适配器异步调用 javascript 适配器?
问题描述
在这里,我尝试从 java 适配器异步调用多个 js 适配器,但无法获取响应对象。任何人都可以帮我解决这个问题。我使用 Java 的 Callable 和 Future 进行了尝试。
public JSONArray getResourceDataAsync() throws IOException, InterruptedException, ExecutionException
HttpUriRequest request = adaptersAPI.createJavascriptAdapterRequest(randNumberAdapter, "getEmpDetails");
addJsAdapterRequest(request);
request = adaptersAPI.createJavascriptAdapterRequest(randTextAdapter, "getJson");
addJsAdapterRequest(request);
new Thread(new Runnable() {
public void run() {
System.out.println("Inside Thread Run method");
HttpUriRequest req = adaptersAPI.createJavascriptAdapterRequest(randNumberAdapter, "getEmpDetails");
HttpResponse res=null;
try {
res = adaptersAPI.executeAdapterRequest(req);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
JSONObject object=null;
try {
object = adaptersAPI.getResponseAsJSON(res);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("The response from Thread Implementation is -->" + object);
}
}).start();
解决方案
适配器混搭调用——一个适配器调用另一个部署的适配器,只能同步完成。不支持异步调用。你所观察到的是预期的。
正确的方法是使用以下代码:
HttpUriRequest req = adaptersAPI.createJavascriptAdapterRequest(AdapterName, ProcedureName, [parameters]);
org.apache.http.HttpResponse response = adaptersAPI.executeAdapterRequest(req);
JSONObject jsonObj = adaptersAPI.getResponseAsJSON(response);
详情在这里。
推荐阅读
- css - CSS3 - 对齐
和
- java - 如何在自定义对话框中添加 Facebook 插页式广告?
- python - 管道内的列转换问题
- arduino-ide - 如何使用 NodeMCU 和 arduino ide 修复“SerialTimeoutException:写入超时”错误
- java - Java DatagramSocket 无法接收所有数据包
- go - 使用 GVisor (CloudRun) 的 Pubsub 拉取订阅问题
- python - Jupyter Notebook 魔术%alias 不起作用
- java - 每次调用新函数时,我都需要运行查询“USE database”
- python - 这个有什么用:df.columns=['count']?
- symfony - 是否可以通过作曲家更改 php bin/console?