Как асинхронно вызывать адаптеры javascript из адаптеров java в MFP 8.0? - PullRequest
0 голосов
/ 22 января 2019

Здесь я пытаюсь асинхронно вызывать несколько js-адаптеров из java-адаптера, но не удается получить объект ответа.Может кто-нибудь помочь мне в этом. Я пробовал это с помощью Callable и Future of Java.

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();

1 Ответ

0 голосов
/ 22 января 2019

Вызовы адаптера для гибридов - когда один адаптер вызывает другой развернутый адаптер, можно выполнять только синхронно.Асинхронный вызов не поддерживается.То, что вы наблюдали, ожидается.

Правильный способ - использовать следующий код:

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

Подробности здесь .

...