首页 > 解决方案 > 如何从 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();

标签: ibm-mobilefirstmobilefirst-adapters

解决方案


适配器混搭调用——一个适配器调用另一个部署的适配器,只能同步完成。不支持异步调用。你所观察到的是预期的。

正确的方法是使用以下代码:

HttpUriRequest req = adaptersAPI.createJavascriptAdapterRequest(AdapterName, ProcedureName, [parameters]);
org.apache.http.HttpResponse response = adaptersAPI.executeAdapterRequest(req);
JSONObject jsonObj = adaptersAPI.getResponseAsJSON(response);

详情在这里


推荐阅读